ROW FILTER klauzule

platí pro:zaškrtněte políčko Ano Databricks SQL zaškrtněte políčko Ano Databricks Runtime 12.2 LTS a vyšší, zaškrtněte políčko Ano pouze Unity Catalog.

Určuje funkci, která se použije jako filtr při každém načtení řádků z relace.

Filtry řádků můžete přidat, když:

Důležité

Filtr řádků se použije, jakmile se řádek načte ze zdroje dat.

Další informace o tom, jak používat filtry řádků, najdete v tématu Filtry řádků a masky sloupců.

Vyžadovaná oprávnění

Pokud chcete přiřadit funkci, která přidá do tabulky filtr řádků, musíte mít EXECUTE oprávnění k funkci, USE SCHEMA schématu a USE CATALOG nadřazeného katalogu.

Pokud přidáváte filtr řádků při vytváření nové tabulky, musíte mít CREATE TABLE oprávnění ke schématu.

Pokud přidáváte filtr řádků do existující tabulky, musíte být vlastníkem tabulky nebo mít MANAGE oprávnění k tabulce.

Syntaxe

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

Parametry

  • func_name

    Skalární funkce definované uživatelem SQL

    Návratový typ funkce musí být BOOLEAN. Pokud funkce vrátí FALSE nebo NULL se řádek vyfiltruje.

  • column_name

    Určuje sloupce předmětné relace, které se mají předat do func_name. Každý column_name musí být přetypován na odpovídající parametr func_name. Musíte zadat tolik sloupců, kolik vyžaduje podpis funkce. Tato funkce podporuje předávání nulových vstupních sloupců, v takovém případě musí funkce SQL UDF přijmout nulové parametry a vrátit logický výsledek nezávislý na hodnotách vstupních řádků.

    Důležité

    Pokud datový typ sloupce přesně neodpovídá odpovídajícímu typu parametru funkce, hodnota sloupce se implicitně přetypuje. Když ANSI_MODE je zakázáno, hodnoty, které nelze přetypovat, jsou bezobslužně převedeny na , což může vést k NULLneočekávaným výsledkům filtru. Typy parametrů definované uživatelem musí odpovídat datovým typům sloupců, které jim byly předány. Podívejte se na chování neshody datových typů.

  • constant_literal

    Určuje konstantní parametr s typem, který odpovídá parametru funkce. Podporují se následující typy: STRING, číselná (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, INTERVAL, NULL.

Příklady

Další příklady najdete v filtrech řádků a maskách sloupců.

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