Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Volané se seznamem filtrů, které je možné odeslat do zdroje dat.
Seznam filtrů by měl být interpretován jako A prvků.
Prosazení filtru umožňuje zdroji dat zpracovat podmnožinu filtrů. To může zvýšit výkon snížením množství dat, která je potřeba zpracovat Sparkem.
Tato metoda se volá jednou během přípravy dotazu. Ve výchozím nastavení vrátí všechny filtry, které označují, že se nedají vysunout žádné filtry. Podtřídy mohou tuto metodu přepsat, aby implementovala odsazení filtru.
Doporučuje se implementovat tuto metodu pouze pro zdroje dat, které nativně podporují filtrování, jako jsou databáze a rozhraní GraphQL API.
Syntaxe
pushFilters(filters: List[Filter])
Parametry
| Parameter | Typ | Description |
|---|---|---|
filters |
seznam filtrů | Seznam filtrů, které se mají nasdílit do zdroje dat. |
Návraty
Iterable[Filter]
Filtry, které musí Spark po kontrole zdroje dat vyhodnotit. To zahrnuje nepodporované filtry a částečně vložené filtry. Každý vrácený filtr musí být jedním ze vstupních filtrů podle odkazu.
Poznámky
Tato metoda je povolena k úpravě self. Objekt musí zůstat picklable.
self Úpravy jsou viditelné pro tyto partitions() metody.read()
Příklady
Ukázkové filtry a výsledné argumenty předané:pushFilters
| Filtry | Argumenty odsdílení změn |
|---|---|
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)] |
Implementujte pushFilters pro podporu EqualTo pouze filtrů:
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