""" gemma.py — produce gemma.parquet (Layer 1) Layer 1: fedele alla sorgente CSV, solo normalizzazione colonne in uppercase. La logica di business (flag '!' sui campi V_*) viene applicata in Layer 2 da Parquet_layer1ToParquet_layer2. """ import duckdb from config.settings import csv_path, out_parquet from utils.csv_reader import gemma_csv def run(con: duckdb.DuckDBPyConnection) -> int: src = csv_path('gemma').replace('\\', '/') out = out_parquet('gemma').replace('\\', '/') con.execute(f""" CREATE OR REPLACE TABLE _gemma AS SELECT * FROM {gemma_csv(src)} """) cols = [row[0] for row in con.execute("DESCRIBE _gemma").fetchall()] select_sql = ', '.join(f'"{c}" AS "{c.upper()}"' for c in cols) con.execute(f""" COPY ( SELECT {select_sql} FROM _gemma ) TO '{out}' (FORMAT PARQUET, COMPRESSION ZSTD) """) con.execute("DROP TABLE IF EXISTS _gemma") return con.execute(f"SELECT COUNT(*) FROM '{out}'").fetchone()[0]