pushFilters (DataSourceReader)
Chamada com a lista de filtros que podem ser enviados para a fonte de dados.
A lista de filtros deve ser interpretada como o operador AND dos elementos.
O recurso Filter Pushdown permite que a fonte de dados processe um subconjunto de filtros. Isso pode melhorar o desempenho, reduzindo a quantidade de dados que precisam ser processados pelo Spark.
Este método é chamado uma vez durante o planejamento da consulta. Por default, ele retorna todos os filtros, indicando que nenhum filtro pode ser adicionado posteriormente. As subclasses podem sobrescrever esse método para implementar o pushdown de filtros.
Recomenda-se implementar este método apenas para fontes de dados que suportam filtragem nativamente, como bancos de dados e APIs GraphQL.
Sintaxe
pushFilters(filters: List[Filter])
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
| Lista de filtros | A lista de filtros a serem enviados para a fonte de dados. |
Devoluções
Iterable[Filter]
Filtros que ainda precisam ser avaliados pelo Spark após a varredura da fonte de dados. Isso inclui filtros não suportados e filtros parcialmente enviados. Cada filtro retornado deve ser, por referência, um dos filtros de entrada.
Notas
Este método tem permissão para modificar self. O objeto deve permanecer descritível (picklable). As modificações em self são visíveis nos métodos partitions() e read() .
Exemplos
Exemplos de filtros e os argumentos resultantes passados para pushFilters:
Filtros | Argumentos de pushdown |
|---|---|
|
|
|
|
|
|
|
|
Implemente pushFilters para suportar apenas filtros EqualTo :
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