행 필터 및 열 마스크를 사용하여 중요한 테이블 데이터 필터링
이 문서에서는 행 필터, 열 마스크 및 매핑 테이블을 사용하여 테이블의 중요한 데이터를 필터링하는 방법에 대한 지침과 예제를 제공합니다. 이러한 기능에는 Unity 카탈로그가 필요합니다.
행 필터란?
행 필터를 사용하면 쿼리가 필터 조건을 충족하는 행만 반환하도록 테이블에 필터를 적용할 수 있습니다. 행 필터를 SQL UDF(사용자 정의 함수)로 구현합니다. Python 및 Scala UDF도 지원되지만 SQL UDF로 래핑된 경우에만 지원됩니다.
열 마스크란 무엇인가요?
열 마스크를 사용하면 테이블 열에 마스킹 함수를 적용할 수 있습니다. 마스킹 함수는 쿼리 런타임에 평가되며 대상 열의 각 참조를 마스킹 함수의 결과로 대체합니다. 대부분의 사용 사례에서 열 마스크는 원래 열 값을 반환할지 아니면 호출하는 사용자의 ID에 따라 수정할지를 결정합니다. 열 마스크는 SQL UDF로 작성된 식 또는 SQL UDF로 래핑된 Python 또는 Scala UDF로 작성된 식입니다.
각 테이블 열에는 하나의 마스킹 함수만 적용할 수 있습니다. 마스킹 함수는 열의 마스크되지 않은 값을 입력으로 사용하고 마스킹된 값을 결과로 반환합니다. 마스킹 함수의 반환 값은 마스킹되는 열과 동일한 형식이어야 합니다. 마스킹 함수는 추가 열을 입력 매개 변수로 사용하고 마스킹 논리에 사용할 수도 있습니다.
이러한 필터와 동적 뷰의 차이점은 무엇인가요?
동적 뷰, 행 필터 및 열 마스크를 사용하면 모두 테이블에 복잡한 논리를 적용하고 쿼리 런타임에 필터링 결정을 처리할 수 있습니다.
동적 보기 하나 이상의 원본 테이블의 추상화된 읽기 전용 보기입니다. 사용자는 원본 테이블에 직접 액세스하지 않고도 동적 보기에 액세스할 수 있습니다. 동적 뷰를 만들면 원본 테이블이나 같은 스키마에 있는 다른 테이블 및 뷰의 이름과 일치하지 않아야 하는 새 테이블 이름이 정의됩니다.
반면에 행 필터 또는 열 마스크를 대상 테이블에 연결하면 새 테이블 이름을 도입하지 않고 테이블 자체에 해당 논리가 직접 적용됩니다. 후속 쿼리는 원래 이름을 사용하여 대상 테이블을 직접 참조할 수 있습니다.
필터 및 마스크와 같은 변환 논리를 읽기 전용 테이블에 적용해야 하고 사용자가 다른 이름을 사용하여 동적 보기를 참조할 수 있는 경우 동적 보기를 사용합니다. 델타 공유를 사용하여 데이터를 공유할 때 데이터를 필터링하려면 동적 보기를 사용해야 합니다. 특정 데이터에 대해 식을 필터링하거나 계산하지만 원래 이름을 사용하여 테이블에 대한 액세스 권한을 사용자에게 제공하려는 경우 행 필터 및 열 마스크를 사용합니다.
시작하기 전에
테이블에 행 필터 및 열 마스크를 추가하려면 다음이 있어야 합니다.
- Unity 카탈로그에 사용할 수 있는 작업 영역입니다.
- Unity 카탈로그에 등록된 함수입니다. 이 함수는 SQL UDF이거나 Unity 카탈로그에 등록되어 SQL UDF에 래핑된 Python 또는 Scala UDF일 수 있습니다. 자세한 내용은 사용자 정의 함수(UDF)란?, 컬럼 마스크 절및 ROW FILTER 절을 참조하십시오.
또한 다음 요구 사항을 충족해야 합니다.
- 행 필터 또는 열 마스크를 테이블에 추가하는 함수를 할당하려면 함수에 대한
EXECUTE
권한, 스키마에USE SCHEMA
, 부모 카탈로그에USE CATALOG
있어야 합니다. -
새 테이블을 만들 때 필터 또는 마스크를 추가하는 경우 스키마에 대한
CREATE TABLE
권한이 있어야 합니다. - 기존 테이블에 필터 또는 마스크를 추가하는 경우 테이블 소유자여야 합니다.
행 필터 또는 열 마스크가 있는 테이블에 액세스하려면 컴퓨팅 리소스가 다음 요구 사항 중 하나를 충족해야 합니다.
SQL 웨어하우스.
Databricks Runtime 12.2 LTS 이상에서의 공유 액세스 모드.
Databricks Runtime 15.4 LTS 이상의 단일 사용자 액세스 모드입니다.
Databricks Runtime 15.3 이하에서 단일 사용자 액세스 모드로 구성된 컴퓨팅을 사용하여 행 필터 또는 열 마스크를 읽을 수 없습니다.
Databricks Runtime 15.4 LTS 이상에서 제공되는 데이터 필터링을 활용하려면 행 필터 및 열 마스크를 지원하는 데이터 필터링 기능이 서버리스 컴퓨팅에서 실행되기 때문에 작업 영역 서버리스 컴퓨팅사용하도록 설정되어 있는지 확인해야 합니다. 단일 사용자 액세스 모드로 구성된 컴퓨팅을 사용하여 행 필터 또는 열 마스크를 사용하는 테이블을 읽을 때 서버리스 컴퓨팅 리소스에 대한 요금이 부과될 수 있습니다. 단일 사용자 컴퓨팅에 대한 세분화된 액세스 제어를 참조 하세요.
행 필터 적용
행 필터를 만들려면 UDF(함수)를 작성하여 필터 정책을 정의한 다음 테이블에 적용합니다. 각 테이블에는 행 필터가 하나만 있을 수 있습니다. 행 필터는 각 입력 매개 변수가 해당 테이블의 한 열에 바인딩되는 0개 이상의 입력 매개 변수를 허용합니다.
카탈로그 탐색기 또는 SQL 명령을 사용하여 행 필터를 적용할 수 있습니다. 카탈로그 탐색기 지침에서는 이미 함수를 만들고 Unity 카탈로그에 등록했다고 가정합니다. SQL 지침에는 행 필터 함수를 만들고 테이블에 적용하는 예제가 포함됩니다.
카탈로그 탐색기
- Azure Databricks 작업 영역에서 카탈로그을 클릭합니다.
- 필터링할 테이블을 찾아보거나 검색합니다.
- 개요 탭에서 행 필터: 필터 추가를 클릭합니다.
- 행 필터 추가 대화 상자에서 필터 함수가 포함된 카탈로그 및 스키마를 선택한 다음, 함수를 선택합니다.
- 확장된 대화 상자에서 함수 정의를 보고 함수 문에 포함된 열과 일치하는 테이블 열을 선택합니다.
- 추가를 클릭합니다.
테이블에서 필터를 제거하려면 fx 행 필터 클릭하고 제거를 클릭합니다.
SQL
행 필터를 만든 다음 기존 테이블에 추가하려면 CREATE FUNCTION
사용하고 ALTER TABLE
사용하여 함수를 적용합니다.
CREATE TABLE
사용하여 테이블을 만들 때 함수를 적용할 수도 있습니다.
행 필터 만들기:
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {filter clause whose output must be a boolean};
열 이름을 사용하여 테이블에 행 필터를 적용합니다.
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<column_name>, ...);
추가 구문 예제:
함수 매개 변수와 일치하는 상수 리터럴을 사용하여 테이블에 행 필터를 적용합니다.
ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<constant_literal>, ...);
테이블에서 행 필터를 제거합니다.
ALTER TABLE <table_name> DROP ROW FILTER;
행 필터 수정:
Run a DROP FUNCTION statement to drop the existing function, or use CREATE OR REPLACE FUNCTION to replace it.
행 필터 삭제:
ALTER TABLE <table_name> DROP ROW FILTER; DROP FUNCTION <function_name>;
참고 항목
함수를 삭제하기 전에
ALTER TABLE ... DROP ROW FILTER
명령을 수행해야 합니다. 그렇지 않으면 테이블에 액세스할 수 없는 상태가 됩니다.테이블이 이러한 방식으로 접근할 수 없게 되면, 테이블을 변경하고
ALTER TABLE <table_name> DROP ROW FILTER;
을 사용하여 고립된 행 필터 참조를 삭제합니다.
ROW FILTER 조항도 참조하세요.
필터 예시
이 예제에서는 admin
지역의 US
그룹 구성원에 적용되는 SQL 사용자 정의 함수를 만듭니다.
이 샘플 함수가 sales
테이블에 적용되면 admin
그룹의 멤버가 테이블의 모든 레코드에 액세스할 수 있습니다. 관리자가 아닌 사용자가 함수를 호출하는 경우 RETURN_IF
조건이 실패하고 region='US'
식이 평가되어 테이블을 필터링하여 US
지역에 레코드만 표시합니다.
CREATE FUNCTION us_filter(region STRING)
RETURN IF(IS_ACCOUNT_GROUP_MEMBER('admin'), true, region='US');
행 필터로 테이블에 함수를 적용합니다.
sales
테이블의 후속 쿼리는 행의 하위 집합을 반환합니다.
CREATE TABLE sales (region STRING, id INT);
ALTER TABLE sales SET ROW FILTER us_filter ON (region);
행 필터를 사용하지 않도록 설정합니다.
sales
테이블의 이후 사용자 쿼리는 테이블의 모든 행을 반환합니다.
ALTER TABLE sales DROP ROW FILTER;
CREATE TABLE
명령문의 일부로 함수를 행 필터로 적용하여 테이블을 만듭니다.
sales
테이블의 향후 쿼리는 각각 행의 하위 집합을 반환합니다.
CREATE TABLE sales (region STRING, id INT)
WITH ROW FILTER us_filter ON (region);
열 마스크 적용
열 마스크를 적용하려면 함수(UDF)를 만들고 테이블 열에 적용합니다.
카탈로그 탐색기 또는 SQL 명령을 사용하여 열 마스크를 적용할 수 있습니다. 카탈로그 탐색기 지침에서는 이미 함수를 만들고 Unity 카탈로그에 등록했다고 가정합니다. SQL 지침에는 열 마스크 함수를 만들고 테이블 열에 적용하는 예제가 포함됩니다.
카탈로그 탐색기
- Azure Databricks 작업 영역에서 카탈로그를 엽니다.
- 테이블을 찾아보거나 검색합니다.
- 개요 탭에서 열 마스크를 적용할 행을 찾고 마스크 편집 아이콘을 클릭합니다.
- 열 마스크 추가 대화 상자에서 필터 함수가 포함된 카탈로그 및 스키마를 선택한 다음, 함수를 선택합니다.
- 확장된 대화 상자에서 함수 정의를 봅니다. 함수에 마스킹되는 열 외에 매개 변수가 포함된 경우 해당 추가 함수 매개 변수를 캐스팅할 테이블 열을 선택합니다.
- 추가를 클릭합니다.
테이블에서 열 마스크를 제거하려면 테이블 행에서 fx 열 마스크를 클릭한 다음 제거를 클릭합니다.
SQL
열 마스크를 만들고 기존 테이블 열에 추가하려면 CREATE FUNCTION
사용하고 ALTER TABLE
사용하여 마스킹 함수를 적용합니다.
CREATE TABLE
사용하여 테이블을 만들 때 함수를 적용할 수도 있습니다.
SET MASK
를 사용하여 마스킹 함수를 적용합니다.
MASK
절 내에서 Azure Databricks 기본 제공 런타임 함수를 사용하거나 다른 사용자 정의 함수를 호출할 수 있습니다. 일반적인 사용 사례에는 current_user( )
를 사용하여 함수를 실행하는 호출 사용자의 ID를 검사하거나 is_account_group_member( )
를 사용하여 해당 사용자가 구성원인 그룹을 가져오는 경우가 포함됩니다. 자세한 내용은 Column mask 절 및 기본 제공 함수를 참조하십시오.
열 마스크를 만듭니다.
CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...) RETURN {expression with the same type as the first parameter};
기존 테이블의 열에 열 마스크를 설정합니다.
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS <additional_columns>;
추가 구문 예제:
기존 테이블의 열에 열 마스크를 적용할 때 함수 매개 변수와 일치하는 상수 리터럴을 사용합니다.
ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS (<constant_name>, ...);
테이블 열에서 열 마스크를 제거합니다.
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
열 마스크를 수정하거나 기존 함수를
DROP
또는CREATE OR REPLACE TABLE
을 사용합니다.열 마스크를 삭제합니다.
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK; DROP FUNCTION <function_name>;
참고 항목
함수를 삭제하기 전에
ALTER TABLE
명령을 수행해야 합니다. 그렇지 않으면 테이블에 액세스할 수 없는 상태가 됩니다.이렇게 해서 테이블에 액세스할 수 없게 될 경우, 테이블을 수정하고
ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
사용하여 고립된 마스크 참조를 삭제합니다.
열 마스크 예제
이 예제에서는 HumanResourceDept
그룹의 구성원인 사용자만 해당 열의 값을 볼 수 있도록 ssn
열을 마스킹하는 사용자 정의 함수를 만듭니다.
CREATE FUNCTION ssn_mask(ssn STRING)
RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
테이블에 새 함수를 열 마스크로 적용합니다. 테이블을 만들 때 또는 나중에 열 마스크를 추가할 수 있습니다.
--Create the `users` table and apply the column mask in a single step:
CREATE TABLE users (
name STRING,
ssn STRING MASK ssn_mask);
--Create the `users` table and apply the column mask after:
CREATE TABLE users
(name STRING, ssn STRING);
ALTER TABLE users ALTER COLUMN ssn SET MASK ssn_mask;
쿼리 사용자가 HumanResourceDept
그룹의 멤버가 아닌 경우 해당 테이블의 쿼리는 이제 마스킹된 ssn
열 값을 반환합니다.
SELECT * FROM users;
James ***-**-****
쿼리가 ssn
열의 원래 값을 반환하도록 열 마스크를 사용하지 않도록 설정하려면 다음을 수행합니다.
ALTER TABLE users ALTER COLUMN ssn DROP MASK;
매핑 테이블을 사용하여 액세스 제어 목록 만들기
행 수준 보안을 달성하려면 매핑 테이블(또는 액세스 제어 목록)을 정의하는 것이 좋습니다. 포괄적인 매핑 테이블은 특정 사용자 또는 그룹에서 액세스할 수 있는 원래 테이블의 데이터 행을 인코딩합니다. 매핑 테이블은 직접 조인을 통해 팩트 테이블과 간단한 통합을 제공하기 때문에 유용합니다.
이 방법론은 사용자 지정 요구 사항을 포함하는 많은 사용 사례를 해결합니다. 예를 들면 다음과 같습니다.
- 특정 사용자 그룹에 대해 다른 규칙을 수용하는 동안 로그인한 사용자에 따라 제한을 적용합니다.
- 다양한 규칙 집합이 필요한 조직 구조와 같은 복잡한 계층 구조를 만듭니다.
- 외부 원본 시스템에서 복잡한 보안 모델을 복제합니다.
매핑 테이블을 채택하면 이러한 어려운 시나리오를 수행하고 강력한 행 수준 및 열 수준 보안 구현을 보장할 수 있습니다.
매핑 테이블의 예
매핑 테이블을 사용하여 현재 사용자가 목록에 있는지 확인합니다.
USE CATALOG main;
새 매핑 테이블을 만듭니다.
DROP TABLE IF EXISTS valid_users;
CREATE TABLE valid_users(username string);
INSERT INTO valid_users
VALUES
('fred@databricks.com'),
('barney@databricks.com');
새 필터 만들기:
참고 항목
호출자로 실행되는 사용자 컨텍스트(예 CURRENT_USER
및 IS_MEMBER
함수)를 확인하는 함수를 제외하고 모든 필터는 정의자의 권한으로 실행됩니다.
이 예제에서 함수는 현재 사용자가 valid_users
테이블에 있는지 확인합니다. 사용자가 없는 경우 함수는 true를 반환합니다.
DROP FUNCTION IF EXISTS row_filter;
CREATE FUNCTION row_filter()
RETURN EXISTS(
SELECT 1 FROM valid_users v
WHERE v.username = CURRENT_USER()
);
아래 예제에서는 테이블을 만드는 동안 행 필터를 적용합니다. 나중에 ALTER TABLE
문을 사용하여 필터를 추가할 수도 있습니다. 전체 테이블에 적용할 때는 ON ()
구문을 사용합니다. 특정 행의 경우 ON (row);
사용합니다.
DROP TABLE IF EXISTS data_table;
CREATE TABLE data_table
(x INT, y INT, z INT)
WITH ROW FILTER row_filter ON ();
INSERT INTO data_table VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9);
테이블에서 데이터를 선택합니다. 사용자가 valid_users
테이블에 있는 경우에만 데이터를 반환해야 합니다.
SELECT * FROM data_table;
열 값에 관계없이 테이블의 모든 행을 볼 수 있는 액세스 권한이 항상 있어야 하는 계정으로 구성된 매핑 테이블을 만듭니다.
CREATE TABLE valid_accounts(account string);
INSERT INTO valid_accounts
VALUES
('admin'),
('cstaff');
이제 행에 있는 모든 열의 값이 5보다 작거나 호출하는 사용자가 위의 매핑 테이블의 멤버인 경우 true
반환하는 SQL UDF를 만듭니다.
CREATE FUNCTION row_filter_small_values (x INT, y INT, z INT)
RETURN (x < 5 AND y < 5 AND z < 5)
OR EXISTS(
SELECT 1 FROM valid_accounts v
WHERE IS_ACCOUNT_GROUP_MEMBER(v.account));
마지막으로 SQL UDF를 테이블에 행 필터로 적용합니다.
ALTER TABLE data_table SET ROW FILTER row_filter_small_values ON (x, y, z);
지원 및 제한 사항
행 필터 및 열 마스크는 모든 Azure Databricks 기능 또는 모든 컴퓨팅 리소스에서 지원되지 않습니다. 이 섹션에는 지원되는 기능 및 제한 사항이 나와 있습니다.
지원되는 기능 및 형식
이 지원되는 기능 목록은 완전하지 않습니다. 일부 항목은 공개 미리 보기 중에 지원되지 않았기 때문에 나열됩니다.
SQL 워크로드용 Databricks SQL 및 DatabricksNotebooks가 지원됩니다.
MODIFY
권한이 있는 사용자의 DML 명령이 지원됩니다. 필터와 마스크는UPDATE
및DELETE
문에서 읽은 데이터에 적용되며 기록된 데이터(INSERT
포함)에는 적용되지 않습니다.지원되는 데이터 형식:
- 관리 테이블 및 외부 테이블에 대한 델타 및 파케.
- Unity 카탈로그에 Lakehouse Federation을 사용하여 등록된 외부 테이블의 여러 다른 데이터 형식입니다.
정책 매개 변수에는 상수 식(문자열, 숫자, 간격, 부울, null)이 포함될 수 있습니다.
SQL, Python 및 Scala UDF는 Unity 카탈로그에 등록된 경우 행 필터 또는 열 마스크 함수로 지원됩니다. Python 및 Scala UDF는 SQL UDF에 래핑되어야 합니다.
열 마스크 또는 행 필터를 참조하는 테이블에서 보기를 만들 수 있지만 뷰에 열 마스크 또는 행 필터를 추가할 수는 없습니다.
스키마가 대상 테이블에 적용되는 행 필터 및 열 마스크와 호환되는 경우 Delta Lake 변경 데이터 피드가 지원됩니다.
외장 테이블이 지원됩니다.
테이블 샘플링이 지원됩니다.
MERGE
문은 원본 테이블, 대상 테이블, 또는 둘 다 행 필터 및 열 마스크를 사용할 때 지원됩니다. 여기에는 간단한 하위 쿼리가 포함된 행 필터 함수가 있는 테이블이 포함됩니다. 제한 사항은 다음 섹션에 나와 있습니다.Databricks SQL 구체화된 뷰 및 Databricks SQL 스트리밍 테이블은 행 필터와 열 마스크(퍼블릭 프리뷰)를 지원합니다.
- Databricks SQL 구체화된 뷰 또는 스트리밍 테이블에 행 필터 및 열 마스크를 추가할 수 있습니다. 구체화된 뷰 또는 스트리밍 테이블이 정의될 때 마스크 추가는 선언적으로 수행해야 합니다. CREATE MATERIALIZED VIEW 또는 CREATE STREAMING TABLE참조하세요.
- 행 필터 및 열 마스크를 포함하는 테이블에서 Databricks SQL 구체화된 뷰 또는 스트리밍 테이블을 정의할 수 있습니다.
Delta Live Tables에 선언되고 게시된 구체화된 뷰 및 스트리밍 테이블은 행 필터 또는 열 마스크(공개 미리 보기)를 지원합니다.
- Delta Live Tables 물리적 뷰 또는 스트리밍 테이블에 행 필터 및 열 마스크를 추가할 수 있습니다.
- 행 필터 및 열 마스크를 포함하는 테이블에서 델타 라이브 테이블 구체화된 뷰 또는 스트리밍 테이블을 정의할 수 있습니다.
행 필터 및 열 마스크가 있는 테이블 게시을 참조하세요.
성능 권장 사항
행 필터 및 열 마스크는 사용자가 필터링 및 마스킹 작업을 하기 전에 기본 테이블의 값 내용을 볼 수 없도록 하여 데이터 표시 유형을 제어합니다. 일반적인 사용 사례에서 쿼리에 대한 응답으로 성능이 좋습니다. 쿼리 엔진이 쿼리 성능을 최적화하고 필터링/마스킹된 값에서 정보가 누출되지 않도록 보호하는 중에서 선택해야 하는 덜 일반적인 애플리케이션에서는 항상 쿼리 성능에 미치는 영향을 희생하여 안전한 결정을 내립니다. 이러한 성능 영향을 최소화하려면 다음 권장 사항을 적용합니다.
- 간단한 정책 함수 사용: 식 수가 적은 Policy 함수는 복잡한 식보다 성능이 더 좋은 경우가 많습니다. 매핑 테이블 및 식 하위 쿼리 대신 간단한 CASE 함수를 사용하십시오.
- 함수 인수 수를 줄입니다. Azure Databricks는 이러한 열이 쿼리에 사용되지 않더라도 정책 함수 인수로 인해 발생하는 원본 테이블에 대한 열 참조를 최적화할 수 없습니다. 이러한 테이블의 쿼리가 더 잘 수행되므로 인수 수가 적은 정책 함수를 사용합니다.
-
너무 많은 and conjuncts를 사용하여 행 필터를 추가하지 않도록 합니다. 각 테이블은 최대 하나의 행 필터 추가만 지원하므로 일반적인 방법은 원하는 여러 정책 함수를
AND
결합하는 것입니다. 그러나 각 연합의 경우 성능에 영향을 줄 수 있는 이 테이블의 다른 위치에 언급된 구성 요소(예: 매핑 테이블)가 포함될 가능성이 커집니다. 더 적은 수의 결합을 사용하여 성능을 향상시킵니다. -
테이블 정책 및 이러한 테이블의 쿼리에서 오류를 발생시키지 않는 결정적인 표현식을 사용하세요. 제공된 입력이 유효하지 않으면 ANSI 나누기와 같은 일부 표현식에서 오류가 발생할 수 있습니다. 이러한 경우 SQL 컴파일러는 필터링 및/또는 마스킹 작업 전에 값에 대한 정보를 표시하는 "0으로 나누기"와 같은 오류의 가능성을 방지하기 위해 쿼리 계획에서 이러한 식(예: 필터)이 있는 작업을 너무 멀리 푸시해서는 안 됩니다. 이 예제의
try_divide
와 같은 오류를 발생시키지 않는 결정적 표현을 사용하세요. - 테이블을 통해 테스트 쿼리를 실행하여 성능을 측정합니다. 행 필터 및/또는 열 마스크를 사용하여 테이블에 대해 예상하는 워크로드를 나타내는 실제 쿼리를 생성하고 성능을 측정합니다. 필터링 및 마스킹 논리의 성능과 표현력 간에 적절한 균형을 맞출 때까지 정책 함수를 약간 수정하고 해당 효과를 관찰합니다.
제한 사항
- 12.2 LTS 미만의 Databricks 런타임 버전은 행 필터 또는 열 마스크를 지원하지 않습니다. 이러한 런타임은 안전하게 실패합니다. 즉, 지원되지 않는 버전의 이러한 런타임에서 테이블에 액세스하려고 하면 데이터가 반환되지 않습니다.
- 델타 공유는 행 수준 보안 또는 열 마스크에서 작동하지 않습니다.
- 행 수준 보안 또는 열 마스크는 보기에 적용할 수 없습니다.
- 시간 이동은 행 수준 보안 또는 열 마스크에서 작동하지 않습니다.
- 정책이 있는 테이블의 파일에 대한 경로 기반 액세스는 지원되지 않습니다.
- 원래 정책에 대한 순환 종속성이 있는 행 필터 또는 열 마스크 정책은 지원되지 않습니다.
- 전체 복제 및 부분 복제는 지원되지 않습니다.
-
MERGE
문은 중첩, 집계, 윈도우, 제한 사항 또는 비결정적 함수를 포함하는 행 필터 또는 열 마스크 정책이 있는 테이블을 지원하지 않습니다. - Delta Lake API는 지원되지 않습니다.
단일 사용자 컴퓨팅 제한 사항
Databricks Runtime 15.3 이하의 단일 사용자 컴퓨팅 리소스에서 행 필터 또는 열 마스크가 있는 테이블에 액세스할 수 없습니다. 작업 영역이 서버리스 컴퓨팅에 사용하도록 설정된 경우 Databricks Runtime 15.4 LTS 이상에서 단일 사용자 액세스 모드를 사용할 수 있습니다. 자세한 내용은 단일 사용자 컴퓨팅에 대한 세분화된 액세스 제어를 참조 하세요.