Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Chiamato con l'elenco di filtri che possono essere inseriti nell'origine dati.
L'elenco dei filtri deve essere interpretato come AND degli elementi.
Il pushdown del filtro consente all'origine dati di gestire un sottoinsieme di filtri. Ciò può migliorare le prestazioni riducendo la quantità di dati che devono essere elaborati da Spark.
Questo metodo viene chiamato una volta durante la pianificazione delle query. Per impostazione predefinita, restituisce tutti i filtri, a indicare che non è possibile eseguire il push dei filtri. Le sottoclassi possono eseguire l'override di questo metodo per implementare il pushdown del filtro.
È consigliabile implementare questo metodo solo per le origini dati che supportano il filtro in modo nativo, ad esempio database e API GraphQL.
Sintassi
pushFilters(filters: List[Filter])
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
filters |
elenco di filtri | Elenco di filtri di cui eseguire il push verso il basso nell'origine dati. |
Restituzioni
Iterable[Filter]
I filtri che devono comunque essere valutati da Spark dopo l'analisi dell'origine dati. Sono inclusi filtri non supportati e filtri parzialmente inseriti. Ogni filtro restituito deve essere uno dei filtri di input per riferimento.
Note
Questo metodo può modificare self. L'oggetto deve rimanere selezionabile. Le modifiche apportate a self sono visibili ai partitions() metodi e read() .
Examples
Filtri di esempio e argomenti risultanti passati a pushFilters:
| Filtri | Argomenti di pushdown |
|---|---|
a = 1 and b = 2 |
[EqualTo(("a",), 1), EqualTo(("b",), 2)] |
a = 1 or b = 2 |
[] |
a = 1 or (b = 2 and c = 3) |
[] |
a = 1 and (b = 2 or c = 3) |
[EqualTo(("a",), 1)] |
Implementare pushFilters per supportare EqualTo solo i filtri:
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