Delen via


Aangepaste metrische gegevens gebruiken met Databricks Lakehouse Monitoring

Belangrijk

Deze functie bevindt zich in openbare preview.

Op deze pagina wordt beschreven hoe u een aangepaste metrische waarde maakt in Databricks Lakehouse Monitoring. Naast de analyse- en driftstatistieken die automatisch worden berekend, kunt u aangepaste metrische gegevens maken. U wilt bijvoorbeeld een gewogen gemiddelde bijhouden dat een bepaald aspect van bedrijfslogica vastlegt of een aangepaste modelkwaliteitsscore gebruiken. U kunt ook aangepaste metrische driftgegevens maken die wijzigingen in de waarden in de primaire tabel bijhouden (vergeleken met de basislijn of het vorige tijdvenster).

Zie de databricks.lakehouse_monitoring.MetricAPI-naslaginformatie voor meer informatie over het gebruik van de API.

Typen aangepaste metrische gegevens

Databricks Lakehouse Monitoring bevat de volgende typen aangepaste metrische gegevens:

  • Statistische metrische gegevens, die worden berekend op basis van kolommen in de primaire tabel. Statistische metrische gegevens worden opgeslagen in de tabel met metrische gegevens van het profiel.
  • Afgeleide metrische gegevens, die worden berekend op basis van eerder berekende statistische metrische gegevens en die niet rechtstreeks gebruikmaken van gegevens uit de primaire tabel. Afgeleide metrische gegevens worden opgeslagen in de tabel met metrische gegevens van het profiel.
  • Metrische driftgegevens, waarmee eerder berekende statistische of afgeleide metrische gegevens uit twee verschillende tijdvensters of tussen de primaire tabel en de basislijntabel worden vergeleken. Metrische driftgegevens worden opgeslagen in de tabel met metrische driftgegevens.

Als u waar mogelijk afgeleide en driftgegevens gebruikt, wordt het opnieuw berekenen van de volledige primaire tabel geminimaliseerd. Alleen statistische metrische gegevens hebben toegang tot gegevens uit de primaire tabel. Afgeleide en driftgegevens kunnen vervolgens rechtstreeks worden berekend op basis van de statistische metrische waarden.

Aangepaste parameters voor metrische gegevens

Als u een aangepaste metrische waarde wilt definiëren, maakt u een Jinja-sjabloon voor een SQL-kolomexpressie. In de tabellen in deze sectie worden de parameters beschreven waarmee de metrische gegevens worden gedefinieerd en de parameters die worden gebruikt in de Jinja-sjabloon.

Parameter Beschrijving
type Een van aggregate, derivedof drift.
name Kolomnaam voor de aangepaste metrische waarde in metrische tabellen.
input_columns Lijst met kolomnamen in de invoertabel waarvoor de metrische waarde moet worden berekend. Als u wilt aangeven dat er meer dan één kolom wordt gebruikt in de berekening, gebruikt u :table. Zie de voorbeelden in dit artikel.
definition Jinja-sjabloon voor een SQL-expressie die aangeeft hoe de metrische waarde moet worden berekend. Zie Metric_definition maken.
output_data_type Spark-gegevenstype van de uitvoer van metrische gegevens.

Maken definition

De definition parameter moet één tekenreeksexpressie zijn in de vorm van een Jinja-sjabloon. Het mag geen joins of subquery's bevatten. Als u complexe definities wilt maken, kunt u Python-helperfuncties gebruiken.

De volgende tabel bevat de parameters die u kunt gebruiken om een SQL Jinja-sjabloon te maken om op te geven hoe de metrische gegevens moeten worden berekend.

Parameter Beschrijving
{{input_column}} Kolom die wordt gebruikt voor het berekenen van de aangepaste metrische gegevens.
{{prediction_col}} Kolom met ml-modelvoorspellingen. Wordt gebruikt met InferenceLog analyse.
{{label_col}} Kolom met grondwaarlabels van ML-model. Wordt gebruikt met InferenceLog analyse.
{{current_df}} Voor afwijkingen ten opzichte van het vorige tijdvenster. Gegevens uit het vorige tijdvenster.
{{base_df}} Voor afwijking in vergelijking met de basislijntabel. Basislijngegevens.

Voorbeeld van aggregatie van metrische gegevens

In het volgende voorbeeld wordt het gemiddelde van het kwadraat van de waarden in een kolom berekend en toegepast op kolommen f1 en f2. De uitvoer wordt opgeslagen als een nieuwe kolom in de tabel met metrische gegevens van het profiel en wordt weergegeven in de analyserijen die overeenkomen met de kolommen f1 en f2. De jinja-parameter {{input_column}}wordt vervangen door de toepasselijke kolomnamen.

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

De volgende code definieert een aangepaste metrische waarde waarmee het gemiddelde van het verschil tussen kolommen f1 en f2wordt berekend. In dit voorbeeld ziet u het gebruik van [":table"] in de input_columns parameter om aan te geven dat er meer dan één kolom uit de tabel wordt gebruikt in de berekening.

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

In dit voorbeeld wordt een gewogen modelkwaliteitsscore berekend. Voor waarnemingen waarbij de critical kolom is, wordt Trueeen zwaardere boete toegewezen wanneer de voorspelde waarde voor die rij niet overeenkomt met de grondwaarheid. Omdat het is gedefinieerd voor de onbewerkte kolommen (prediction en label), wordt het gedefinieerd als een aggregatiemetriek. De :table kolom geeft aan dat dit metrische gegeven wordt berekend op basis van meerdere kolommen. De Jinja-parameters {{prediction_col}} en {{label_col}} worden vervangen door de naam van de kolommen met voorspellings- en grondwaarlabels voor de monitor.

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

Voorbeeld van afgeleide metrische gegevens

De volgende code definieert een aangepaste metrische waarde waarmee de vierkantswortel wordt berekend van de squared_avg metrische waarde die eerder in deze sectie is gedefinieerd. Omdat dit een afgeleide metrische waarde is, verwijst deze niet naar de primaire tabelgegevens en wordt in plaats daarvan gedefinieerd in termen van de squared_avg statistische metrische gegevens. De uitvoer wordt opgeslagen als een nieuwe kolom in de tabel met metrische gegevens van het profiel.

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

Voorbeeld van metrische driftgegevens

De volgende code definieert een metrische afwijking die de wijziging bijhoudt in de weighted_error metrische waarde die eerder in deze sectie is gedefinieerd. Met de {{current_df}} parameters en {{base_df}} kan de metrische waarde verwijzen naar de weighted_error waarden uit het huidige venster en het vergelijkingsvenster. Het vergelijkingsvenster kan de basislijngegevens of de gegevens uit het vorige tijdvenster zijn. Metrische driftgegevens worden opgeslagen in de tabel met metrische driftgegevens.

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