데이터 메트릭 함수 작업¶
이 항목의 각 예제를 시도하기 전에 사용 중인 역할이 필요한 액세스 제어 요구 사항 을 충족하는지 확인하십시오.
지금 측정: 시스템 DMF 예¶
다음 구문을 사용하여 DMF를 호출합니다.
SELECT <data_metric_function>(<query>)
여기서
data_metric_function
시스템 DMF 또는 사용자 정의 DMF를 지정합니다.
query
테이블 또는 뷰에 SQL 쿼리를 지정합니다.
쿼리의 열은 DMF 서명의 열 인자와 일치해야 합니다.
참고
이러한 시스템 DMFs는 인자를 받지 않기 때문에 이 구문을 따르지 않습니다.
즉시 데이터 품질 측정을 시작하려면 시스템 DMF를 호출합니다.
예를 들어, NULL_COUNT(시스템 데이터 메트릭 함수) 시스템 DMF를 호출하여 SSN 열의 NULL 값 수(US Social Security 번호)를 확인합니다.
USE ROLE data_engineer;
SELECT SNOWFLAKE.CORE.NULL_COUNT(
SELECT ssn
FROM hr.tables.empl_info
);
이벤트 테이블을 쿼리하여 결과를 볼 수 있습니다. 자세한 내용은 DMF 결과 보기 섹션을 참조하십시오.
고유 DMF 만들기¶
CREATE DATA METRIC FUNCTION 명령을 사용하여 고유 DMFs를 만듭니다.
테이블의 처음 세 열을 평가할 때 COUNT 함수를 호출하여 NULL 값을 포함하지 않는 행의 총 개수를 반환하는 DMF를 생성합니다.
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
arg_t TABLE(
arg_c1 NUMBER,
arg_c2 NUMBER,
arg_c3 NUMBER
)
)
RETURNS NUMBER
AS
$$
SELECT
COUNT(*)
FROM arg_t
WHERE
arg_c1>0
AND arg_c2>0
AND arg_c3>0
$$;
DMF를 할당하는 테이블 이외의 테이블을 참조하는 예제는 예제: 외래 키 참조 섹션을 참조하십시오.
참고
DMF 정의를 보려면 DESCRIBE FUNCTION (DMF) 명령을 사용합니다.
DMF의 속성 보기¶
속성을 보려면 DMF를 설명합니다.
DESC FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);
+-----------+---------------------------------------------------------------------+
| property | value |
+-----------+---------------------------------------------------------------------+
| signature | (ARG_T TABLE(ARG_C1 NUMBER, ARG_C2 NUMBER, ARG_C3 NUMBER)) |
| returns | NUMBER(38,0) |
| language | SQL |
| body | SELECT COUNT(*) FROM arg_t WHERE arg_c1>0 AND arg_c2>0 AND arg_c3>0 |
+-----------+---------------------------------------------------------------------+
DMF 보안 설정¶
DMF를 보안 DMF로 만듭니다.
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER,
NUMBER,
NUMBER
))
SET SECURE;
DMFs 나열¶
SHOW DATA METRIC FUNCTIONS 또는 SHOW FUNCTIONS 명령을 사용하여 계정, 데이터베이스 또는 스키마에 DMFs를 목록으로 표시합니다.
SHOW DATA METRIC FUNCTIONS IN ACCOUNT;
또는 Information Schema FUNCTIONS 뷰 또는 Account Usage FUNCTIONS 뷰 를 쿼리하여 각각 지정된 데이터베이스 또는 계정에 있는 DMFs를 목록으로 만들 수 있습니다.
is_data_metric
열은 함수가 DMF인지 여부를 지정합니다.
DMF에 태그 설정¶
ALTER FUNCTION 명령을 사용하여 DMF에 태그를 설정합니다.
ALTER FUNCTION governance.dmfs.count_positive_numbers(
TABLE(NUMBER, NUMBER, NUMBER))
SET TAG governance.tags.quality = 'counts';
실행할 DMFs 예약¶
테이블에서 데이터 품질 측정을 자동화하기 위해 DMFs를 실행하도록 예약할 수 있습니다.
Snowflake는 테이블에 대한 OWNERSHIP 권한이 있는 역할인 테이블 소유자 역할을 사용하여 예약된 DMF를 호출합니다. 테이블 소유자 역할에는 다음과 같은 권한이 있어야 합니다.
사용자 정의 DMF에 대한 USAGE 권한과 사용자 정의 DMF를 저장하는 데이터베이스 및 스키마에 대한 USAGE 권한.
DMF가 시스템 DMF인 경우 DATA_METRIC_USER 데이터베이스 역할.
계정에 대한 EXECUTE DATA METRIC FUNCTION 권한.
테이블, 뷰 또는 구체화된 뷰의 DATA_METRIC_SCHEDULE 오브젝트 매개 변수를 사용하면 DMFs의 실행 시점을 예약할 수 있습니다. 테이블이나 뷰의 모든 데이터 메트릭 함수는 동일한 일정을 따릅니다.
DMF의 실행 일정을 예약하는 방법은 다음의 세 가지입니다.
지정된 시간(분) 후에 실행되도록 DMF를 설정합니다.
특정 빈도로 실행되도록 DMF를 예약하려면 cron 식을 사용합니다.
트리거 이벤트를 사용하여 테이블에 새 행을 삽입하는 등 테이블에 DML 변경 이 있을 때 DMF가 실행되도록 예약합니다. 하지만:
테이블을 재클러스터링 해도 DMF가 실행되지는 않습니다.
트리거 방식은 특정 종류의 테이블에만 사용할 수 있습니다. 자세한 내용은 ALTER TABLE … SET DATA_METRIC_SCHEDULE 섹션을 참조하십시오.
예:
데이터 메트릭 함수 일정을 5분마다 실행되도록 설정합니다.
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = '5 MINUTE';
데이터 메트릭 함수 일정을 매일 AM 8:00에 실행되도록 설정합니다.
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
데이터 메트릭 함수 일정을 평일 AM 8:00에만 실행되도록 설정합니다.
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
데이터 메트릭 함수 일정을 매일 UTC 0600, 1200, 1800에 3회 실행되도록 설정합니다.
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
새 행 삽입과 같은 일반 DML 작업으로 테이블이 수정될 때 데이터 메트릭 함수가 실행되도록 설정합니다.
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
SHOW PARAMETERS 명령을 사용하여 지원되는 테이블 오브젝트에 대한 DMF 일정을 볼 수 있습니다.
SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+ | key | value | default | level | description | type | +----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+ | DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC | | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING | +----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
뷰 및 구체화된 뷰 오브젝트의 경우 TABLE
을 오브젝트 도메인으로 지정하고 다음과 같이 일정을 확인할 수 있습니다.
SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
참고
테이블에서 DMF를 수정하면 테이블에 할당된 이전 DMFs에 일정 변경 사항이 적용되기까지 10분의 지연 시간이 있습니다. 단, 테이블에 새로 DMF를 할당하는 경우에는 10분 지연이 적용되지 않습니다. 예상되는 DMF 비용 에 맞춰 DMF 스케줄링 및 DMF 설정 취소 작업을 신중하게 계획해야 합니다.
또한 DATA_QUALITY_MONITORING_RESULTS 뷰를 쿼리하는 등 DMF 결과를 평가할 때는 쿼리에서 measurement_time
열을 평가의 기준으로 지정합니다. DMF 평가를 시작하는 내부 프로세스가 있으며, 예약된 시간과 측정 시간 사이에 INSERT 연산과 같은 테이블 업데이트가 발생할 수 있습니다. measurement_time
열을 사용하면 측정 시간이 DMF의 평가 시간을 나타내므로 DMF 결과를 더 정확하게 평가할 수 있습니다.
테이블 또는 뷰에 DMF 추가 또는 삭제¶
ALTER TABLE 또는 ALTER VIEW 명령을 사용하여 다음을 수행합니다.
ALTER TABLE 을 사용하여 테이블에 DMF를 추가합니다.
ALTER TABLE t ADD DATA METRIC FUNCTION governance.dmfs.count_positive_numbers ON (c1, c2, c3);
ALTER TABLE 명령을 사용하여 테이블에서 DMF를 삭제합니다.
ALTER TABLE t DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers ON (c1, c2, c3);
참고
ALTER VIEW 명령을 사용하여 구체화된 뷰 열에 DMF를 추가하거나 구체화된 뷰 열에서 DMF를 삭제합니다.
DMF 참조 추적¶
DATA_METRIC_FUNCTION_REFERENCES Account Usage 뷰를 쿼리하여 계정의 DMF 참조를 보거나 DATA_METRIC_FUNCTION_REFERENCES Information Schema 테이블 함수를 호출하여 지정된 테이블 또는 뷰와 연결된 DMFs 또는 지정된 DMF와 연결된 테이블 또는 뷰를 식별할 수 있습니다.
예:
해당 테이블 또는 뷰에 DMF가 count_positive_numbers
로 설정된 각 오브젝트(테이블 또는 뷰)에 대한 행을 반환합니다.
USE DATABASE governance; USE SCHEMA INFORMATION_SCHEMA; SELECT * FROM TABLE( INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES( METRIC_NAME => 'governance.dmfs.count_positive_numbers' ) );
hr.tables.empl_info
테이블에 할당된 각 DMF에 대한 행을 반환합니다.
USE DATABASE governance; USE SCHEMA INFORMATION_SCHEMA; SELECT * FROM TABLE( INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES( REF_ENTITY_NAME => 'hr.tables.empl_info', REF_ENTITY_DOMAIN => 'table' ) );
수동으로 DMF 호출¶
다음 구문을 사용하여 DMF를 호출합니다.
SELECT <data_metric_function>(<query>)
여기서
data_metric_function
시스템 DMF 또는 사용자 정의 DMF를 지정합니다.
query
테이블 또는 뷰에 SQL 쿼리를 지정합니다.
쿼리의 열은 DMF 서명의 열 인자와 일치해야 합니다.
참고
이러한 시스템 DMFs는 인자를 받지 않기 때문에 이 구문을 따르지 않습니다.
DMF를 직접 호출하여 결과를 확인합니다.
SELECT governance.dmfs.count_positive_numbers(
SELECT c1,
c2,
c3
FROM t
);
테이블이나 뷰에 DMF를 설정하고 실행하도록 예약하면 이벤트 테이블에서 생성된 뷰를 쿼리하여 결과를 확인할 수 있습니다. 자세한 내용은 DMF 결과 보기 섹션을 참조하십시오.
DMF 결과 보기¶
DMF 결과를 보려면 먼저 결과에 대한 액세스 권한을 관리한 다음 결과 보기 방법을 선택해야 합니다.
DMF 결과에 대한 액세스 관리하기¶
다음 섹션에서 자세히 설명하는 세 가지 옵션으로 예약된 DMF의 결과에 액세스할 수 있습니다.
옵션 1: 전용 이벤트 테이블을 쿼리합니다.
옵션 2: 이벤트 테이블의 데이터 스큐된 버전인 DATA_QUALITY_MONITORING_RESULTS 뷰를 쿼리합니다.
옵션 3: DATA_QUALITY_MONITORING_RESULTS 테이블 함수를 호출합니다.
DMF 결과에 대한 액세스를 관리하는 방법에 따라 다음 시스템 애플리케이션 역할을 다른 계정 수준 역할에 부여합니다.
애플리케이션 역할 |
참고 |
---|---|
DATA_QUALITY_MONITORING_ADMIN |
옵션 1, 2, 3을 사용할 수 있습니다. 이 애플리케이션 역할을 부여받은 역할은 다른 역할에 DATA_QUALITY_MONITORING_VIEWER 및 DATA_QUALITY_MONITORING_LOOKUP 애플리케이션 역할을 부여할 수 있습니다. ACCOUNTADMIN 역할이 부여된 사용자는 다른 역할에 DATA_QUALITY_MONITORING_ADMIN 애플리케이션 역할을 부여할 수 있습니다. |
DATA_QUALITY_MONITORING_VIEWER |
옵션 2 및 3. |
DATA_QUALITY_MONITORING_LOOKUP |
옵션 3만. |
예를 들어, GRANT APPLICATION ROLE 명령을 사용하여 DATA_QUALITY_MONITORING_VIEWER 시스템 애플리케이션 역할을 analyst
사용자 지정 역할에 부여합니다.
USE ROLE ACCOUNTADMIN; GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE analyst;
계정 역할에서 시스템 애플리케이션 역할을 취소하려면 REVOKE APPLICATION ROLE 명령을 사용합니다.
팁
또한 시스템 DMFs 의 결과에 대한 액세스를 관리하려면 결과에 액세스할 수 있는 계정 역할에 SNOWFLAKE.DATA_METRIC_USER 데이터베이스 역할을 부여합니다. 자세한 내용은 GRANT DATABASE ROLE 섹션을 참조하십시오.
선택 사항¶
예약된 DMF 결과를 보려면 다음 옵션 중 하나를 선택합니다.
- 옵션 1: 전용 이벤트 테이블 쿼리
이 옵션을 사용하면 원시 데이터에 액세스할 수 있으며, 결과를 분석하려는 방식에 따라 뷰, 테이블 함수 또는 저장 프로시저를 만드는 등 파생된 오브젝트를 사용하여 데이터를 더 자유롭게 후처리할 수 있습니다. 또한 이러한 파생 오브젝트를 생성하면 다양한 역할에 대해 이러한 오브젝트에 대한 액세스 권한을 선택적으로 부여할 수 있습니다. 예를 들어, 데이터 엔지니어는 결과를 얻기 위한 접근법을 유지하기 위해 저장 프로시저에 액세스할 수 있으며, 데이터 분석가는 뷰에 액세스하여 결과를 분석할 수 있습니다.
이벤트 테이블의 이름은
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW
입니다.이벤트 테이블 열에 대한 정보는 이벤트 테이블 열 섹션을 참조하십시오.
이벤트 테이블을 쿼리하는 대표적인 예제는 로깅 및 추적 자습서 섹션을 참조하십시오.
- 옵션 2: DATA_QUALITY_MONITORING_RESULTS 뷰 쿼리
이 옵션을 사용하면 이벤트 테이블의 원시 데이터를 평면화하여 DMF 결과에 더 쉽게 액세스할 수 있도록 하는 DATA_QUALITY_MONITORING_RESULTS 뷰를 쿼리할 수 있습니다. 또한 이 옵션은 데이터 후처리가 필요하지 않고 원시 데이터에 대한 액세스 권한을 부여하지 않으려는 경우에 가장 적합합니다.
뷰는 공유 SNOWFLAKE 데이터베이스
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS
의 LOCAL 스키마에 있습니다.자세한 내용은 DATA_QUALITY_MONITORING_RESULTS 뷰를 참조하십시오.
참고
SNOWFLAKE.GOVERNANCE_VIEWER 데이터베이스 역할에는 DATA_QUALITY_MONITORING_RESULTS 뷰를 쿼리할 수 있는 액세스 권한이 없습니다.
- 옵션 3: DATA_QUALITY_MONITORING_RESULTS 테이블 함수 호출
이 옵션을 사용하면 DATA_QUALITY_MONITORING_RESULTS 테이블 함수를 호출하여 DMF 결과를 볼 수 있습니다. 이 함수는 DATA_QUALITY_MONITORING_RESULTS 뷰와 동일한 열을 반환합니다. 하지만 함수를 호출할 때는 1개의 테이블만 지정할 수 있습니다. 이 옵션은 데이터 메트릭 함수 결과를 단일 테이블로 제한하고 다른 테이블이나 이벤트 테이블의 측정값에 대한 액세스를 제공하지 않으려는 경우에 가장 좋습니다.
SNOWFLAKE.DATA_QUALITY_MONITORING_LOOKUP 애플리케이션 역할 외에도 DATA_QUALITY_MONITORING_RESULTS 테이블 함수를 호출하는 데 사용되는 역할에는 다음 권한이 필요합니다.
테이블에 대한 OWNERSHIP 또는 SELECT.
DMF에 대한 OWNERSHIP 또는 USAGE.
시스템에서 DMF 삭제¶
시스템에서 DMF를 삭제합니다.
DROP FUNCTION governance.dmfs.count_positive_numbers(
TABLE(
NUMBER, NUMBER, NUMBER
)
);
제한 사항¶
자세한 내용은 데이터 품질 제한 섹션을 참조하십시오.