Saltar a contenido

Tutorial Window Function con DuckDB (1Βͺ parte)

pip install duckdb
import duckdb

# Import jupysql Jupyter extension to create SQL cells
%reload_ext sql
# Initiating a DuckDB database
conn = duckdb.connect("BBDD/WindowFunction.duckdb")
%sql conn --alias duckdb
conn.sql("show tables")
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    name     β”‚
β”‚   varchar   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ order_items β”‚
β”‚ orders      β”‚
β”‚ products    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Table products

# create table products and load data into it
conn.sql("CREATE TABLE products AS\
            SELECT * FROM read_csv_auto('StarVision/products.csv', header=True, sep=',')");
# query the table
conn.table("products").show()
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ product_id β”‚                 product_name                  β”‚ model_year β”‚ list_price β”‚
β”‚   int64    β”‚                    varchar                    β”‚   int64    β”‚   double   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          1 β”‚ Trek 820 - 2016                               β”‚       2016 β”‚     379.99 β”‚
β”‚          2 β”‚ Ritchey Timberwolf Frameset - 2016            β”‚       2016 β”‚     749.99 β”‚
β”‚          3 β”‚ Surly Wednesday Frameset - 2016               β”‚       2016 β”‚     999.99 β”‚
β”‚          4 β”‚ Trek Fuel EX 8 29 - 2016                      β”‚       2016 β”‚    2899.99 β”‚
β”‚          5 β”‚ Heller Shagamaw Frame - 2016                  β”‚       2016 β”‚    1320.99 β”‚
β”‚          6 β”‚ Surly Ice Cream Truck Frameset - 2016         β”‚       2016 β”‚     469.99 β”‚
β”‚          7 β”‚ Trek Slash 8 27.5 - 2016                      β”‚       2016 β”‚    3999.99 β”‚
β”‚          8 β”‚ Trek Remedy 29 Carbon Frameset - 2016         β”‚       2016 β”‚    1799.99 β”‚
β”‚          9 β”‚ Trek Conduit+ - 2016                          β”‚       2016 β”‚    2999.99 β”‚
β”‚         10 β”‚ Surly Straggler - 2016                        β”‚       2016 β”‚     1549.0 β”‚
β”‚          Β· β”‚           Β·                                   β”‚         Β·  β”‚        Β·   β”‚
β”‚          Β· β”‚           Β·                                   β”‚         Β·  β”‚        Β·   β”‚
β”‚          Β· β”‚           Β·                                   β”‚         Β·  β”‚        Β·   β”‚
β”‚        312 β”‚ Electra Townie Commute 8D Ladies' - 2018      β”‚       2018 β”‚     699.99 β”‚
β”‚        313 β”‚ Electra Townie Original 1 Ladies' - 2018      β”‚       2018 β”‚     449.99 β”‚
β”‚        314 β”‚ Electra Townie Original 21D EQ Ladies' - 2018 β”‚       2018 β”‚     679.99 β”‚
β”‚        315 β”‚ Electra Townie Original 21D Ladies' - 2018    β”‚       2018 β”‚     559.99 β”‚
β”‚        316 β”‚ Trek Checkpoint ALR 4 Women's - 2019          β”‚       2019 β”‚    1699.99 β”‚
β”‚        317 β”‚ Trek Checkpoint ALR 5 - 2019                  β”‚       2019 β”‚    1999.99 β”‚
β”‚        318 β”‚ Trek Checkpoint ALR 5 Women's - 2019          β”‚       2019 β”‚    1999.99 β”‚
β”‚        319 β”‚ Trek Checkpoint SL 5 Women's - 2019           β”‚       2019 β”‚    2799.99 β”‚
β”‚        320 β”‚ Trek Checkpoint SL 6 - 2019                   β”‚       2019 β”‚    3799.99 β”‚
β”‚        321 β”‚ Trek Checkpoint ALR Frameset - 2019           β”‚       2019 β”‚    3199.99 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 321 rows (20 shown)                                                        4 columns β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Table orders

# create table orders and load data into it
conn.sql("CREATE TABLE orders AS\
            SELECT * FROM read_csv_auto('StarVision/orders.csv', header=True, sep=',')");
# query the table
conn.table("orders").show()
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ order_id β”‚     order_date      β”‚
β”‚  int64   β”‚      timestamp      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚        1 β”‚ 2016-01-01 00:00:00 β”‚
β”‚        2 β”‚ 2016-01-01 00:00:00 β”‚
β”‚        3 β”‚ 2016-01-02 00:00:00 β”‚
β”‚        4 β”‚ 2016-01-03 00:00:00 β”‚
β”‚        5 β”‚ 2016-01-03 00:00:00 β”‚
β”‚        6 β”‚ 2016-01-04 00:00:00 β”‚
β”‚        7 β”‚ 2016-01-04 00:00:00 β”‚
β”‚        8 β”‚ 2016-01-04 00:00:00 β”‚
β”‚        9 β”‚ 2016-01-05 00:00:00 β”‚
β”‚       10 β”‚ 2016-01-05 00:00:00 β”‚
β”‚        Β· β”‚          Β·          β”‚
β”‚        Β· β”‚          Β·          β”‚
β”‚        Β· β”‚          Β·          β”‚
β”‚     1606 β”‚ 2018-07-10 00:00:00 β”‚
β”‚     1607 β”‚ 2018-07-11 00:00:00 β”‚
β”‚     1608 β”‚ 2018-07-12 00:00:00 β”‚
β”‚     1609 β”‚ 2018-08-23 00:00:00 β”‚
β”‚     1610 β”‚ 2018-08-25 00:00:00 β”‚
β”‚     1611 β”‚ 2018-09-06 00:00:00 β”‚
β”‚     1612 β”‚ 2018-10-21 00:00:00 β”‚
β”‚     1613 β”‚ 2018-11-18 00:00:00 β”‚
β”‚     1614 β”‚ 2018-11-28 00:00:00 β”‚
β”‚     1615 β”‚ 2018-12-28 00:00:00 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      1615 rows (20 shown)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Table order_items

# create table order_items and load data into it
conn.sql("CREATE TABLE order_items AS\
            SELECT * FROM read_csv_auto('StarVision/order_items.csv', header=True, sep=',')");
# query the table
conn.table("order_items").show()
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ order_id β”‚ product_id β”‚ discount β”‚
β”‚  int64   β”‚   int64    β”‚  double  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚        1 β”‚         20 β”‚      0.2 β”‚
β”‚        1 β”‚          8 β”‚     0.07 β”‚
β”‚        1 β”‚         10 β”‚     0.05 β”‚
β”‚        1 β”‚         16 β”‚     0.05 β”‚
β”‚        1 β”‚          4 β”‚      0.2 β”‚
β”‚        2 β”‚         20 β”‚     0.07 β”‚
β”‚        2 β”‚         16 β”‚     0.05 β”‚
β”‚        3 β”‚          3 β”‚     0.05 β”‚
β”‚        3 β”‚         20 β”‚     0.05 β”‚
β”‚        4 β”‚          2 β”‚      0.1 β”‚
β”‚        Β· β”‚          Β· β”‚       Β·  β”‚
β”‚        Β· β”‚          Β· β”‚       Β·  β”‚
β”‚        Β· β”‚          Β· β”‚       Β·  β”‚
β”‚     1612 β”‚        293 β”‚     0.07 β”‚
β”‚     1612 β”‚         60 β”‚      0.1 β”‚
β”‚     1613 β”‚        153 β”‚     0.07 β”‚
β”‚     1613 β”‚        283 β”‚     0.05 β”‚
β”‚     1614 β”‚        124 β”‚     0.07 β”‚
β”‚     1614 β”‚        159 β”‚     0.07 β”‚
β”‚     1614 β”‚        213 β”‚      0.2 β”‚
β”‚     1615 β”‚        197 β”‚      0.2 β”‚
β”‚     1615 β”‚        214 β”‚     0.07 β”‚
β”‚     1615 β”‚        182 β”‚      0.2 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 4722 rows (20 shown)   3 columns β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
conn.sql("show tables")
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    name     β”‚
β”‚   varchar   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ order_items β”‚
β”‚ orders      β”‚
β”‚ products    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

# Explicitly close the connection
conn.close()