Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Chamado com a lista de filtros que podem ser enviados para a fonte de dados.
A lista de filtros deve ser interpretada como o AND dos elementos.
A aplicação de filtros permite que a fonte de dados trate um subconjunto de filtros. Isso pode melhorar o desempenho, reduzindo a quantidade de dados que precisam ser processados pelo Spark.
Esse método é chamado uma vez durante o planejamento da consulta. Por defeito, devolve todos os filtros, indicando que nenhum filtro pode ser pressionado para baixo. Subclasses podem sobrepor este método para implementar o filtro pushdown.
Recomenda-se implementar este método apenas para fontes de dados que suportam filtragem nativamente, como bases de dados e APIs GraphQL.
Sintaxe
pushFilters(filters: List[Filter])
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
filters |
lista de Filter | A lista de filtros a pressionar para a fonte de dados. |
Devoluções
Iterable[Filter]
Filtros que ainda precisam de ser avaliados pelo Spark após a varredura da fonte de dados. Isto inclui filtros não suportados e filtros parcialmente empurrados. Cada filtro devolvido deve ser um dos filtros de entrada por referência.
Notes
Este método pode modificar self. O objeto deve permanecer em pickling. Modificações para self são visíveis para os partitions() e read() métodos.
Exemplos
Exemplos de filtros e os argumentos resultantes passados para pushFilters:
| Filtros | Argumentos de pressão |
|---|---|
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)] |
Implementar pushFilters para suportar EqualTo apenas filtros:
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