{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
resourceidmodenameemaillocalemetadatacreatedAt_links
" ], "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
resourceidcreatedAtpaidAtdescriptionmethodstatusisCancelablesequenceTypeprofileIdcustomerIdmandateIddetails.consumerNamedetails.consumerAccountdetails.consumerBicamount.valueamount.currencysettlementAmount.valuesettlementAmount.currencyamountRefunded.valueamountRefunded.currencyamountRemaining.valueamountRemaining.currencycustomer.resourcecustomer.modecustomer.namecustomer.emailcustomer.localecustomer.metadatacustomer.createdAtcustomer._links
" ], "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 }