pushFilters (DataSourceReader)
Appelé avec la liste des filtres qui peuvent être transférés vers la source de données.
La liste des filtres doit être interprétée comme le ET des éléments.
Le filtrage pushdown permet à la source de données de gérer un sous-ensemble de filtres. Cela peut améliorer les performances en réduisant la quantité de données qui doivent être traitées par Spark.
Cette méthode est appelée une fois pendant la planification de la query. Par default, il renvoie tous les filtres, indiquant qu'aucun filtre ne peut être transféré. Les sous-classes peuvent redéfinir cette méthode pour implémenter le report de filtre.
Il est recommandé de mettre en œuvre cette méthode uniquement pour les sources de données qui prennent en charge le filtrage en mode natif, telles que les bases de données et les APIs GraphQL.
Syntaxe
pushFilters(filters: List[Filter])
parameter
parameter | Type | Description |
|---|---|---|
| liste de filtres | La liste des filtres à répercuter sur la source de données. |
Renvoie
Iterable[Filter]
Filtres qui doivent encore être évalués par Spark après l'analyse de la source de données. Ceci inclut les filtres non pris en charge et les filtres partiellement poussés. Chaque filtre renvoyé doit être l'un des filtres d'entrée par référence.
Notes
Cette méthode est autorisée à modifier self. L'objet doit rester sérialisable. Les modifications apportées à self sont visibles par les méthodes partitions() et read().
Exemples
Exemple de filtres et les arguments résultants passés à pushFilters:
Filtres | Arguments de pushdown |
|---|---|
|
|
|
|
|
|
|
|
Implémentez pushFilters pour prendre en charge uniquement les filtres EqualTo :
def pushFilters(self, filters):
for filter in filters:
if isinstance(filter, EqualTo):
# Save supported filter for handling in partitions() and read()
self.filters.append(filter)
else:
# Unsupported filter
yield filter