Övervaka måtttabeller
Den här sidan beskriver de måtttabeller som skapats av Databricks Lakehouse Monitoring. Information om instrumentpanelen som skapats av en övervakare finns i Använda den genererade SQL-instrumentpanelen.
När en övervakare körs i en Databricks-tabell skapas eller uppdateras två måtttabeller: en tabell med profilmått och en tabell med driftmått.
- Tabellen profilmått innehåller sammanfattningsstatistik för varje kolumn och för varje kombination av tidsfönster, segment och grupperingskolumner. För
InferenceLog
analys innehåller analystabellen även mått för modellnoggrannhet. - Tabellen driftmått innehåller statistik som spårar ändringar i distributionen för ett mått. Drifttabeller kan användas för att visualisera eller avisera om ändringar i data i stället för specifika värden. Följande typer av drift beräknas:
- På varandra följande drift jämför ett fönster med föregående tidsfönster. På varandra följande drift beräknas endast om det finns ett på varandra följande tidsfönster efter aggregering enligt de angivna kornigheterna.
- Baslinjeavvikelse jämför ett fönster med baslinjefördelningen som bestäms av baslinjetabellen. Baslinjeavvikelse beräknas endast om en baslinjetabell tillhandahålls.
Där måtttabeller finns
Övervaka måtttabeller sparas i {output_schema}.{table_name}_profile_metrics
och {output_schema}.{table_name}_drift_metrics
, där:
-
{output_schema}
är katalogen och schemat som anges avoutput_schema_name
. -
{table_name}
är namnet på tabellen som övervakas.
Så här beräknas övervakningsstatistik
Varje statistik och mått i måtttabellerna beräknas för ett angivet tidsintervall (kallas "fönster"). För Snapshot
analys är tidsfönstret en enskild tidpunkt som motsvarar den tid då måttet uppdaterades. För TimeSeries
och InferenceLog
analys baseras tidsfönstret på de kornigheter som anges i create_monitor
och värdena i det timestamp_col
angivna i profile_type
argumentet.
Mått beräknas alltid för hela tabellen. Om du anger ett segmenteringsuttryck beräknas dessutom mått för varje datasektor som definieras av uttryckets värde.
Till exempel:
slicing_exprs=["col_1", "col_2 > 10"]
genererar följande sektorer: en för col_2 > 10
, en för col_2 <= 10
och en för varje unikt värde i col1
.
Segment identifieras i måtttabellerna med kolumnnamnen slice_key
och slice_value
. I det här exemplet skulle en sektornyckel vara "col_2 > 10" och motsvarande värden skulle vara "true" och "false". Hela tabellen motsvarar slice_key
= NULL och slice_value
= NULL. Segment definieras av en enda sektornyckel.
Mått beräknas för alla möjliga grupper som definieras av tidsfönster och segmentnycklar och värden. För analys beräknas dessutom InferenceLog
mått för varje modell-ID. Mer information finns i Kolumnscheman för genererade tabeller.
Ytterligare statistik för övervakning av modellnoggrannhet (InferenceLog
endast analys)
Ytterligare statistik beräknas för InferenceLog
analys.
- Modellkvalitet beräknas om både
label_col
ochprediction_col
tillhandahålls. - Segment skapas automatiskt baserat på distinkta värden för
model_id_col
. - För klassificeringsmodeller beräknas rättvise- och biasstatistik för sektorer som har ett booleskt värde.
Tabeller för frågeanalys och driftmått
Du kan köra frågor mot måtttabellerna direkt. Följande exempel baseras på InferenceLog
analys:
SELECT
window.start, column_name, count, num_nulls, distinct_count, frequent_items
FROM census_monitor_db.adult_census_profile_metrics
WHERE model_id = 1 — Constrain to version 1
AND slice_key IS NULL — look at aggregate metrics over the whole data
AND column_name = "income_predicted"
ORDER BY window.start
Kolumnscheman för genererade tabeller
För varje kolumn i den primära tabellen innehåller måtttabellerna en rad för varje kombination av grupperingskolumner. Kolumnen som är associerad med varje rad visas i kolumnen column_name
.
För mått som baseras på mer än en kolumn, till exempel mått för modellnoggrannhet, column_name
anges till :table
.
För profilmått används följande grupperingskolumner:
- tidsfönster
- granularitet (
TimeSeries
ochInferenceLog
endast analys) - loggtyp – indatatabell eller baslinjetabell
- segmentnyckel och värde
- modell-ID (
InferenceLog
endast analys)
För driftmått används följande ytterligare grupperingskolumner:
- jämförelsetidsfönster
- drifttyp (jämförelse med föregående fönster eller jämförelse med baslinjetabell)
Scheman för måtttabellerna visas nedan och visas även i referensdokumentationen för Databricks Lakehouse Monitoring API.
Tabellschema för profilmått
I följande tabell visas schemat för tabellen med profilmått. Om ett mått inte är tillämpligt på en rad är motsvarande cell null.
Kolumnnamn | Typ | Beskrivning |
---|---|---|
Gruppera kolumner | ||
fönster | Struct. Se [1] nedan. | Tidsfönster. |
Granularitet | sträng | Fönstervaraktighet, angiven efter granularities parameter. [2] |
model_id_col | sträng | Valfritt. Används endast för InferenceLog analystyp. |
log_type | sträng | Tabell som används för att beräkna mått. BASLINJE eller INDATA. |
slice_key | sträng | Utsnittsuttryck. NULL som standard, vilket är alla data. |
slice_value | sträng | Värdet för segmenteringsuttrycket. |
column_name | sträng | Namnet på kolumnen i den primära tabellen.
:table är ett särskilt namn för mått som gäller för hela tabellen, till exempel modellnoggrannhet. |
data_type | sträng | Spark-datatypen för column_name . |
logging_table_commit_version | heltal | Ignore (Ignorera). |
monitor_version | bigint | Version av övervakningskonfigurationen som används för att beräkna måtten på raden. Mer information finns i [3] nedan. |
Måttkolumner – sammanfattningsstatistik | ||
antal | bigint | Antal värden som inte är null. |
num_nulls | bigint | Antal null-värden i column_name . |
medel | dubbel | Aritmetiskt medelvärde för kolumnen, som ingorerar nullvärden. |
quantiles | array<double> |
Matris med 1 000 quantiles. Se [4] nedan. |
distinct_count | bigint | Antal distinkta värden i column_name . |
min | dubbel | Minsta värde i column_name . |
max | dubbel | Maximalt värde i column_name . |
stddev | dubbel | Standardavvikelse för column_name . |
num_zeros | bigint | Antal nollor i column_name . |
num_nan | bigint | Antal NaN-värden i column_name . |
min_size | dubbel | Minsta storlek på matriser eller strukturer i column_name . |
max_size | dubbel | Maximal storlek på matriser eller strukturer i column_name . |
avg_size | dubbel | Genomsnittlig storlek på matriser eller strukturer i column_name . |
min_len | dubbel | Minsta längd på sträng- och binärvärden i column_name . |
max_len | dubbel | Maximal längd på sträng- och binärvärden i column_name . |
avg_len | dubbel | Genomsnittlig längd på sträng- och binärvärden i column_name . |
frequent_items | Struct. Se [1] nedan. | De 100 vanligaste objekten. |
non_null_columns | array<string> |
Lista över kolumner med minst ett värde som inte är null. |
median | dubbel | Medianvärdet för column_name . |
percent_null | dubbel | Procent av null-värden i column_name . |
percent_zeros | dubbel | Procent av värden som är noll i column_name . |
percent_distinct | dubbel | Procent av värden som är distinkta i column_name . |
Måttkolumner – noggrannhet för klassificeringsmodell [5] | ||
accuracy_score | dubbel | Modellens noggrannhet, beräknad som (antal korrekta förutsägelser/totalt antal förutsägelser), ignorerar null-värden. |
confusion_matrix | Struct. Se [1] nedan. | |
precision | Struct. Se [1] nedan. | |
återkallande | Struct. Se [1] nedan. | |
f1_score | Struct. Se [1] nedan. | |
Måttkolumner – regressionsmodellprecision [5] | ||
mean_squared_error | dubbel | Genomsnittligt kvadratfel mellan prediction_col och label_col . |
root_mean_squared_error | dubbel | Rot mean squared error between prediction_col och label_col . |
mean_average_error | dubbel | Genomsnittligt genomsnittsfel mellan prediction_col och label_col . |
mean_absolute_percentage_error | dubbel | Genomsnittligt absolut procentfel mellan prediction_col och label_col . |
r2_score | dubbel | R-kvadratpoäng mellan prediction_col och label_col . |
Måttkolumner – rättvisa och bias [6] | ||
predictive_parity | dubbel | Mäter om de två grupperna har samma precision i alla förutsagda klasser.
label_col måste anges. |
predictive_equality | dubbel | Mäter om de två grupperna har samma falska positiva frekvens i alla förutsagda klasser.
label_col måste anges. |
equal_opportunity | dubbel | Mäter om de två grupperna har samma träffsäkerhet i alla förutsagda klasser.
label_col måste anges. |
statistical_parity | dubbel | Mäter om de två grupperna har samma acceptansfrekvens. Acceptansfrekvensen här definieras som den empiriska sannolikheten som ska förutsägas som en viss klass i alla förutsagda klasser. |
[1] Format för struct för confusion_matrix
, precision
, recall
och f1_score
:
Kolumnnamn | Typ |
---|---|
fönster | struct<start: timestamp, end: timestamp> |
frequent_items | array<struct<item: string, count: bigint>> |
confusion_matrix | struct<prediction: string, label: string, count: bigint> |
precision | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
återkallande | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
f1_score | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
[2] För tidsserie- eller slutsatsdragningsprofiler ser övervakaren tillbaka 30 dagar från det att övervakaren skapas. På grund av den här brytningen kan den första analysen innehålla ett partiellt fönster. Till exempel kan gränsen på 30 dagar falla i mitten av en vecka eller månad, i vilket fall hela veckan eller månaden inte ingår i beräkningen. Det här problemet påverkar bara det första fönstret.
[3] Den version som visas i den här kolumnen är den version som användes för att beräkna statistiken på raden och kanske inte är den aktuella versionen av övervakaren. Varje gång du uppdaterar måtten försöker övervakaren räkna om tidigare beräknade mått med den aktuella övervakningskonfigurationen. Den aktuella övervakningsversionen visas i övervakningsinformationen som returneras av API:et och Python-klienten.
[4] Exempelkod för att hämta den 50:e percentilen: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ...
eller SELECT quantiles[500] ...
.
[5] Visas endast om övervakaren har InferenceLog
analystyp och båda label_col
och prediction_col
tillhandahålls.
[6] Visas endast om övervakaren har InferenceLog
analystypen och problem_type
är classification
.
Tabellschema för driftmått
I följande tabell visas schemat för tabellen med driftmått. Drifttabellen genereras endast om en baslinjetabell tillhandahålls eller om det finns ett på varandra följande tidsfönster efter aggregering enligt de angivna kornigheterna.
Kolumnnamn | Typ | Beskrivning |
---|---|---|
Gruppera kolumner | ||
fönster | struct<start: timestamp, end: timestamp> |
Tidsfönster. |
window_cmp | struct<start: timestamp, end: timestamp> |
Jämförelsefönster för drift_type CONSECUTIVE . |
drift_type | sträng | BASLINJE ELLER PÅ VARANDRA FÖLJANDE. Om driftmåtten jämförs med föregående tidsfönster eller baslinjetabellen. |
Granularitet | sträng | Fönstervaraktighet, angiven efter granularities parameter. [7] |
model_id_col | sträng | Valfritt. Används endast för InferenceLog analystyp. |
slice_key | sträng | Utsnittsuttryck. NULL som standard, vilket är alla data. |
slice_value | sträng | Värdet för segmenteringsuttrycket. |
column_name | sträng | Namnet på kolumnen i den primära tabellen.
:table är ett särskilt namn för mått som gäller för hela tabellen, till exempel modellnoggrannhet. |
data_type | sträng | Spark-datatypen för column_name . |
monitor_version | bigint | Version av övervakningskonfigurationen som används för att beräkna måtten på raden. Mer information finns i [8] nedan. |
Måttkolumner – drift | Skillnader beräknas som aktuellt fönster – jämförelsefönster. | |
count_delta | dubbel | Skillnad i count . |
avg_delta | dubbel | Skillnad i avg . |
percent_null_delta | dubbel | Skillnad i percent_null . |
percent_zeros_delta | dubbel | Skillnad i percent_zeros . |
percent_distinct_delta | dubbel | Skillnad i percent_distinct . |
non_null_columns_delta | struct<added: int, missing: int> |
Antal kolumner med en ökning eller minskning av icke-null-värden. |
chi_squared_test | struct<statistic: double, pvalue: double> |
Chi-square test för drift i distribution. |
ks_test | struct<statistic: double, pvalue: double> |
KS-test för drift i distribution. Beräknas endast för numeriska kolumner. |
tv_distance | dubbel | Totalt variantavstånd för avdrift i distributionen. |
l_infinity_distance | dubbel | L-oändligt avstånd för drift i distribution. |
js_distance | dubbel | Jensen–Shannon avstånd för drift i distribution. Beräknas endast för kategoriska kolumner. |
wasserstein_distance | dubbel | Glida mellan två numeriska distributioner med hjälp av måttet Wasserstein-avstånd. |
population_stability_index | dubbel | Mått för att jämföra avvikelsen mellan två numeriska fördelningar med hjälp av måttet för befolkningsstabilitetsindex. Mer information finns i [9] nedan. |
[7] För tidsserie- eller slutsatsdragningsprofiler ser övervakaren tillbaka 30 dagar från det att övervakaren skapas. På grund av den här brytningen kan den första analysen innehålla ett partiellt fönster. Till exempel kan gränsen på 30 dagar falla i mitten av en vecka eller månad, i vilket fall hela veckan eller månaden inte ingår i beräkningen. Det här problemet påverkar bara det första fönstret.
[8] Den version som visas i den här kolumnen är den version som användes för att beräkna statistiken på raden och kanske inte är den aktuella versionen av övervakaren. Varje gång du uppdaterar måtten försöker övervakaren räkna om tidigare beräknade mått med den aktuella övervakningskonfigurationen. Den aktuella övervakningsversionen visas i övervakningsinformationen som returneras av API:et och Python-klienten.
[9] Utdata från populationens stabilitetsindex är ett numeriskt värde som representerar hur olika två fördelningar är. Intervallet är [0, inf). PSI < 0.1 innebär ingen betydande befolkningsförändring. PSI < 0.2 anger måttlig befolkningsförändring. PSI >= 0,2 indikerar betydande befolkningsförändring.