Share via


Övervaka måtttabeller

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

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 av output_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 <= 10och 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 och prediction_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 och InferenceLog 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önstret 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, recalloch f1_score:

Kolumnnamn Typ
Fönstret 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önstret 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.