Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:✅ Fabric Data Engineering und Data Science
Automatisierte Tabellenstatistiken in Microsoft Fabric helfen Spark, die Abfrageausführung zu optimieren, indem Tabellen- und Spaltenmetriken für Delta-Tabellen automatisch gesammelt werden.
- Zeilenanzahl.
- Nullanzahl pro Spalte.
- Mindest- und Maximalwerte pro Spalte.
- Unterschiedliche Werte zählen pro Spalte.
- Durchschnittliche und maximale Spaltenlänge.
Standardmäßig werden diese erweiterten Statistiken für die ersten 32 Spalten (einschließlich geschachtelter Spalten) von Delta-Tabellen in Fabric gesammelt. Diese Daten helfen Sparks kostenbasiertem Optimierer (CBO), die Planung für Verknüpfungen, Filter, Aggregationen und Partitionspruning zu verbessern.
Daher können viele Workloads die Abfragelatenz reduzieren und die Berechnungsauslastung mit weniger manueller Statistikwartung reduzieren.
Für arbeitsübergreifende Anleitungen zu Strategien zur Tabellenoptimierung siehe "Auslastungsübergreifende Tabellenwartung und -optimierung".
Hauptvorteile
Automatisierte Statistiken bieten die folgenden Vorteile:
- Wird automatisch für Delta-Tabellen in Fabric aktiviert.
- Verbessert die Qualität der Abfrageplanung für allgemeine Analysemuster.
- Reduziert den Bedarf an wiederholten manuellen Statistiken.
- Speichert Statistiken außerhalb von Tabellendatendateien, um die Aufblähung von Datendateien zu vermeiden.
Funktionsweise
Fabric Spark sammelt erweiterte Statistiken zur Schreibzeit und verwendet sie während der Planung.
Sammlungsbereich und -verhalten:
- Statistiken werden zur Schreibzeit gesammelt.
- Die Sammlung zielt auf die ersten 32 Spalten (einschließlich geschachtelter Spalten) ab.
- Tabelleneigenschaften können das Verhalten auf Sitzungsebene außer Kraft setzen.
- Die Konfiguration steuert, ob Spark Statistiken in den Optimierer einjiziert.
Diese Metriken helfen Spark bei der Auswahl besserer Verknüpfungsstrategien, verbessern die Partitions pruning und optimieren Aggregationspläne.
Aktivieren oder Deaktivieren der Statistiksammlung
Verwenden Sie entweder die Sitzungseinstellungen (Arbeitsbereich oder Notizbuch) oder die Tabelleneigenschaften (Bereich pro Tabelle).
Sitzungskonfiguration
Sie können erweiterte Statistikensammlung und Optimierereinfügung auf Sitzungsebene aktivieren oder deaktivieren.
Diese Einstellungen können über Spark SQL, PySpark oder Scala Spark angewendet werden.
Führen Sie die folgenden Spark SQL-Anweisungen aus, um die Sammlung und Optimierereinfügung zu steuern:
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;
Hinweis
Die Delta-Protokollstatistiksammlung (spark.databricks.delta.stats.collect) muss ebenfalls aktiviert sein (Standard: true).
Tabelleneigenschaften (Sitzungseinstellungen außer Kraft setzen)
Mithilfe von Tabelleneigenschaften können Sie die Sammlung von Statistiken für einzelne Tabellen steuern und Sitzungseinstellungen überschreiben.
Aktivieren sie in einer Tabelle:
ALTER TABLE tableName
SET TBLPROPERTIES(
'delta.stats.extended.collect' = 'true',
'delta.stats.extended.inject' = 'true'
)
Deaktivieren sie in einer Tabelle:
ALTER TABLE tableName
SET TBLPROPERTIES(
'delta.stats.extended.collect' = 'false',
'delta.stats.extended.inject' = 'false'
)
Standardverhalten der Tabellenerstellung
Verwenden Sie diese Einstellung auf Sitzungsebene, um das automatische Stempeln erweiterter Tabelleneigenschaften für erweiterte Statistiken zu deaktivieren, wenn neue Tabellen erstellt werden.
Verwenden Sie diese Spark SQL-Anweisung, um die automatische Einstellung bei der Tabellenerstellung zu deaktivieren:
SET spark.microsoft.delta.stats.collect.extended.property.setAtTableCreation=false;
Überprüfen von Statistiken
Sie können die gesammelten Tabellen- und Spaltenstatistiken mithilfe der SPARK-APIs überprüfen– nützlich für das Debuggen oder überprüfen.
Überprüfen der Zeilenanzahl und Tabellengröße (Scala-Beispiel):
println(spark.read.table("tableName").queryExecution.optimizedPlan.stats)
Detaillierte Spaltenstatistiken überprüfen:
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}")
}
Neukompilieren von Statistiken
Statistiken können nach Schemaänderungen oder teilweisen Aktualisierungen veraltet werden. Verwenden Sie einen der folgenden Ansätze, um neu zu berechnen.
Schreiben Sie die Tabelle neu (Hinweis: dies setzt den Verlauf zurück).
spark.read.table("targetTable").write.partitionBy("partCol").mode("overwrite").saveAsTable("targetTable")
Empfohlener Ansatz (Fabric Spark >= 3.2.0.19):
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Wenn sich das Schema ändert (z. B. Hinzufügen/Ablegen von Spalten), müssen Sie alte Statistiken entfernen, bevor Sie neu komputieren:
StatisticsStore.removeStatisticsData(spark, "testTable1")
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
VERWENDE ANALYSETABELLE
Verwenden Sie ANALYZE TABLE diese Vorgehensweise, wenn Sie Statistiken in allen Spalten manuell aktualisieren möchten.
Führen Sie den folgenden Befehl aus:
Führen Sie die folgende Spark SQL-Anweisung aus:
ANALYZE TABLE tableName COMPUTE STATISTICS FOR ALL COLUMNS
Katalogstatistikeinfügung aktivieren:
Verwenden Sie diese Spark SQL-Anweisungen, um die Einfügung von Katalogstatistiken zu aktivieren oder zu deaktivieren:
SET spark.microsoft.delta.stats.injection.catalog.enabled=true;
SET spark.microsoft.delta.stats.injection.catalog.enabled=false;
Einschränkungen
Es ist wichtig, die aktuellen Einschränkungen der automatisierten Statistiken von Fabric zu verstehen, damit Sie entsprechend planen können.
- Statistiken werden nur zur Schreibzeit erfasst.
- Updates von anderen Engines werden nicht automatisch aggregiert.
- Nur die ersten 32 Spalten sind enthalten (einschließlich geschachtelter Spalten).
- Lösch- und Aktualisierungen können Statistiken veraltet machen.
- Für Neuberechnen ist ein Neuschreiben oder Statistik-API-Vorgang erforderlich.
- Die Statistikeinfügung gilt nicht für geschachtelte Spalten.
- In einigen Workloads können veraltete oder unvollständige Statistiken zu Regressionen führen.
-
ANALYZE TABLEDer Support ist aufFOR ALL COLUMNS. - Spaltenreihenfolge oder Konfigurationsänderungen können eine vollständige Aktualisierung erfordern.