Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri kaynağına gönderilebilen filtrelerin listesiyle birlikte çağrılır.
Filtre listesi, öğelerin AND olarak yorumlanmalıdır.
Filtre gönderimi, veri kaynağının bir filtre alt kümesini işlemesine olanak tanır. Bu, Spark tarafından işlenmesi gereken veri miktarını azaltarak performansı artırabilir.
Bu yöntem sorgu planlaması sırasında bir kez çağrılır. Varsayılan olarak, hiçbir filtrenin aşağı gönderilebileceğini belirten tüm filtreleri döndürür. Alt sınıflar, filtre gönderimi uygulamak için bu yöntemi geçersiz kılabilir.
Bu yöntemin yalnızca veritabanları ve GraphQL API'leri gibi yerel olarak filtrelemeyi destekleyen veri kaynakları için uygulanması önerilir.
Sözdizimi
pushFilters(filters: List[Filter])
Parametreler
| Parametre | Türü | Açıklama |
|---|---|---|
filters |
Filtre listesi | Veri kaynağına inecek filtrelerin listesi. |
İadeler
Iterable[Filter]
Veri kaynağı taraması sonrasında Spark tarafından değerlendirilmeye devam edilmesi gereken filtreler. Bu, desteklenmeyen filtreleri ve kısmen gönderilen filtreleri içerir. Döndürülen her filtre, başvuruya göre giriş filtrelerinden biri olmalıdır.
Notlar
Bu yöntemin değiştirmesine selfizin verilir. Nesnenin picklable olarak kalması gerekir. üzerinde yapılan self değişiklikler ve partitions() yöntemleri tarafından read() görülebilir.
Örnekler
Örnek filtreler ve sonuçta elde edilen bağımsız değişkenlere pushFiltersgeçirilir:
| Filtreler | İtme bağımsız değişkenleri |
|---|---|
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)] |
Yalnızca filtreleri desteklemek pushFilters için uygulayınEqualTo:
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