{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"id": "7f0fc0f0",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The sql extension is already loaded. To reload it, use:\n",
" %reload_ext sql\n"
]
}
],
"source": [
"# enable sql\n",
"!pip install ipython-sql >> /dev/null\n",
"%load_ext sql"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "412a7b61",
"metadata": {},
"outputs": [],
"source": [
"# make a database, let's call it mollie\n",
"%sql sqlite:///mollie.sqlite3"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "dc56dd7c",
"metadata": {},
"outputs": [],
"source": [
"# import our mollie CSVs\n",
"!sqlite3 mollie.sqlite3 -separator \",\" '.import ./customers.csv mollie_customers'\n",
"!sqlite3 mollie.sqlite3 -separator \",\" '.import ./payments.csv mollie_payments'\n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "f59b6a11",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CREATE TABLE IF NOT EXISTS \"mollie_customers\"(\n",
" \"resource\" TEXT,\n",
" \"id\" TEXT,\n",
" \"mode\" TEXT,\n",
" \"name\" TEXT,\n",
" \"email\" TEXT,\n",
" \"locale\" TEXT,\n",
" \"metadata\" TEXT,\n",
" \"createdAt\" TEXT,\n",
" \"_links\" TEXT\n",
");\n",
"CREATE TABLE IF NOT EXISTS \"mollie_payments\"(\n",
" \"resource\" TEXT,\n",
" \"id\" TEXT,\n",
" \"createdAt\" TEXT,\n",
" \"paidAt\" TEXT,\n",
" \"description\" TEXT,\n",
" \"method\" TEXT,\n",
" \"status\" TEXT,\n",
" \"isCancelable\" TEXT,\n",
" \"sequenceType\" TEXT,\n",
" \"profileId\" TEXT,\n",
" \"customerId\" TEXT,\n",
" \"mandateId\" TEXT,\n",
" \"details.consumerName\" TEXT,\n",
" \"details.consumerAccount\" TEXT,\n",
" \"details.consumerBic\" TEXT,\n",
" \"amount.value\" TEXT,\n",
" \"amount.currency\" TEXT,\n",
" \"settlementAmount.value\" TEXT,\n",
" \"settlementAmount.currency\" TEXT,\n",
" \"amountRefunded.value\" TEXT,\n",
" \"amountRefunded.currency\" TEXT,\n",
" \"amountRemaining.value\" TEXT,\n",
" \"amountRemaining.currency\" TEXT,\n",
" \"customer.resource\" TEXT,\n",
" \"customer.mode\" TEXT,\n",
" \"customer.name\" TEXT,\n",
" \"customer.email\" TEXT,\n",
" \"customer.locale\" TEXT,\n",
" \"customer.metadata\" TEXT,\n",
" \"customer.createdAt\" TEXT,\n",
" \"customer._links\" TEXT\n",
");\n"
]
}
],
"source": [
"# let's check out their data structures\n",
"!sqlite3 mollie.sqlite3 '.schema mollie_customers'\n",
"!sqlite3 mollie.sqlite3 '.schema mollie_payments'\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "5c11902f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" sqlite://\n",
" * sqlite:///mollie.sqlite3\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"
\n",
" \n",
" resource | \n",
" id | \n",
" mode | \n",
" name | \n",
" email | \n",
" locale | \n",
" metadata | \n",
" createdAt | \n",
" _links | \n",
"
\n",
"
"
],
"text/plain": [
"[]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# preview the customers (sensitive data, so results censored from version control)\n",
"%sql select * from mollie_customers limit 10;"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "627724bf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" sqlite://\n",
" * sqlite:///mollie.sqlite3\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"\n",
" \n",
" resource | \n",
" id | \n",
" createdAt | \n",
" paidAt | \n",
" description | \n",
" method | \n",
" status | \n",
" isCancelable | \n",
" sequenceType | \n",
" profileId | \n",
" customerId | \n",
" mandateId | \n",
" details.consumerName | \n",
" details.consumerAccount | \n",
" details.consumerBic | \n",
" amount.value | \n",
" amount.currency | \n",
" settlementAmount.value | \n",
" settlementAmount.currency | \n",
" amountRefunded.value | \n",
" amountRefunded.currency | \n",
" amountRemaining.value | \n",
" amountRemaining.currency | \n",
" customer.resource | \n",
" customer.mode | \n",
" customer.name | \n",
" customer.email | \n",
" customer.locale | \n",
" customer.metadata | \n",
" customer.createdAt | \n",
" customer._links | \n",
"
\n",
"
"
],
"text/plain": [
"[]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# preview the payments (same)\n",
"%sql select * from mollie_payments limit 10;"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "de2099ba",
"metadata": {},
"outputs": [],
"source": [
"%%sql\n",
"-- zoek naar mensen die het laatst hun maandelijkse contributie betaald hebben in september\n",
"select *\n",
"from mollie_customers join mollie_payments\n",
"on mollie_customers.id = mollie_payments.customerId\n",
"where mollie_payments.status = 'paid'\n",
"and mollie_payments.paidAt > '2021-09-01'\n",
"and mollie_payments.paidAt < '2021-10-01'\n",
"and mollie_payments.description like 'Maandelijkse%'\n",
"limit 50\n",
";\n"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "7d0f0070",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" sqlite://\n",
" * sqlite:///mollie.sqlite3\n",
"Done.\n",
"Returning data to local variable leden_maandelijkse_contributie_laatst_betaald_in_september\n"
]
}
],
"source": [
"%%sql\n",
"leden_maandelijkse_contributie_laatst_betaald_in_september <<\n",
"-- zelfde query maar nou opslaan ipv preview\n",
"select *\n",
"from mollie_customers join mollie_payments\n",
"on mollie_customers.id = mollie_payments.customerId\n",
"where mollie_payments.status = 'paid'\n",
"and mollie_payments.paidAt > '2021-09-01'\n",
"and mollie_payments.paidAt < '2021-10-01'\n",
"and mollie_payments.description like 'Maandelijkse%'\n",
"-- limit 50\n",
";\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "61245263",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"CSV results"
],
"text/plain": [
"CSV results at /home/jovyan/work/Downloads/./laatst_september.csv"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"leden_maandelijkse_contributie_laatst_betaald_in_september.csv('./laatst_september.csv')\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}