Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ Dataudvikler ing og datavidenskab i Microsoft Fabric
Automatiserede tabelstatistikker i Microsoft Fabric hjælper Spark med at optimere forespørgselsudførelsen ved automatisk at indsamle tabell- og kolonnemetrikker for Delta-tabeller.
- Rækketælling.
- Nultællinger pr. kolonne.
- Minimums- og maksimumsværdier pr. kolonne.
- Forskellige værdioptællinger pr. kolonne.
- Gennemsnitlige og maksimale kolonnelængder.
Som standard indsamles disse udvidede statistikker for de første 32 kolonner (inklusive indlejrede kolonner) i Delta-tabeller i Fabric. Disse data hjælper Sparks omkostningsbaserede optimeringsværktøj (CBO) med at forbedre planlægningen af joins, filtre, aggregeringer og beskæring af partitioner.
Som følge heraf kan mange arbejdsbelastninger reducere forespørgselsforsinkelse og beregningsforbrug med mindre manuel statistikvedligeholdelse.
For tværarbejdsbelastningsvejledning om tabeloptimeringsstrategier, se Tværarbejdsbelastnings tabelvedligeholdelse og optimering.
Vigtigste fordele
Automatiserede statistikker giver følgende fordele:
- Aktiveret automatisk for Delta-tabeller i Fabric.
- Forbedrer kvaliteten af forespørgselsplanlægning for almindelige analysemønstre.
- Reducerer behovet for gentagen manuel statsindsamling.
- Gemmer statistikker uden for tabeldatafiler for at undgå datafil-oppustethed.
Sådan fungerer det
Fabric Spark indsamler udvidede statistikker ved skrivetid og bruger dem under planlægningen.
Indsamlingsomfang og adfærd:
- Statistikker indsamles ved skrivetidspunktet.
- Indsamling retter sig mod de første 32 kolonner (inklusive indlejrede kolonner).
- Tabelegenskaber kan tilsidesætte sessionsniveau-adfærd.
- Konfigurationen styrer, om Spark indsætter statistik i optimeringsværktøjet.
Disse målinger hjælper Spark med at vælge bedre joinstrategier, forbedre partitionsbeskæring og optimere aggregeringsplaner.
Aktiver eller deaktiver statistikindsamling
Brug enten sessionskonfiguration (workspace eller notebook scope) eller table properties (per-table scope).
Konfiguration af session
Du kan aktivere eller deaktivere udvidet statistikindsamling og optimeringsinjektion på sessionsniveau.
Disse indstillinger kan anvendes via Spark SQL, PySpark eller Scala Spark.
Kør følgende Spark SQL-statements for at kontrollere indsamling og optimeringsinjektion:
SET spark.microsoft.delta.stats.collect.extended=true;
SET spark.microsoft.delta.stats.collect.extended=false;
SET spark.microsoft.delta.stats.injection.enabled=true;
SET spark.microsoft.delta.stats.injection.enabled=false;
Bemærk
Samlingen af deltalogstatistik (spark.databricks.delta.stats.collect) skal også aktiveres (standard: true).
Tabelegenskaber (overstyr sessionskonfiguration)
Med tabelegenskaber kan du styre statistiksamlingen for individuelle tabeller og tilsidesætte sessionsindstillinger.
Aktivér på en tabel:
ALTER TABLE tableName
SET TBLPROPERTIES(
'delta.stats.extended.collect' = 'true',
'delta.stats.extended.inject' = 'true'
)
Deaktiver i en tabel:
ALTER TABLE tableName
SET TBLPROPERTIES(
'delta.stats.extended.collect' = 'false',
'delta.stats.extended.inject' = 'false'
)
Standardadfærd ved tabeloprettelse
Brug denne sessionsniveau-indstilling til at deaktivere automatisk stempling af udvidede-statistik-tabelleegenskaber, når nye tabeller oprettes.
Brug denne Spark SQL-sætning til at deaktivere automatisk indstilling ved tabeloprettelse:
SET spark.microsoft.delta.stats.collect.extended.property.setAtTableCreation=false;
Tjek statistikker
Du kan undersøge de indsamlede tabel- og kolonnestatistikker ved hjælp af Sparks API'er – nyttige til fejlfinding eller validering.
Kontrollér rækkeantal og tabelstørrelse (Scala-eksempel):
println(spark.read.table("tableName").queryExecution.optimizedPlan.stats)
Kontrollér detaljerede kolonnestatistikker:
val stats = spark.read.table("tableName").queryExecution.optimizedPlan.stats
stats.attributeStats.foreach { case (attrName, colStat) =>
println(s"colName: $attrName distinctCount: ${colStat.distinctCount} min: ${colStat.min} max: ${colStat.max} nullCount: ${colStat.nullCount} avgLen: ${colStat.avgLen} maxLen: ${colStat.maxLen}")
}
Genberegning af statistik
Statistikker kan blive forældede efter skemaændringer eller delvise opdateringer. Brug en af følgende tilgange til at genberegne.
Omskriv tabellen (bemærk! Denne nulstillingsoversigt):
spark.read.table("targetTable").write.partitionBy("partCol").mode("overwrite").saveAsTable("targetTable")
Anbefalet fremgangsmåde (Fabric Spark >= 3.2.0.19):
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Hvis skemaet ændres (f.eks. du tilføjer/slipper kolonner), skal du fjerne gamle statistikker, før du gencomputer:
StatisticsStore.removeStatisticsData(spark, "testTable1")
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Brug ANALYZE TABLE
ANALYZE TABLE Brug den, når du vil opdatere statistikker manuelt på tværs af alle kolonner.
Kør kommandoen:
Kør følgende Spark SQL-sætning:
ANALYZE TABLE tableName COMPUTE STATISTICS FOR ALL COLUMNS
Aktivér indsprøjting af katalogstatistik:
Brug disse Spark SQL-sætninger til at aktivere eller deaktivere katalogstatistik-injektion:
SET spark.microsoft.delta.stats.injection.catalog.enabled=true;
SET spark.microsoft.delta.stats.injection.catalog.enabled=false;
Begrænsninger
Det er vigtigt at forstå de aktuelle begrænsninger i Fabric's automatiserede statistikker, så du kan planlægge i overensstemmelse hermed.
- Statistikker indsamles kun ved skrivetid.
- Opdateringer fra andre motorer aggregeres ikke automatisk.
- Kun de første 32 kolonner er inkluderet (inklusive indlejrede kolonner).
- Sletninger og opdateringer kan gøre statistikker forældede.
- Genberegning kræver en omskrivning eller statistik-API-operation.
- Statistikinjektion gælder ikke for indlejrede kolonner.
- I nogle arbejdsbelastninger kan forældede eller ufuldstændige statistikker føre til regressioner.
-
ANALYZE TABLESupporten er begrænset tilFOR ALL COLUMNS. - Kolonnerækkefølge eller konfigurationsændringer kan kræve fuld opdatering.