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_DERIVED nebo 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 True
sloupec , 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(),
)