데이터 품질에서 이상 감지
데이터 품질에서 이상 감지
미리 보기 기능(Preview) — 오픈. Enterprise Edition(또는 그 이상)의 모든 계정에서 사용할 수 있어요. 업그레이드 문의는 Snowflake 지원에 연락해 주세요.
Enterprise Edition 기능 — 데이터 품질 모니터링(Data Quality Monitoring)은 Enterprise Edition이 필요해요. 업그레이드 문의는 Snowflake 지원에 연락해 주세요.
데이터 메트릭 함수(DMF)에서 값을 반환하면 유용한 정보를 제공하지만, 그 값이 데이터 품질 문제를 나타내는지 알기 어려울 수 있어요. 허용 가능한 값이 무엇인지 알면 기대값을 정의할 수 있지만, 가능한 모든 데이터 품질 문제를 식별할 만큼 충분한 수동 규칙을 정의하는 것은 어려울 수 있어요.
해결책으로 Snowflake는 DMF가 반환한 값에서 이상을 감지할 수 있는 알고리즘을 제공해요. Snowflake는 이 알고리즘을 이력 데이터로 훈련한 다음, 예측 범위보다 위 또는 아래인 반환 값을 자동으로 식별해요.
다음 시스템 DMF에 대해 이상 감지를 활성화할 수 있어요.
다음 예제는 ROW_COUNT DMF와 테이블 t1 사이의 연결에 대해 이상 감지를 활성화하는 방법을 보여줘요.
ALTER TABLE t1
ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
ANOMALY_DETECTION = TRUE;
Snowflake가 알고리즘을 훈련한 다음 테이블 t1의 데이터 양에서 이상을 자동으로 식별하기 시작해요.
출처: Documentation
본문
훈련 기간에 대해
이상 감지를 활성화하면 Snowflake가 이력 데이터에서 이상 감지 알고리즘을 훈련해요. 훈련 기간의 길이는 DMF가 실행되는 빈도에 따라 달라져요.
- 자주 실행되는 DMF의 경우, Snowflake는 이상 감지를 시작하려면 최소 2주의 DMF 데이터가 필요해요. 이 2주 기간은 주간 계절성(weekly seasonality)을 확립하는 데 필수적이에요. DMF가 더 오래 실행되었다면 Snowflake는 최대 60일의 데이터로 알고리즘을 훈련해요. 이 더 긴 훈련 기간은 월간 계절성을 확립하고 정확도를 높여요. Snowflake는 높은 신뢰도로 이상을 감지하려면 알고리즘을 60일의 데이터로 훈련하게 두는 것을 권장해요.
- 자주 실행되지 않거나 트리거 기반 일정으로 실행되는 DMF의 경우, Snowflake는 알고리즘을 훈련하려면 데이터 포인트가 최소 2개 있어야 해요. 예를 들어 DMF가 매달 실행되면 Snowflake는 알고리즘을 훈련하기 위해 두 달을 되돌아봐요.
DATA_METRIC_FUNCTION_REFERENCES 함수를 실행해 Snowflake가 여전히 훈련 기간인지 확인할 수 있어요. 이상 감지가 활성화되었지만 알고리즘이 여전히 훈련 중이라면 출력의 anomaly_detection_status 열에 TRAINING_IN_PROGRESS 값이 포함돼요.
이상 감지 활성화
DMF를 객체에 처음 연결할 때 DMF 연결에 대한 이상 감지를 활성화하거나, 나중에 활성화할 수 있어요.
예제: DMF를 연결할 때 이상 감지 활성화
FRESHNESS DMF를 뷰 v1과 연결할 때 이상 감지를 활성화하려면 다음 명령을 실행해요.
ALTER VIEW v1
ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON (c_timestamp)
ANOMALY_DETECTION = TRUE;
예제: 기존 연결에 대한 이상 감지 활성화
ROW_COUNT DMF와 테이블 t1 사이의 기존 연결에 대해 이상 감지를 활성화하려면 다음 명령을 실행해요.
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
SET ANOMALY_DETECTION = TRUE;
이상 감지의 민감도 수준 조정
이상 감지를 활성화한 후 계정에서 발생하는 이상이 몇 개인지 추적할 수 있어요. 이상 수가 너무 낮거나 너무 높아 보이면 이상 감지 알고리즘의 민감도 수준을 조정할 수 있어요.
- 잘못된 양성(즉, 이상으로 잘못 식별된 값)이 너무 많으면 민감도를 LOW로 변경해 이상을 더 적게 찾을 수 있어요.
- 잘못된 음성(즉, 이상으로 식별되지 않았지만 실제로는 이상인 값)이 너무 많으면 민감도를 HIGH로 변경해 이상을 더 많이 찾을 수 있어요.
기본 민감도 수준은 MEDIUM이에요.
예를 들어 테이블 t1의 데이터 양에서 이상을 찾는 DMF 연결의 민감도를 높이려면 다음 명령을 실행해요.
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
SET SENSITIVITY = 'HIGH';
이상 감지 비활성화
ALTER 문을 사용해 객체를 수정해 언제든지 DMF 연결에 대한 이상 감지를 비활성화할 수 있어요.
예를 들어 ROW_COUNT DMF와 테이블 t1 사이의 연결에 대한 이상 감지를 비활성화하려면 다음 명령을 실행해요.
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
SET ANOMALY_DETECTION = FALSE;
이상 식별
다음을 사용해 이상을 식별할 수 있어요.
- SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW: 원시 데이터 품질 결과를 기록하는 전용 이벤트 테이블.
- DATA_QUALITY_MONITORING_ANOMALY_DETECTION_STATUS 뷰: SNOWFLAKE.LOCAL 스키마의 평면화된 결과를 포함하는 뷰.
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW
데이터 품질 결과는 전용 이벤트 테이블 SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW에 기록돼요.
DMF 연결에 대해 이상 감지가 활성화되면 Snowflake가 DMF의 결과를 계산할 때마다 테이블에 두 행이 추가돼요. 첫 번째 행은 DMF가 연결된 객체, DMF 자체, 데이터 품질 검사 결과에 대한 정보를 기록해요. 두 번째 행은 이상 감지와 관련된 정보를 기록해요.
record_attribute 열의 snow.data_metric.record_type 필드는 행이 이상 감지에 해당하는지 여부를 나타내요. 이 필드에는 두 가지 가능한 값이 있어요.
ANOMALY_DETECTION_STATUS— 행이 이상 감지에 해당함을 나타내요.EVALUATION_RESULT— 행이 DMF의 평가에 해당함을 나타내요.
이상이 있었는지 식별
이벤트 테이블의 행이 이상 감지에 해당한다고 확인한 후, resource_attribute 열의 snow.data_metric.evaluation_result 필드를 확인해 이상이 있었는지 판단할 수 있어요.
이 필드는 DMF가 반환한 값과 그 값이 이상인지 여부를 나타내는 BOOLEAN 값을 포함하는 VARIANT를 포함해요. 예를 들어 snow.data_metric.evaluation_result 필드의 값이 5, TRUE라면 반환 값은 5이고 Snowflake가 그것을 이상으로 식별한 거예요.
추가 필드
이벤트 테이블의 행이 이상 감지에 해당하면 resource_attribute 열에도 다음 필드가 포함돼요.
snow.data_metric.upper_bound: 이상 감지 알고리즘을 기반으로 DMF가 반환해야 하는 가장 높은 값. DMF가 반환한 값이 이 상한보다 위이면 이상이에요.snow.data_metric.lower_bound: 이상 감지 알고리즘을 기반으로 DMF가 반환해야 하는 가장 낮은 값. DMF가 반환한 값이 이 하한보다 아래이면 이상이에요.snow.data_metric.forecast: 이상 감지 알고리즘이 DMF가 반환할 것이라고 예측한 값.
DATA_QUALITY_MONITORING_ANOMALY_DETECTION_STATUS 뷰
SNOWFLAKE.LOCAL 스키마에 있는 DATA_QUALITY_MONITORING_ANOMALY_DETECTION_STATUS 뷰는 이벤트 테이블의 정보를 평면화해 DMF 결과에 더 쉽게 접근하게 해줘요.