from datetime import datetime, timedelta import random # Simulate 30 days of sales data regions = ['North', 'South', 'East', 'West'] products = ['Laptop', 'Tablet', 'Headphones', 'Charger', 'Case'] records = [] start = datetime(2025, 1, 1) for day in range(30): date = start + timedelta(days=day) for _ in range(200): records.append({ 'date': date.strftime('%Y-%m-%d'), 'region': random.choice(regions), 'product': random.choice(products), 'units_sold': random.randint(1, 20), 'revenue': round(random.uniform(50, 2000), 2) }) df_sales = pd.DataFrame(records) table_sales = pa.Table.from_pandas(df_sales) # Save as compressed Parquet pq.write_table(table_sales, 'sales_jan2025.parquet', compression='ZSTD') print(f"Saved {len(df_sales):,} records to Parquet") # Query: total revenue by region for the first two weeks dataset = ds.dataset('sales_jan2025.parquet', format='parquet') first_two_weeks = dataset.to_table( columns=['region', 'revenue', 'date'], filter=ds.field('date') <= '2025-01-14' ).to_pandas() summary = first_two_weeks.groupby('region')['revenue'].sum().sort_values(ascending=False) print(f"\nRevenue by region (Jan 1–14):") print(summary.round(2))