메트릭 테이블 모니터링
이 페이지에서는 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
추가 통계가 계산됩니다.
- 모델 품질은 둘 다
label_col
prediction_col
제공되는 경우 계산됩니다. - 조각은 .의
model_id_col
고유 값에 따라 자동으로 만들어집니다. - 분류 모델의 경우 부울 값이 있는 조각에 대해 공정성 및 바이어스 통계 가 계산됩니다.
쿼리 분석 및 드리프트 메트릭 테이블
메트릭 테이블을 직접 쿼리할 수 있습니다. 다음 예제는 분석을 기반으로 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
됩니다.
프로필 메트릭의 경우 다음 그룹화 열이 사용됩니다.
- 시간 창
- 세분성(
TimeSeries
및InferenceLog
분석만 해당) - 로그 형식 - 입력 테이블 또는 기준 테이블
- 조각 키 및 값
- 모델 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_name Spark 데이터 형식 |
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_col 및 label_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] , precision
및 recall
f1_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
classification
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_name Spark 데이터 형식 |
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는 상당한 모집단 변화를 나타냅니다.