Partilhar via


ROW FILTER cláusula

Aplica-se a:Marque SimDatabricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior Marque Sim somente Unity Catalog

Especifica uma função que é aplicada como um filtro sempre que linhas são buscadas da relação.

Você pode adicionar filtros de linha quando:

Importante

O filtro de linha é aplicado assim que a linha é buscada na fonte de dados.

Para obter mais informações sobre como usar filtros de linha, consulte Filtros de linha e máscaras de coluna.

Sintaxe

ROW FILTER func_name ON ( [ column_name | constant_literal [, ...] ] ) [...]

Parâmetros

  • func_name

    Um SQL UDF escalar.

    O tipo de retorno da função deve ser BOOLEAN. Se a função retornar FALSE ou NULL a linha for filtrada.

  • nome_da_coluna

    Especifica colunas da relação de assunto a ser passada para func_name. Cada column_name um deve ser moldável para o parâmetro correspondente de func_name. Você deve fornecer quantas colunas forem exigidas pela assinatura da função. Observe que esse recurso oferece suporte à passagem de colunas de entrada zero, caso em que o SQL UDF deve aceitar parâmetros zero e retornar um resultado booleano independente de qualquer um dos valores das linhas de entrada.

    Importante

    Se o tipo de dado de uma coluna não corresponder exatamente ao tipo correspondente de parâmetro da função, o valor da coluna é implicitamente cast. Com ANSI_MODE desativado, os valores que não podem ser lançados são silenciosamente convertidos para NULL, o que pode produzir resultados de filtro inesperados. Os tipos de parâmetros UDF devem corresponder aos tipos de dados das colunas que lhes são passadas. Veja comportamento de desajustamento dos tipos de dados.

  • constant_literal

    Especifica um parâmetro constante com o tipo correspondendo a um parâmetro de função. Os seguintes tipos são suportados: STRING, numérico (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, , INTERVALNULL.

Exemplos

Você pode encontrar mais exemplos em Filtros de linha e máscaras de coluna.

-- Create a table with a row filter column
> CREATE FUNCTION filter_emps(dept STRING) RETURN is_account_group_member(dept);
> CREATE TABLE employees(emp_name STRING, dept STRING) WITH ROW FILTER filter_emps ON (dept);
> INSERT INTO employees VALUES ('Jones', 'Engineering'), ('Smith', 'Sales');

-- As a member of engineering
> SELECT * FROM employees;
  Jones Engineering

-- As a member of sales
> SELECT * FROM employees;
  Smith Sales