Pular para o conteúdo principal

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

filters

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

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

Implemente pushFilters para suportar apenas filtros EqualTo :

Python
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