Code Snapshot

/home/claude/pkg/Table_Attribute_Extractor/example · 6 files · 30 tables · 76 table/attribute pairs · details in table_attribute_inventory.csv
table table / source path attribute attributegrey = no table or attribute on that line

glue_job.py

1import sys
2from awsglue.context import GlueContext
3glueContext = GlueContext(sc)
4dyf = glueContext.create_dynamic_frame.from_catalog(database="lake_raw", table_name="clickstream")
5df = dyf.toDF().select("session_id", "page_url")
6glueContext.write_dynamic_frame.from_options(frame=dyf, connection_type="s3",
7 connection_options={"path": "s3://acme-lake/warehouse/web.db/sessions/"}, format="parquet")

notebook_example.ipynb (cell 1)

1%pip install x
2df = spark.read.json("s3://lake/events/app_clicks/2024/06/01/")
3df.createOrReplaceTempView("clicks")

notebook_example.ipynb (cell 2)

1%%sql
2SELECT user_id, count(*) FROM clicks GROUP BY user_id

python_job.py

1import boto3, pandas as pd
2import snowflake.connector
3
4s3 = boto3.client("s3")
5obj = s3.get_object(Bucket="acme-landing", Key="vendors/acme_supply/invoices/2024/05/invoices_20240501.csv")
6df = pd.read_csv("s3://acme-landing/vendors/acme_supply/shipments/shipments.csv", usecols=["ship_id", "ship_date"])
7
8conn = snowflake.connector.connect(user="x", account="y")
9cur = conn.cursor()
10schema = "SALES"
11QUERY = f"""
12SELECT i.invoice_id, i.amount, v.vendor_name
13FROM RAW_DB.{schema}.INVOICES i
14LEFT JOIN RAW_DB.{schema}.VENDORS v ON i.vendor_id = v.vendor_id
15WHERE i.invoice_date >= %s
16"""
17cur.execute(QUERY, ("2024-01-01",))
18pd.read_sql("select order_id, sku from RAW_DB.SALES.ORDER_LINES where qty > 0", conn)
19df.to_parquet("s3://acme-curated/vendors/shipments_clean/")

snowflake_etl.sql

1USE WAREHOUSE etl_wh;
2-- daily customer revenue
3CREATE OR REPLACE TABLE ANALYTICS.MART.CUSTOMER_REVENUE AS
4WITH orders AS (
5 SELECT o.order_id, o.customer_id AS cust_id, o.order_total, o.order_ts::date AS order_date
6 FROM RAW_DB.SALES.ORDERS o
7 WHERE o.status <> 'CANCELLED'
8),
9cust AS (
10 SELECT c.customer_id, c.first_name || ' ' || c.last_name AS full_name, c.region
11 FROM RAW_DB.CRM.CUSTOMERS c
12)
13SELECT cu.full_name, cu.region, SUM(order_total) AS revenue, COUNT(*) AS n_orders
14FROM orders
15JOIN cust cu ON orders.cust_id = cu.customer_id
16GROUP BY 1, 2
17QUALIFY ROW_NUMBER() OVER (PARTITION BY region ORDER BY revenue DESC) <= 10;
18
19MERGE INTO ANALYTICS.MART.DIM_PRODUCT t
20USING (SELECT product_id, product_name, category FROM RAW_DB.CATALOG.PRODUCTS) s
21ON t.product_id = s.product_id
22WHEN MATCHED THEN UPDATE SET t.product_name = s.product_name, t.category = s.category
23WHEN NOT MATCHED THEN INSERT (product_id, product_name, category) VALUES (s.product_id, s.product_name, s.category);
24
25COPY INTO RAW_DB.SALES.ORDERS_STG
26FROM @RAW_DB.SALES.S3_STAGE/orders/year=2024/
27FILE_FORMAT = (TYPE = PARQUET);
28
29INSERT INTO ANALYTICS.MART.EVENTS (event_id, user_id, payload_type)
30SELECT e.id, e.user_id, e.payload:type::string
31FROM RAW_DB.APP.EVENTS e, LATERAL FLATTEN(input => e.payload:items) f
32WHERE f.value:sku IS NOT NULL;
33
34UPDATE ANALYTICS.MART.DIM_PRODUCT SET is_active = FALSE WHERE last_seen < DATEADD(day, -90, CURRENT_DATE);
35
36SELECT * FROM {{ ref('stg_payments') }} p JOIN {{ source('stripe','charges') }} ch ON p.charge_id = ch.id;
37
38CREATE OR REPLACE PROCEDURE ANALYTICS.MART.REFRESH_X()
39RETURNS STRING LANGUAGE SQL AS
40$$
41BEGIN
42 INSERT INTO ANALYTICS.MART.X SELECT a, b FROM RAW_DB.SALES.Y;
43 RETURN 'ok';
44END;
45$$;

spark_job.py

1from pyspark.sql import SparkSession, functions as F
2from pyspark.sql.functions import col
3
4spark = SparkSession.builder.appName("orders").getOrCreate()
5BUCKET = "acme-datalake-prod"
6env = "prod"
7orders_path = f"s3a://{BUCKET}/curated/sales/orders/"
8
9orders = spark.read.parquet(orders_path)
10customers = (spark.read.format("csv")
11 .option("header", "true")
12 .load("s3://acme-datalake-prod/raw/crm/customers/dt=2024-05-01/customers.csv"))
13returns = spark.table("finance_db.returns")
14
15joined = (orders.filter(col("status") == "SHIPPED")
16 .join(customers, on="customer_id", how="left")
17 .select("order_id", "customer_id", F.col("order_total"), customers["region"])
18 .withColumn("net_total", F.col("order_total") - F.coalesce(F.col("discount"), F.lit(0))))
19
20joined.createOrReplaceTempView("v_orders")
21spark.sql("""
22 SELECT region, SUM(net_total) AS revenue
23 FROM v_orders
24 GROUP BY region
25""").createOrReplaceTempView("v_rev")
26
27rev = spark.sql(f"SELECT * FROM {env}_analytics.region_rev r JOIN v_rev ON r.region = v_rev.region")
28returns.groupBy("return_reason").agg(F.sum("refund_amt").alias("refunds"))
29
30(joined.write.mode("overwrite")
31 .partitionBy("region")
32 .parquet(f"s3://{BUCKET}/gold/sales/order_net/"))
33rev.write.saveAsTable("analytics.region_revenue")
34
35sf_opts = {"sfDatabase": "RAW_DB", "sfSchema": "SALES"}
36inv = (spark.read.format("snowflake").options(**sf_opts)
37 .option("dbtable", "RAW_DB.SALES.INVENTORY").load())
38inv.selectExpr("sku", "qty_on_hand * unit_cost AS stock_value")
39keep_cols = ["sku", "warehouse_id", "qty_on_hand"]
40inv.select(*keep_cols).write.parquet(f"s3://{BUCKET}/gold/inventory/inventory_snapshot/")