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.Metric
API-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 , derived of 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 f2
wordt 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 True
een 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()
)