다음을 통해 공유


Databricks Lakehouse 모니터링에서 사용자 지정 메트릭 사용

이 페이지에서는 Databricks Lakehouse 모니터링에서 사용자 지정 메트릭을 만드는 방법을 설명합니다. 자동으로 계산되는 분석 및 드리프트 통계 외에도 사용자 지정 메트릭을 만들 수 있습니다. 예를 들어 비즈니스 논리의 일부 측면을 캡처하거나 사용자 지정 모델 품질 점수를 사용하는 가중 평균을 추적할 수 있습니다. 기본 테이블의 값 변경 내용을 추적하는 사용자 지정 드리프트 메트릭을 만들 수도 있습니다(기준선 또는 이전 기간과 비교).

MonitorMetric API를 사용하는 방법에 대한 자세한 내용은 API 참조를 참조하세요.

사용자 지정 메트릭 유형

Databricks Lakehouse 모니터링에는 다음과 같은 유형의 사용자 지정 메트릭이 포함됩니다.

  • 기본 테이블의 열을 기반으로 계산되는 집계 메트릭. 집계 메트릭은 프로필 메트릭 테이블에 저장됩니다.
  • 파생 메트릭은 이전에 계산된 집계 메트릭을 기반으로 계산되며 기본 테이블의 데이터를 직접 사용하지 않습니다. 파생 메트릭은 프로필 메트릭 테이블에 저장됩니다.
  • 이전에 계산한 집계 또는 파생 메트릭을 두 개의 서로 다른 시간 창에서 비교하거나 기본 테이블 및 기준 테이블 간에 비교하는 드리프트 메트릭입니다. 드리프트 메트릭은 드리프트 메트릭 테이블에 보관됩니다.

가능한 경우 파생 및 드리프트 메트릭을 사용하면 전체 기본 테이블에 대한 재계산이 최소화됩니다. 집계 메트릭만 기본 테이블의 데이터에 액세스합니다. 파생 및 드리프트 메트릭은 집계 메트릭 값에서 직접 계산할 수 있습니다.

사용자 지정 메트릭 매개 변수

사용자 지정 메트릭을 정의하려면 SQL 열 식에 대한 Jinja 템플릿을 만듭니다. 이 섹션의 표에서는 메트릭을 정의하는 매개 변수 및 Jinja 템플릿에 사용되는 매개 변수에 대해 설명합니다.

매개 변수 설명
type MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE, MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED 또는 MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT 중 하나입니다.
name 메트릭 테이블의 사용자 지정 메트릭에 대한 열 이름.
input_columns 메트릭을 계산해야 하는 입력 테이블의 열 이름 목록. 계산에 둘 이상의 열이 사용됨을 나타내려면 :table을 사용합니다. 이 문서에 있는 예제를 참조하세요.
definition 메트릭을 계산하는 방법을 지정하는 SQL 식의 Jinja 템플릿. 정의 만들기를 참조하세요.
output_data_type JSON 문자열 형식 메트릭 출력의 Spark 데이터 형식.

definition 만들기

definition 매개 변수는 Jinja 템플릿 형식의 단일 문자열 식이어야 합니다. 조인 또는 하위 쿼리를 포함할 수 없습니다.

다음 표에서는 메트릭을 계산하는 방법을 지정하기 위해 SQL Jinja 템플릿을 만드는 데 사용할 수 있는 매개 변수를 나열합니다.

매개 변수 설명
{{input_column}} 사용자 지정 메트릭을 계산하는 데 사용되는 열.
{{prediction_col}} ML 모델 예측을 포함하는 열. InferenceLog 분석과 함께 사용됩니다.
{{label_col}} ML 모델 실측 자료 레이블을 포함하는 열. InferenceLog 분석과 함께 사용됩니다.
{{current_df}} 이전 기간과 비교한 드리프트의 경우 이전 기간의 데이터.
{{base_df}} 기준 테이블과 비교한 드리프트의 경우 기준 데이터.

집계 메트릭 예제

다음 예제에서는 열에 있는 값의 제곱 평균을 계산하며 f1f2 열에 적용됩니다. 출력은 프로필 메트릭 테이블에 새 열로 저장되며 f1f2 열에 해당하는 분석 행에 표시됩니다. 해당 열 이름은 Jinja 매개 변수 {{input_column}}으로 대체됩니다.

from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
    type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
    name="squared_avg",
    input_columns=["f1", "f2"],
    definition="avg(`{{input_column}}`*`{{input_column}}`)",
    output_data_type=T.StructField("output", T.DoubleType()).json(),
)

다음 코드는 f1f2 열 간 차이의 평균을 계산하는 사용자 지정 메트릭을 정의합니다. 이 예제에서는 input_columns 매개 변수의 [":table"]을(를) 사용하여 테이블에서 두 개 이상의 열이 계산에 사용됨을 나타냅니다.

from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
    type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
    name="avg_diff_f1_f2",
    input_columns=[":table"],
    definition="avg(f1 - f2)",
    output_data_type=T.StructField("output", T.DoubleType()).json(),
)

이 예제에서는 가중치 모델 품질 점수를 계산합니다. critical 열이 True인 관찰의 경우 해당 행의 예측 값이 실측 자료와 일치하지 않을 때 더 무거운 페널티가 할당됩니다. 이는 원시 열(predictionlabel)에 정의되므로 집계 메트릭으로 정의됩니다. :table 열은 이 메트릭이 여러 열에서 계산되었음을 나타냅니다. Jinja 매개 변수 {{prediction_col}}{{label_col}}은 모니터에 대한 예측 및 실측 자료 레이블 열의 이름으로 바뀝니다.

from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
    type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
    name="weighted_error",
    input_columns=[":table"],
    definition="""avg(CASE
      WHEN {{prediction_col}} = {{label_col}} THEN 0
      WHEN {{prediction_col}} != {{label_col}} AND critical=TRUE THEN 2
      ELSE 1 END)""",
    output_data_type=T.StructField("output", T.DoubleType()).json(),
)

파생 메트릭 예제

다음 코드는 이 섹션의 앞부분에서 정의된 squared_avg 메트릭의 제곱근을 계산하는 사용자 지정 메트릭을 정의합니다. 이는 파생 메트릭이므로 기본 테이블 데이터를 참조하지 않고 대신 squared_avg 집계 메트릭을 기준으로 정의됩니다. 출력은 프로필 메트릭 테이블에 새 열로 저장됩니다.

from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
    type=MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED,
    name="root_mean_square",
    input_columns=["f1", "f2"],
    definition="sqrt(squared_avg)",
    output_data_type=T.StructField("output", T.DoubleType()).json(),
)

드리프트 메트릭 예제

다음 코드는 이 섹션의 앞부분에서 정의된 weighted_error 메트릭의 변경 사항을 추적하는 드리프트 메트릭을 정의합니다. {{current_df}}{{base_df}} 매개 변수를 사용하면 메트릭이 현재 창과 비교 창의 weighted_error 값을 참조할 수 있습니다. 비교 창은 기준 데이터 또는 이전 시간 창의 데이터일 수 있습니다. 드리프트 메트릭은 드리프트 메트릭 테이블에 저장됩니다.

from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
    type=MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT,
    name="error_rate_delta",
    input_columns=[":table"],
    definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
    output_data_type=T.StructField("output", T.DoubleType()).json(),
)