El predicado pushdown funciona solo para columnas de partición. En otras palabras, sus archivos de datos deben colocarse en carpetas estructuradas jerárquicamente. Por ejemplo, si los datos se encuentran en s3://bucket/dataset/
y dividido por año, mes y día, la estructura debería ser la siguiente:
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
En tal caso, el predicado pushdown funcionaría para las columnas year
, month
y day
solo:
datasource = glueContext.create_dynamic_frame_from_catalog(
database = source_catalog_db,
table_name = source_catalog_tbl,
push_down_predicate = "year = 2017 and month > 6 and day between 3 and 10",
transformation_ctx = "datasource")
Además, debe tener en cuenta que los predicados pushdown solo funcionan con fuentes de datos s3.
Aquí hay una buena publicación de blog escrito por los desarrolladores de AWS Glue sobre la partición de datos.