Files
fn_registry/python/functions/pipelines/render_automatic_eda.md
T
egutierrez f3d427d9e4 feat(eda): wiring AutomaticEDA — build_eda_render_ctx + pipeline render_automatic_eda + profile_table(emit_automatic)
Conecta el motor AutomaticEDA con los datos crudos para que los 4 capítulos
dependientes de ctx (modelos, timeseries, geospatial, agregacion) salgan
POBLADOS en vez de degradar a una nota.

- build_eda_render_ctx (datascience, impure, dict-no-throw): dado db_path+table
  y el TableProfile agregado, construye el ctx con los datos crudos que el
  perfil no incluye: raw_numeric {col:[float|None]} alineado por fila (modelos /
  geospatial), timeseries_raw {time_col,t,series} vía extract_timeseries_raw,
  geo_points {lats,lons} desde el par lat/lon detectado, y db_path/table para el
  groupby/pivot push-down de agregacion. Muestrea con LIMIT (no trae la tabla
  entera a RAM). Compone detect_time_column / extract_timeseries_raw /
  detect_latlon_columns / duckdb_query_readonly (imports lazy para evitar ciclo).
- render_automatic_eda (pipeline): one-shot perfil -> ctx -> PDF + PPTX con los
  11 capítulos poblados; devuelve rutas + manifest de versiones por capítulo.
- profile_table: flag aditivo emit_automatic=True emite el AutomaticEDA PDF+PPTX
  además del flujo legacy (emit_pdf/render_eda_pdf intacto). Nuevas claves de
  retorno aeda_pdf_path / aeda_pptx_path / aeda_manifest_path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 16:08:41 +02:00

5.4 KiB

name, kind, lang, domain, purity, version, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain purity version signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
render_automatic_eda pipeline py pipelines impure 1.0.0 def render_automatic_eda(db_path: str, table: str, backend: str = "duckdb", sample: int = 5000, run_models: bool = True, run_series: bool = True, run_llm: bool = False, out_dir: str = "reports", basename: str = None, ctx_extra: dict = None) -> dict Informe AutomaticEDA COMPLETO one-shot de una tabla DuckDB/PostgreSQL: perfila con profile_table, construye el ctx con los datos crudos (build_eda_render_ctx: raw_numeric para modelos/geo, timeseries_raw para series, geo_points para el mapa, db_path/table para la agregacion push-down) y emite PDF (A5 movil) Y PPTX (16:9) del mismo documento por capitulos, con los 11 capitulos POBLADOS de verdad (clusters pintados sobre el PCA, evolucion temporal, mapa geografico y tablas de agregacion), no degradados. Devuelve las rutas de PDF/PPTX y el manifiesto de versiones por capitulo.
eda
duckdb
postgres
profiling
pipeline
dataops
report
pdf
pptx
profile_table_py_pipelines
build_eda_render_ctx_py_datascience
render_automatic_eda_pdf_py_datascience
render_automatic_eda_pptx_py_datascience
false error_go_core
true
render end-to-end sobre DuckDB sintetico con categoricas + fecha + lat/lon emite PDF y PPTX con paginas/slides
python/functions/pipelines/render_automatic_eda_test.py python/functions/pipelines/render_automatic_eda.py
name desc
db_path Ruta al archivo DuckDB (read-only, debe existir) o DSN PostgreSQL si backend='postgres'.
name desc
table Nombre de la tabla a perfilar e informar.
name desc
backend 'duckdb' (default) o 'postgres'. Selecciona el motor de perfilado y muestreo.
name desc
sample Maximo de filas/valores muestreados por columna para el perfil y para los datos crudos del ctx (LIMIT). Default 5000.
name desc
run_models Si True (default) corre los modelos baratos (PCA/KMeans/IsolationForest/normalidad); necesario para que el capitulo modelos pinte los clusters sobre el plano PCA.
name desc
run_series Si True (default) calcula el analisis de serie temporal por columna numerica; necesario para el analisis del capitulo timeseries (la grafica de evolucion sale de los datos crudos del ctx aunque sea False).
name desc
run_llm Si True (default False) hace la interpretacion LLM del perfil y ACTIVA la narrativa LLM de los capitulos modelos/geospatial/agregacion (titulos de segmento, descripcion de zona, seleccion de agregaciones). Con False usan su derivacion cuantitativa sin red.
name desc
out_dir Directorio de salida (se crea si no existe). Default 'reports'.
name desc
basename Nombre base de los archivos sin extension. Default 'aeda_<table>_<timestamp>'.
name desc
ctx_extra Dict opcional con claves de presentacion/contexto extra que se mezclan en el ctx (dataset_name, description, source_origin, ...); no pisan las claves de datos calculadas por build_eda_render_ctx.
dict {status:'ok', pdf_path:str, pptx_path:str, manifest_path:str|None, n_pages:int, n_slides:int, pdf_note:str, pptx_note:str, profile:<TableProfile>} o {status:'error', error:str} (dict-no-throw).

Ejemplo

from pipelines.render_automatic_eda import render_automatic_eda

# Tabla DuckDB con categoricas + fecha + numericas: informe completo a reports/.
r = render_automatic_eda("/tmp/ventas.duckdb", "ventas",
                         run_models=True, run_series=True, out_dir="reports")
print(r["status"], r["pdf_path"], r["pptx_path"], r["n_pages"], r["n_slides"])
# ok reports/aeda_ventas_20260630-120500.pdf reports/aeda_ventas_20260630-120500.pptx 14 16

# Con narrativa LLM (titulos de segmento, descripcion geografica, etc.):
r = render_automatic_eda("/tmp/ventas.duckdb", "ventas", run_llm=True)

Cuando usarla

Cuando quieras el informe AutomaticEDA COMPLETO (PDF + PPTX) de una tabla en una sola llamada, con los capitulos de modelos, series, geoespacial y agregacion ya poblados (no degradados). Es el reemplazo de "perfila + monta el ctx a mano + llama a los dos renderers": este pipeline orquesta profile_table -> build_eda_render_ctx -> render_automatic_eda_pdf/_pptx. Usalo como entregable para compartir un EDA, o como el motor detras de profile_table( emit_automatic=True) y del skill /eda.

Gotchas

  • Impura: ESCRIBE el PDF, el PPTX y automatic_eda_manifest.json en out_dir.
  • db_path debe existir: DuckDB read-only no crea la base.
  • run_models=True y run_series=True por defecto encarecen el perfil (PCA/ KMeans/IsolationForest + ADF/KPSS/STL por columna). Para un informe mas barato ponlos a False: los capitulos modelos/timeseries se omiten o se reducen, pero el resto del informe sale igual.
  • run_llm=True hace llamadas de red (interpretacion del perfil + narrativa por capitulo). Sin red, dejalo en False: los capitulos siguen completos con su derivacion cuantitativa (titulos de segmento derivados, nota geografica derivada, seleccion de agregaciones cuantitativa).
  • El PPTX requiere python-pptx; si no esta instalado, pptx_path sera None y pptx_note lo explica (el PDF se emite igual).
  • Los datos crudos del ctx se muestrean con sample (LIMIT), no se trae la tabla entera a RAM; con tablas enormes sube sample si quieres mas representatividad (coste: mas memoria).