Sdílet prostřednictvím


Použití vlastních metrik s monitorováním Databricks Lakehouse

Tato stránka popisuje, jak vytvořit vlastní metriku v monitorování Databricks Lakehouse. Kromě statistik analýzy a posunu, které se automaticky počítají, můžete vytvořit vlastní metriky. Můžete například chtít sledovat vážený průměr, který zachycuje určitý aspekt obchodní logiky nebo používá vlastní skóre kvality modelu. Můžete také vytvořit vlastní metriky posunu, které sledují změny hodnot v primární tabulce (ve srovnání se směrnými plány nebo předchozím časovým oknem).

Další podrobnosti o tom, jak používat MonitorMetric rozhraní API, najdete v referenčních informacích k rozhraní API.

Typy vlastních metrik

Monitorování Databricks Lakehouse zahrnuje následující typy vlastních metrik:

  • Agregované metriky, které se počítají na základě sloupců v primární tabulce. Agregační metriky se ukládají v tabulce metrik profilu.
  • Odvozené metriky, které se počítají na základě dříve vypočítaných agregačních metrik a nepoužívají přímo data z primární tabulky. Odvozené metriky jsou uložené v tabulce metrik profilu.
  • Metriky posunu, které porovnávají dříve vypočítané agregované nebo odvozené metriky ze dvou různých časových intervalů nebo mezi primární tabulkou a základní tabulkou. Metriky posunu se ukládají v tabulce metrik posunu.

Použití odvozených a posunových metrik, kde je to možné, minimalizuje přepočítaní přes celou primární tabulku. Agregují pouze data přístupu k metrikám z primární tabulky. Odvozené a posunové metriky se pak dají vypočítat přímo z agregovaných hodnot metrik.

Vlastní parametry metrik

Pokud chcete definovat vlastní metriku , vytvoříte šablonu Jinja pro výraz sloupce SQL. Tabulky v této části popisují parametry, které definují metriku, a parametry, které se používají v šabloně Jinja.

Parametr Popis
type Jeden z MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE, MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVEDnebo MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT.
name Název sloupce pro vlastní metriku v tabulkách metrik
input_columns Seznam názvů sloupců ve vstupní tabulce by se měl vypočítat pro metriku. Chcete-li označit, že se ve výpočtu používá více než jeden sloupec, použijte :table. Podívejte se na příklady v tomto článku.
definition Šablona Jinja pro výraz SQL, který určuje, jak vypočítat metriku. Viz Vytvoření definice.
output_data_type Datový typ Sparku výstupu metriky ve formátu řetězce JSON.

Vytvářet definition

Parametr definition musí být jediný řetězcový výraz ve formě šablony Jinja. Nemůže obsahovat spojení ani poddotazy.

Následující tabulka uvádí parametry, které můžete použít k vytvoření šablony SQL Jinja k určení způsobu výpočtu metriky.

Parametr Popis
{{input_column}} Sloupec použitý k výpočtu vlastní metriky
{{prediction_col}} Sloupec obsahující predikce modelu ML Používá se s InferenceLog analýzou.
{{label_col}} Sloupec držící popisky základní pravdy modelu ML Používá se s InferenceLog analýzou.
{{current_df}} Pro posun v porovnání s předchozím časovým intervalem. Data z předchozího časového intervalu
{{base_df}} Pro posun ve srovnání s tabulkou směrného plánu. Směrná data.

Příklad agregované metriky

Následující příklad vypočítá průměr čtverců hodnot ve sloupci a použije se u sloupců f1 a f2. Výstup se uloží jako nový sloupec v tabulce metrik profilu a zobrazí se v řádcích analýzy odpovídajících sloupcům f1 a f2. Příslušné názvy sloupců jsou nahrazeny parametrem {{input_column}}Jinja .

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(),
)

Následující kód definuje vlastní metriku, která vypočítá průměr rozdílu mezi sloupci f1 a f2. Tento příklad ukazuje použití [":table"] parametru input_columns k označení, že ve výpočtu se používá více než jeden sloupec z tabulky.

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(),
)

Tento příklad vypočítá vážené skóre kvality modelu. Pro pozorování, kde critical je Truesloupec , je přiřazena těžší trest, když předpovězená hodnota pro tento řádek neodpovídá základní pravdě. Protože je definována na nezpracovaných sloupcích (prediction a label) je definována jako agregovaná metrika. Sloupec :table označuje, že tato metrika se počítá z více sloupců. Parametry {{prediction_col}} Jinja a {{label_col}} jsou nahrazeny názvem sloupce predikce a základního popisku pravdy pro monitor.

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(),
)

Příklad odvozené metriky

Následující kód definuje vlastní metriku, která vypočítá druhou odmocninu squared_avg metriky definované dříve v této části. Vzhledem k tomu, že se jedná o odvozenou metriku, neodkazuje na primární data tabulky a místo toho je definována z hlediska squared_avg agregační metriky. Výstup se uloží jako nový sloupec v tabulce metrik profilu.

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(),
)

Příklad metrik posunu

Následující kód definuje metriku posunu, která sleduje změnu metriky weighted_error definované dříve v této části. Parametry {{current_df}} umožňují {{base_df}} metrikě odkazovat na weighted_error hodnoty z aktuálního okna a okna porovnání. Okno porovnání může být buď základní data, nebo data z předchozího časového intervalu. Metriky posunu se ukládají v tabulce metrik posunu.

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(),
)