Dela via


Ö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 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önster Struktur Se [1] nedan. Tidsfönster.
Granularitet sträng Fönstervaraktighet, angiven efter granularities parameter. [2]
modell_id_kol sträng Valfritt. Används endast för InferenceLog analystyp.
loggtyp 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.
skärvärde sträng Värdet för segmenteringsuttrycket.
kolumnnamn 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.
datatyp sträng Spark-datatypen för column_name.
logging_table_commit_version heltal Ignore (Ignorera).
övervaka_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.
antal_nollor Bigint Antal null-värden i column_name.
medel dubbel Aritmetiskt medelvärde för kolumnen, som ingorerar nullvärden.
kvantiler array<double> Matris med 1 000 quantiles. Se [4] nedan.
unik_antal Bigint Ungefärligt antal distinkta värden i column_name. Detta använder approx_count_distinct funktionen, så resultatet kanske inte är exakt.
minut dubbel Minsta värde i column_name.
maximalt dubbel Maximalt värde i column_name.
stddev dubbel Standardavvikelse för column_name.
antal_nollor Bigint Antal nollor i column_name.
num_nan Bigint Antal NaN-värden i column_name.
min_storlek dubbel Minsta storlek på matriser eller strukturer i column_name.
maxstorlek dubbel Maximal storlek på matriser eller strukturer i column_name.
genomsnittlig storlek dubbel Genomsnittlig storlek på matriser eller strukturer i column_name.
minimilängd dubbel Minsta längd på sträng- och binärvärden i column_name.
maximal_längd 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.
frekventa objekt Struktur Se [1] nedan. De 100 vanligaste objekten.
ej_null_kolumner array<string> Lista över kolumner med minst ett värde som inte är null.
median dubbel Medianvärdet för column_name.
andel_null dubbel Procent av null-värden i column_name.
procent_nollor dubbel Procent av värden som är noll i column_name.
procent_distinkt dubbel Procent av värden som är distinkta i column_name.
Måttkolumner – noggrannhet för klassificeringsmodell [5]
noggrannhetspoäng dubbel Modellens noggrannhet, beräknad som (antal korrekta förutsägelser/totalt antal förutsägelser), ignorerar null-värden.
förvirringsmatris Struktur Se [1] nedan.
precision Struktur Se [1] nedan.
återkallande Struktur Se [1] nedan.
F1-poäng Struktur Se [1] nedan.
Måttkolumner – regressionsmodellprecision [5]
medelkvadratfel dubbel Genomsnittligt kvadratfel mellan prediction_col och label_col.
rotmedelkvadratfel dubbel Rot mean squared error between prediction_col och label_col.
medelfel dubbel Genomsnittligt genomsnittsfel mellan prediction_col och label_col.
medelabsolut procentfel dubbel Genomsnittligt absolut procentfel mellan prediction_col och label_col.
R²-värde dubbel R-kvadratpoäng mellan prediction_col och label_col.
Måttkolumner – rättvisa och bias [6]
prediktiv_paritet dubbel Mäter om de två grupperna har samma precision i alla förutsagda klasser. label_col måste anges.
prediktiv jämlikhet dubbel Mäter om de två grupperna har samma falska positiva frekvens i alla förutsagda klasser. label_col måste anges.
lika möjlighet dubbel Mäter om de två grupperna har samma träffsäkerhet i alla förutsagda klasser. label_col måste anges.
statistisk paritet 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önster struct<start: timestamp, end: timestamp>
frekventa objekt array<struct<item: string, count: bigint>>
förvirringsmatris 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-poäng 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. Om ett mått inte är tillämpligt på en rad är motsvarande cell null.

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.
driftstyp 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]
modell_id_kol sträng Valfritt. Används endast för InferenceLog analystyp.
slice_key sträng Utsnittsuttryck. NULL som standard, vilket är alla data.
skärvärde sträng Värdet för segmenteringsuttrycket.
kolumnnamn 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.
datatyp sträng Spark-datatypen för column_name.
övervaka_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.
Procent_noll_delta dubbel Skillnad i percent_null.
percent_nollor_delta dubbel Skillnad i percent_zeros.
procent_distinkt_delta dubbel Skillnad i percent_distinct.
icke_null_kolumner_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. Beräknas endast för kategoriska kolumner. null för numeriska kolumner.
ks_test struct<statistic: double, pvalue: double> KS-test för drift i distribution. Beräknas endast för numeriska kolumner. null för kategoriska kolumner.
tv-avstånd dubbel Totalt variantavstånd för avdrift i distributionen. Beräknas endast för kategoriska kolumner. null för numeriska kolumner.
l-infinity-avstånd dubbel L-oändligt avstånd för drift i distribution. Beräknas endast för kategoriska kolumner. null för numeriska kolumner.
js_distance dubbel Jensen–Shannon avstånd för drift i distribution. Beräknas endast för kategoriska kolumner. null för numeriska kolumner.
wasserstein_distance dubbel Glida mellan två numeriska distributioner med hjälp av måttet Wasserstein-avstånd. Beräknas endast för numeriska kolumner. null för kategoriska kolumner.
befolkningsstabilitetsindex 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. Beräknas endast för numeriska kolumner. null för kategoriska kolumner.

[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.