Le prédicat de refoulement fonctionne uniquement pour le partitionnement des colonnes. En d'autres termes, vos fichiers de données doivent être placés dans des dossiers structurés de manière hiérarchique. Par exemple, si les données se trouvent dans s3://bucket/dataset/
et partitionné par année, mois et jour, la structure devrait être la suivante :
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
Dans ce cas, le prédicat de refoulement fonctionnerait pour les colonnes year
, month
et day
uniquement :
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")
De plus, vous devez garder à l'esprit que les prédicats de refoulement fonctionnent uniquement avec les sources de données s3.
Voici un joli article de blog écrit par les développeurs AWS Glue sur le partitionnement des données.