Udostępnij za pośrednictwem


ROW FILTER klauzula

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowszy zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

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

Filtry wierszy można dodawać, gdy:

  • Utwórz tabelę przy użyciu polecenia CREATE TABLE.
  • Alter a table using ALTER TABLE (Zmienianie tabeli przy użyciu funkcji ALTER TABLE).

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 Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.

Składnia

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

Parametry

  • func_name

    Skalarna funkcja zdefiniowanej przez użytkownika SQL.

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

  • column_name

    Określa kolumny tabeli podmiotu, które mają być przekazywane do func_name. Każdy column_name element musi być rzutowalny do odpowiedniego parametru .func_name Należy podać tyle kolumn, ile jest wymaganych przez podpis funkcji. Należy pamiętać, że ta funkcja obsługuje przekazywanie zerowych kolumn wejściowych, w takim przypadku funkcja zdefiniowana przez użytkownika SQL musi akceptować parametry zerowe i zwracać wynik logiczny niezależnie od wartości wierszy wejściowych.

  • 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 temacie Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.

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

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

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