ROW FILTER klauzula

Dotyczy:zaznaczone jako tak Databricks SQL zaznaczone jako tak Databricks Runtime 12.2 LTS i nowsze zaznaczone jako tak tylko Unity Catalog

Określa funkcję, która jest stosowana jako filtr za każdym razem, gdy wiersze są pobierane z relacji.

Filtry wierszy można dodawać, gdy:

Ważne

Filtr wierszy jest stosowany zaraz po pobraniu wiersza ze źródła danych.

Aby uzyskać więcej informacji na temat używania filtrów wierszy, zobacz Filtry wierszy i maski kolumn.

Wymagane uprawnienia

Aby przypisać funkcję, która dodaje filtr wierszy do tabeli, musisz mieć EXECUTE uprawnienia do funkcji, USE SCHEMA schematu i USE CATALOG wykazu nadrzędnego.

Jeśli dodajesz filtr wierszy podczas tworzenia nowej tabeli, musisz mieć CREATE TABLE uprawnienia do schematu.

Jeśli dodasz filtr wierszy do istniejącej tabeli, musisz być właścicielem tabeli lub mieć MANAGE uprawnienia do tej tabeli.

Składnia

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

Parametry

  • func_name

    Skalarna funkcja zdefiniowana przez użytkownika SQL.

    Zwracany typ funkcji musi mieć wartość BOOLEAN. Jeśli funkcja zwraca FALSE lub NULL, wiersz jest odfiltrowywany.

  • nazwa_kolumny

    Określa kolumny relacji podmiotu do przekazania do func_name. Każdy column_name musi być rzutowalny do odpowiedniego parametru func_name. Należy podać tyle kolumn, ile wymaga sygnatura funkcji. Ta funkcja obsługuje przekazywanie zerowych kolumn wejściowych, w takim przypadku funkcja UDF SQL musi akceptować parametry zerowe i zwracać wynik logiczny niezależnie od wartości wierszy wejściowych.

    Ważne

    Jeśli typ danych kolumny nie jest dokładnie zgodny z odpowiadającym mu typem parametru funkcji, wartość kolumny jest niejawnie rzutowa. Po ANSI_MODE wyłączeniu wartości, których nie można rzutować, są w trybie dyskretnym konwertowane na NULL, co może spowodować nieoczekiwane wyniki filtru. Typy parametrów UDF muszą być zgodne z typami danych kolumn przekazanych do nich. Zobacz Zachowanie niezgodności typów danych.

  • constant_literal

    Określa stały parametr z typem pasującym do parametru funkcji. Obsługiwane są następujące typy: STRING, numeryczne (INTEGER, FLOAT,DOUBLE, ... DECIMAL ), BOOLEAN, INTERVAL, NULL.

Przykłady

Więcej przykładów można znaleźć w filtrach wierszy i maskach kolumn.

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