pushFilters (DataSourceReader)

Dipanggil dengan daftar filter yang dapat didorong ke sumber data.

Daftar filter harus ditafsirkan sebagai AND dari elemen.

Filter pushdown memungkinkan sumber data menangani beberapa filter secara langsung. Hal ini dapat meningkatkan performa dengan mengurangi jumlah data yang perlu diproses oleh Spark.

Metode ini dipanggil sekali selama perencanaan kueri. Secara default, ini mengembalikan semua filter, menunjukkan bahwa tidak ada filter yang dapat didorong ke bawah. Subkelas dapat mengambil alih metode ini untuk menerapkan pushdown filter.

Disarankan untuk menerapkan metode ini hanya untuk sumber data yang secara asli mendukung pemfilteran, seperti database dan API GraphQL.

Sintaksis

pushFilters(filters: List[Filter])

Parameter-parameternya

Parameter Tipe Deskripsi
filters daftar Filter Daftar filter untuk didorong ke sumber data.

Pengembalian Barang

Iterable[Filter]

Filter yang masih perlu dievaluasi oleh Spark setelah pemindaian sumber data. Ini termasuk filter yang tidak didukung dan filter yang didorong sebagian. Setiap filter yang dikembalikan harus menjadi salah satu filter input berdasarkan referensi.

Catatan

Metode ini diizinkan untuk mengubah self. Objek harus tetap dapat dipilih. Modifikasi untuk self terlihat oleh partitions() metode dan read() .

Examples

Contoh filter dan argumen yang dihasilkan diteruskan ke pushFilters:

Filters Argumen 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)]

Terapkan pushFilters hanya untuk mendukung EqualTo filter:

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