Aangepaste metrische gegevens gebruiken met Databricks Lakehouse Monitoring
Op deze pagina wordt beschreven hoe u een aangepaste metriek 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 kwaliteitsscore voor modellen gebruikt. U kunt ook aangepaste driftgegevens maken waarmee wijzigingen in de waarden in de primaire tabel worden bijgehouden (vergeleken met de basislijn of het vorige tijdvenster).
Zie de API-verwijzing voor meer informatie over het gebruik van de MonitorMetric
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 gegevens uit de primaire tabel gebruiken. Afgeleide metrische gegevens worden opgeslagen in de tabel met metrische gegevens van het profiel.
- Driftmetrieken, waarmee eerder berekende statistische of afgeleide metrische gegevens uit twee verschillende tijdvensters worden vergeleken, of tussen de primaire tabel en de basislijntabel. Metrische driftgegevens worden opgeslagen in de tabel met metrische driftgegevens.
Als u afgeleide en driftgegevens gebruikt, minimaliseert u waar mogelijk de hercomputatie via de volledige primaire tabel. Alleen geaggregeerde metrische gegevens hebben toegang tot gegevens uit de primaire tabel. Afgeleide en driftgegevens kunnen vervolgens rechtstreeks worden berekend vanuit de cumulatieve 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. De tabellen in deze sectie beschrijven de parameters die de metrische gegevens definiëren en de parameters die worden gebruikt in de Jinja-sjabloon.
Parameter | Description |
---|---|
type |
Een van MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE , MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED of MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT . |
name |
Kolomnaam voor de aangepaste metrische gegevens 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 gegevens moeten worden berekend. Zie Definitie maken. |
output_data_type |
Spark-gegevenstype van de metrische uitvoer in een JSON-tekenreeksindeling. |
Scheppen definition
De definition
parameter moet één tekenreeksexpressie zijn in de vorm van een Jinja-sjabloon. Het mag geen joins of subquery's bevatten.
De volgende tabel bevat de parameters die u kunt gebruiken om een SQL Jinja-sjabloon te maken om op te geven hoe de metrische waarde moet worden berekend.
Parameter | Description |
---|---|
{{input_column}} |
Kolom die wordt gebruikt om de aangepaste metrische gegevens te berekenen. |
{{prediction_col}} |
Kolom met ML-modelvoorspellingen. Wordt gebruikt met InferenceLog analyse. |
{{label_col}} |
Kolom met ml-model grond waarheidslabels. Wordt gebruikt met InferenceLog analyse. |
{{current_df}} |
Voor drift vergeleken met het vorige tijdvenster. Gegevens uit het vorige tijdvenster. |
{{base_df}} |
Voor afwijkingen in vergelijking met de basislijntabel. Basislijngegevens. |
Voorbeeld van statistische 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 toepasselijke kolomnamen worden vervangen door de Jinja-parameter {{input_column}}
.
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(),
)
Met de volgende code wordt een aangepaste metriek gedefinieerd waarmee het gemiddelde van het verschil tussen kolommen f1
en f2
. In dit voorbeeld ziet u het gebruik van [":table"]
in de input_columns
parameter om aan te geven dat meer dan één kolom uit de tabel wordt gebruikt in de berekening.
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(),
)
In dit voorbeeld wordt een gewogen kwaliteitsscore van het model berekend. Voor waarnemingen waarbij de critical
kolom zich bevindt True
, wordt er een zwaardere boete toegewezen wanneer de voorspelde waarde voor die rij niet overeenkomt met de grondwaar. Omdat deze is gedefinieerd voor de onbewerkte kolommen (prediction
en label
), wordt deze gedefinieerd als een statistische metriek. De :table
kolom geeft aan dat deze metrische waarde 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.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(),
)
Voorbeeld van afgeleide metrische gegevens
Met de volgende code wordt een aangepaste metrische waarde gedefinieerd waarmee de vierkantswortel wordt berekend van de squared_avg
metrische waarde die eerder in deze sectie is gedefinieerd. Omdat dit een afgeleide metriek 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.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(),
)
Voorbeeld van driftgegevens
Met de volgende code wordt een driftmetriek gedefinieerd waarmee de wijziging wordt bijgehouden in de weighted_error
metrische waarde die eerder in deze sectie is gedefinieerd. Met {{current_df}}
de parameters kunnen {{base_df}}
de metrische gegevens 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.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(),
)