pushFilters (DataSourceReader)

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