Share via


Använda anpassade mått med Databricks Lakehouse Monitoring

Viktigt

Den här funktionen finns i offentlig förhandsversion.

Den här sidan beskriver hur du skapar ett anpassat mått i Databricks Lakehouse Monitoring. Förutom den analys- och driftstatistik som beräknas automatiskt kan du skapa anpassade mått. Du kanske till exempel vill spåra ett viktat medelvärde som samlar in någon aspekt av affärslogik eller använder en anpassad modellkvalitetspoäng. Du kan också skapa anpassade driftmått som spårar ändringar av värdena i den primära tabellen (jämfört med baslinjen eller föregående tidsfönster).

Mer information om hur du använder API:et databricks.lakehouse_monitoring.Metric finns i API-referensen.

Typer av anpassade mått

Databricks Lakehouse Monitoring innehåller följande typer av anpassade mått:

  • Aggregera mått som beräknas baserat på kolumner i den primära tabellen. Aggregerade mått lagras i profilmåtttabellen.
  • Härledda mått, som beräknas baserat på tidigare beräknade aggregeringsmått och inte direkt använder data från den primära tabellen. Härledda mått lagras i profilmåtttabellen.
  • Driftmått, som jämför tidigare beräknade aggregeringar eller härledda mått från två olika tidsfönster, eller mellan den primära tabellen och baslinjetabellen. Driftmått lagras i tabellen driftmått.

Om du använder härledda mått och driftmått där det är möjligt minimeras omkomputationen över den fullständiga primära tabellen. Aggregera endast mått som har åtkomst till data från den primära tabellen. Härledda mått och driftmått kan sedan beräknas direkt från de aggregerade måttvärdena.

Anpassade måttparametrar

Om du vill definiera ett anpassat mått skapar du en Jinja-mall för ett SQL-kolumnuttryck. Tabellerna i det här avsnittet beskriver de parametrar som definierar måttet och de parametrar som används i Jinja-mallen.

Parametern Beskrivning
type En av aggregate, derivedeller drift.
name Kolumnnamn för det anpassade måttet i måtttabeller.
input_columns Lista över kolumnnamn i indatatabellen som måttet ska beräknas för. Om du vill ange att mer än en kolumn används i beräkningen använder du :table. Se exemplen i den här artikeln.
definition Jinja-mall för ett SQL-uttryck som anger hur måttet ska beräknas. Se Skapa metric_definition.
output_data_type Spark-datatyp för måttets utdata.

Skapa definition

Parametern definition måste vara ett enda stränguttryck i form av en Jinja-mall. Den får inte innehålla kopplingar eller underfrågor. Om du vill skapa komplexa definitioner kan du använda Hjälpfunktioner i Python.

I följande tabell visas de parametrar som du kan använda för att skapa en SQL Jinja-mall för att ange hur måttet ska beräknas.

Parametern Beskrivning
{{input_column}} Kolumn som används för att beräkna det anpassade måttet.
{{prediction_col}} Kolumn med ML-modellförutsägelser. Används med InferenceLog analys.
{{label_col}} Kolumn som innehåller sanningens etiketter för ML-modellen. Används med InferenceLog analys.
{{current_df}} För drift jämfört med föregående tidsfönster. Data från föregående tidsfönster.
{{base_df}} För drift jämfört med baslinjetabellen. Baslinjedata.

Exempel på sammanställda mått

I följande exempel beräknas medelvärdet av kvadraten för värdena i en kolumn och tillämpas på kolumner f1 och f2. Utdata sparas som en ny kolumn i tabellen profilmått och visas i analysraderna som motsvarar kolumnerna f1 och f2. De tillämpliga kolumnnamnen ersätts med jinjaparametern {{input_column}}.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="aggregate",
  name="squared_avg",
  input_columns=["f1", "f2"],
  definition="avg(`{{input_column}}`*`{{input_column}}`)",
  output_data_type=T.DoubleType()
  )

Följande kod definierar ett anpassat mått som beräknar medelvärdet av skillnaden mellan kolumner f1 och f2. Det här exemplet visar användningen av [":table"] i parametern input_columns för att indikera att mer än en kolumn från tabellen används i beräkningen.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="aggregate",
  name="avg_diff_f1_f2",
  input_columns=[":table"],
  definition="avg(f1 - f2)",
  output_data_type=T.DoubleType())

I det här exemplet beräknas en viktad modellkvalitetspoäng. För observationer där critical kolumnen är Truetilldelas en tyngre straff när det förutsagda värdet för den raden inte matchar grundsanningen. Eftersom den definieras för råkolumnerna (prediction och label), definieras den som ett aggregerat mått. Kolumnen :table anger att det här måttet beräknas från flera kolumner. Jinja-parametrarna {{prediction_col}} och {{label_col}} ersätts med namnet på kolumnerna för förutsägelse och mald sanningsetikett för övervakaren.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.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.DoubleType()
)

Exempel på härledda mått

Följande kod definierar ett anpassat mått som beräknar kvadratroten för måttet squared_avg som definierades tidigare i det här avsnittet. Eftersom det här är ett härlett mått refererar det inte till de primära tabelldata och definieras i stället i termer av squared_avg det aggregerade måttet. Utdata sparas som en ny kolumn i tabellen profilmått.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="derived",
  name="root_mean_square",
  input_columns=["f1", "f2"],
  definition="sqrt(squared_avg)",
  output_data_type=T.DoubleType())

Exempel på driftmått

Följande kod definierar ett driftmått som spårar ändringen i måttet weighted_error som definierades tidigare i det här avsnittet. Parametrarna {{current_df}} och {{base_df}} gör att måttet weighted_error kan referera till värdena från det aktuella fönstret och jämförelsefönstret. Jämförelsefönstret kan vara antingen baslinjedata eller data från föregående tidsperiod. Driftmått sparas i tabellen driftmått.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="drift",
  name="error_rate_delta",
  input_columns=[":table"],
  definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
  output_data_type=T.DoubleType()
)