다음을 통해 공유


메트릭 테이블 모니터링

이 페이지에서는 Databricks Lakehouse 모니터링에서 만든 메트릭 테이블에 대해 설명합니다. 모니터에서 만든 대시보드에 대한 자세한 내용은 생성된 SQL 대시보드 사용을 참조 하세요.

모니터가 Databricks 테이블에서 실행되면 프로필 메트릭 테이블과 드리프트 메트릭 테이블이라는 두 개의 메트릭 테이블을 만들거나 업데이트합니다.

  • 프로필 메트릭 테이블에는 각 열 및 시간 창, 조각 및 그룹화 열의 각 조합에 대한 요약 통계가 포함되어 있습니다. 분석을 위해 InferenceLog 분석 테이블에는 모델 정확도 메트릭도 포함되어 있습니다.
  • 드리프트 메트릭 테이블에는 메트릭에 대한 분포의 변경 내용을 추적하는 통계가 포함되어 있습니다. Drift 테이블을 사용하여 특정 값 대신 데이터의 변경 내용을 시각화하거나 경고할 수 있습니다. 다음과 같은 유형의 드리프트가 계산됩니다.
    • 연속 드리프트는 창을 이전 시간 창과 비교합니다. 연속 드리프트는 지정된 세분성에 따라 집계 후 연속된 시간 창이 존재하는 경우에만 계산됩니다.
    • 초기 계획 드리프트는 창과 기준 테이블의 기준 분포를 비교합니다. 기준선 드리프트는 기준 테이블이 제공되는 경우에만 계산됩니다.

메트릭 테이블이 있는 위치

모니터링 메트릭 테이블은 다음과 같이 저장 {output_schema}.{table_name}_profile_metrics 됩니다.{output_schema}.{table_name}_drift_metrics

  • {output_schema} 는 .에서 지정한 카탈로그 및 스키마입니다 output_schema_name.
  • {table_name} 는 모니터링되는 테이블의 이름입니다.

모니터 통계를 계산하는 방법

메트릭 테이블의 각 통계 및 메트릭은 지정된 시간 간격("창"이라고 함)에 대해 계산됩니다. 분석의 경우 Snapshot 시간 창은 메트릭이 새로 고쳐진 시간에 해당하는 단일 시점입니다. 및 분석의 경우 TimeSeries 시간 창은 지정된 create_monitor 세분성과 인수에 timestamp_col 지정된 값을 기반으로 합니다profile_type.InferenceLog

메트릭은 항상 전체 테이블에 대해 계산됩니다. 또한 조각화 식을 제공하는 경우 식 값으로 정의된 각 데이터 조각에 대해 메트릭이 계산됩니다.

예시:

slicing_exprs=["col_1", "col_2 > 10"]

는 다음 조각을 생성합니다. 하나는 for col_2 > 10, for는 col_2 <= 10하나씩, 각각 고유 값에 대해 하나씩 생성됩니다 col1.

조각은 메트릭 테이블에서 열 이름과 slice_key slice_value에 의해 식별됩니다. 이 예제에서 한 조각 키는 "col_2 > 10"이고 해당 값은 "true" 및 "false"입니다. 전체 테이블은 = NULL 및 = NULL과 slice_value 같습니다 slice_key . 조각은 단일 조각 키로 정의됩니다.

메트릭은 시간 창과 조각 키 및 값으로 정의된 모든 가능한 그룹에 대해 계산됩니다. 또한 분석을 위해 InferenceLog 메트릭은 각 모델 ID에 대해 계산됩니다. 자세한 내용은 생성된 테이블에 대한 열 스키마를 참조 하세요.

모델 정확도 모니터링에 대한 추가 통계(InferenceLog 분석 전용)

분석을 위해 InferenceLog 추가 통계가 계산됩니다.

쿼리 분석 및 드리프트 메트릭 테이블

메트릭 테이블을 직접 쿼리할 수 있습니다. 다음 예제는 분석을 기반으로 InferenceLog 합니다.

SELECT
  window.start, column_name, count, num_nulls, distinct_count, frequent_items
FROM census_monitor_db.adult_census_profile_metrics
WHERE model_id = 1    — Constrain to version 1
  AND slice_key IS NULL    — look at aggregate metrics over the whole data
  AND column_name = "income_predicted"
ORDER BY window.start

생성된 테이블의 열 스키마

기본 테이블의 각 열에 대해 메트릭 테이블에는 그룹화 열의 각 조합에 대해 하나의 행이 포함됩니다. 각 행과 연결된 열이 열 column_name에 표시됩니다.

모델 정확도 메트릭과 같은 둘 이상의 열을 기반으로 하는 메트릭의 column_name 경우 로 설정 :table됩니다.

프로필 메트릭의 경우 다음 그룹화 열이 사용됩니다.

  • 시간 창
  • 세분성(TimeSeriesInferenceLog 분석만 해당)
  • 로그 형식 - 입력 테이블 또는 기준 테이블
  • 조각 키 및 값
  • 모델 ID(InferenceLog 분석 전용)

드리프트 메트릭의 경우 다음과 같은 추가 그룹화 열이 사용됩니다.

  • 비교 기간
  • 드리프트 형식(이전 창과 비교 또는 기준 테이블 비교)

메트릭 테이블의 스키마는 아래에 나와 있으며 Databricks Lakehouse 모니터링 API 참조 설명서에도 나와 있습니다.

프로필 메트릭 테이블 스키마

다음 표에서는 프로필 메트릭 테이블의 스키마를 보여 줍니다. 메트릭을 행에 적용할 수 없는 경우 해당 셀은 null입니다.

열 이름 Type 설명
열 그룹화
window 구조체. 아래 [1]을 참조하세요. 기간.
세분성 string 매개 변수로 granularities 설정된 기간입니다. [2]
model_id_col string 선택 사항. 분석 유형에 InferenceLog 만 사용됩니다.
log_type string 메트릭을 계산하는 데 사용되는 테이블입니다. 기준선 또는 입력입니다.
slice_key string 조각 식입니다. 기본값은 모든 데이터인 NULL입니다.
slice_value string 조각화 식의 값입니다.
column_name string 기본 테이블의 열 이름입니다. :table 는 모델 정확도와 같이 전체 테이블에 적용되는 메트릭의 특수 이름입니다.
data_type string column_nameSpark 데이터 형식
logging_table_commit_version int 무시.
monitor_version bigint 행의 메트릭을 계산하는 데 사용되는 모니터 구성의 버전입니다. 자세한 내용은 아래 [3]을 참조하세요.
메트릭 열 - 요약 통계
count bigint null이 아닌 값의 수입니다.
num_nulls bigint 의 null 값 수입니다 column_name.
avg double null을 포함하는 열의 산술 평균입니다.
분위수 array<double> 1000 분위수의 배열입니다. 아래 [4]를 참조하세요.
distinct_count bigint 의 고유 값 수입니다.column_name
min double 의 최소값입니다 column_name.
max double 의 최대값입니다 column_name.
stddev double 의 표준 편차 column_name
num_zeros bigint 의 0개 수입니다 column_name.
num_nan bigint 의 NaN 값 수입니다 column_name.
min_size double 에 있는 column_name배열 또는 구조체의 최소 크기입니다.
max_size double 에서 배열 또는 구조 column_name체의 최대 크기입니다.
avg_size double 의 배열 또는 구조 column_name체의 평균 크기입니다.
min_len double 에 있는 column_name문자열 및 이진 값의 최소 길이입니다.
max_len double 에서 문자열 및 이진 값 column_name의 최대 길이입니다.
avg_len double 에 있는 column_name문자열 및 이진 값의 평균 길이입니다.
frequent_items 구조체. 아래 [1]을 참조하세요. 가장 자주 발생하는 상위 100개 항목
non_null_columns array<string> Null이 아닌 값이 하나 이상 있는 열 목록입니다.
중앙값 double 의 중간값입니다 column_name.
percent_null double 에서 null 값의 백분율입니다 column_name.
percent_zeros double 에 0인 값의 백분율입니다.column_name
percent_distinct double 에서 구분 column_name되는 값의 백분율입니다.
메트릭 열 - 분류 모델 정확 도 [5]
accuracy_score double null 값을 무시하고 올바른 예측 수/총 예측 수로 계산된 모델의 정확도입니다.
confusion_matrix 구조체. 아래 [1]을 참조하세요.
자릿수 구조체. 아래 [1]을 참조하세요.
재현율 구조체. 아래 [1]을 참조하세요.
f1_score 구조체. 아래 [1]을 참조하세요.
메트릭 열 - 회귀 모델 정확 도 [5]
mean_squared_error double 사이 및 label_col. 사이의 prediction_col 평균 제곱 오차
root_mean_squared_error double 루트 평균 제곱 오차 사이 prediction_collabel_col.
mean_average_error double 사이의 prediction_col 평균 평균 오차입니다 label_col.
mean_absolute_percentage_error double 사이의 절대 백분율 오차를 prediction_col 의미합니다 label_col.
r2_score double 사이의 R 제곱 점수 prediction_col 와 .label_col
메트릭 열 - 공정성 및 바이어스 [6]
predictive_parity double 두 그룹이 예측된 모든 클래스에서 동일한 정밀도를 갖는지 여부를 측정합니다. label_col은 필수입니다.
predictive_equality double 두 그룹이 예측된 모든 클래스에서 가양성 비율이 같은지 여부를 측정합니다. label_col은 필수입니다.
equal_opportunity double 두 그룹이 예측된 모든 클래스에서 동일한 회수를 갖는지 여부를 측정합니다. label_col은 필수입니다.
statistical_parity double 두 그룹의 수용률이 같은지 여부를 측정합니다. 여기서 수용률은 예측된 모든 클래스에서 특정 클래스로 예측될 경험적 확률로 정의됩니다.

[1] , precisionrecallf1_score: 에 대한 confusion_matrix구조체 형식입니다.

열 이름 Type
window struct<start: timestamp, end: timestamp>
frequent_items array<struct<item: string, count: bigint>>
confusion_matrix struct<prediction: string, label: string, count: bigint>
전체 자릿수 struct<one_vs_all: map<string,double>, macro: double, weighted: double>
재현율 struct<one_vs_all: map<string,double>, macro: double, weighted: double>
f1_score struct<one_vs_all: map<string,double>, macro: double, weighted: double>

[2] 시계열 또는 유추 프로필의 경우 모니터는 모니터가 만들어진 시점으로부터 30일 후를 거슬러 찾습니다. 이 차단으로 인해 첫 번째 분석에는 부분 창이 포함될 수 있습니다. 예를 들어 30일 제한은 1주일 또는 월 중간에 떨어질 수 있습니다. 이 경우 전체 주 또는 월이 계산에 포함되지 않습니다. 이 문제는 첫 번째 창에만 영향을 줍니다.

[3] 이 열에 표시된 버전은 행의 통계를 계산하는 데 사용된 버전이며 모니터의 현재 버전이 아닐 수 있습니다. 메트릭을 새로 고칠 때마다 모니터는 현재 모니터 구성을 사용하여 이전에 계산된 메트릭을 다시 계산하려고 시도합니다. 현재 모니터 버전은 API 및 Python 클라이언트에서 반환된 모니터 정보에 표시됩니다.

[4] 50번째 백분위 SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... SELECT quantiles[500] ... 수 또는 .

[5] 모니터 InferenceLog 에 분석 유형과 둘 다 label_col 있고 prediction_col 제공된 경우에만 표시됩니다.

[6] 모니터에 분석 유형이 있고 problem_type classificationInferenceLog/>인 경우에만 표시됩니다.

Drift 메트릭 테이블 스키마

다음 표에서는 드리프트 메트릭 테이블의 스키마를 보여 줍니다. 드리프트 테이블은 기준 테이블이 제공되거나 지정된 세분성에 따라 집계 후 연속된 시간 창이 있는 경우에만 생성됩니다.

열 이름 Type 설명
열 그룹화
window struct<start: timestamp, end: timestamp> 기간.
window_cmp struct<start: timestamp, end: timestamp> drift_type CONSECUTIVE비교 창입니다.
drift_type string 기준선 또는 연속입니다. 드리프트 메트릭이 이전 기간 또는 기준 테이블과 비교되는지 여부입니다.
세분성 string 매개 변수로 granularities 설정된 기간입니다. [7]
model_id_col string 선택 사항. 분석 유형에 InferenceLog 만 사용됩니다.
slice_key string 조각 식입니다. 기본값은 모든 데이터인 NULL입니다.
slice_value string 조각화 식의 값입니다.
column_name string 기본 테이블의 열 이름입니다. :table 는 모델 정확도와 같이 전체 테이블에 적용되는 메트릭의 특수 이름입니다.
data_type string column_nameSpark 데이터 형식
monitor_version bigint 행의 메트릭을 계산하는 데 사용되는 모니터 구성의 버전입니다. 자세한 내용은 아래 [8]을 참조하세요.
메트릭 열 - 드리프트 차이점은 현재 창- 비교 창으로 계산됩니다.
count_delta double count차이점
avg_delta double avg차이점
percent_null_delta double percent_null차이점
percent_zeros_delta double percent_zeros차이점
percent_distinct_delta double percent_distinct차이점
non_null_columns_delta struct<added: int, missing: int> null이 아닌 값의 증가 또는 감소가 있는 열 수입니다.
chi_squared_test struct<statistic: double, pvalue: double> 분포에서 드리프트에 대한 카이 제곱 테스트.
ks_test struct<statistic: double, pvalue: double> 분포의 드리프트에 대한 KS 테스트입니다. 숫자 열에 대해서만 계산됩니다.
tv_distance double 분포의 드리프트에 대한 총 변형 거리입니다.
l_infinity_distance double 분포의 드리프트에 대한 L-무한대 거리입니다.
js_distance double 젠슨 -분산에서 드리프트에 대한 섀넌 거리. 범주 열에 대해서만 계산됩니다.
wasserstein_distance double Wasserstein 거리 메트릭을 사용하여 두 숫자 분포 사이를 드리프트합니다.
population_stability_index double 모집단 안정성 인덱스 메트릭을 사용하여 두 숫자 분포 간의 드리프트를 비교하는 메트릭입니다. 자세한 내용은 아래 [9]를 참조하세요.

[7] 시계열 또는 유추 프로필의 경우 모니터는 모니터가 만들어진 시점으로부터 30일을 되돌아봅니다. 이 차단으로 인해 첫 번째 분석에는 부분 창이 포함될 수 있습니다. 예를 들어 30일 제한은 1주일 또는 월 중간에 떨어질 수 있습니다. 이 경우 전체 주 또는 월이 계산에 포함되지 않습니다. 이 문제는 첫 번째 창에만 영향을 줍니다.

[8] 이 열에 표시된 버전은 행의 통계를 계산하는 데 사용된 버전이며 모니터의 현재 버전이 아닐 수 있습니다. 메트릭을 새로 고칠 때마다 모니터는 현재 모니터 구성을 사용하여 이전에 계산된 메트릭을 다시 계산하려고 시도합니다. 현재 모니터 버전은 API 및 Python 클라이언트에서 반환된 모니터 정보에 표시됩니다.

[9] 모집단 안정성 인덱스의 출력은 두 분포가 얼마나 다른지를 나타내는 숫자 값입니다. 범위는 [0, inf)입니다. PSI < 0.1은 인구 변동이 크지 않음을 의미합니다. PSI < 0.2는 적당한 인구 변화를 나타냅니다. PSI >= 0.2는 상당한 모집단 변화를 나타냅니다.