Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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