Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:✅ Datenengineering und Datenwissenschaft in Microsoft Fabric
Automatisierte Tabellenstatistiken in Microsoft Fabric helfen Spark beim Optimieren der Abfrageausführung, indem sie automatisch detaillierte Metriken auf Tabellenebene sammelt. Diese Statistiken umfassen:
- Gesamtzahl der Zeilen
- Nullanzahl pro Spalte
- Mindest- und Maximalwerte pro Spalte
- Unterschiedliche Werteanzahl pro Spalte
- Durchschnittliche und maximale Spaltenlänge
Standardmäßig werden diese erweiterten Statistiken für die ersten 32 Spalten (einschließlich geschachtelter Spalten) jeder in Fabric erstellten Delta-Tabelle erfasst. Die gesammelten Daten helfen Sparks kostenbasiertem Optimierer (CBO), die Abfrageplanung für Verknüpfungen, Filter, Aggregationen und Partitions pruning zu verbessern.
Daher können Workloads Verbesserungen der Leistung verzeichnen und eine reduzierte Ressourcenauslastung erleben – alles ohne manuelle ANALYZE TABLE Ausführung oder komplexe Konfiguration.
Wichtige Vorteile
In diesem Abschnitt wird zusammengefasst, warum automatisierte Tabellenstatistiken für Ihre Workloads wichtig sind.
- ~45% schnellere Leistung bei komplexen Abfragen
- Automatisch aktiviert in neuen Delta-Tabellen
- Verbessert die Abfrageplanung und reduziert die Berechnungskosten.
- Unterstützt unterschiedliche Wertanzahlen, Min/Max,Nullanzahlen und Spaltenlängenmetriken
- Gespeichert im Parquet-Format, um das Aufblähen von Datendateien zu vermeiden.
Funktionsweise
Dies geschieht im Hintergrund, wenn Fabric Spark Statistiken sammelt:
- Zeilenanzahl
- Anzahl Nullwerte pro Spalte
- Mindest- und Maximalwerte pro Spalte
- Unterschiedliche Werteanzahl pro Spalte
- Durchschnittliche und maximale Spaltenlänge
Diese Metriken helfen Spark, intelligentere Entscheidungen über die Ausführung von Abfragen zu treffen – verbesserung der Verknüpfungsstrategien, Partitions pruning und Aggregationsleistung.
Wie man aktiviert oder deaktiviert
Erfahren Sie, wie Sie die automatisierte Statistiksammlung mithilfe von Spark-Sitzungskonfigurationen oder Tabelleneigenschaften steuern.
Sitzungskonfiguration
Sie können erweiterte Statistikensammlung und Optimierereinfügung auf Sitzungsebene aktivieren oder deaktivieren.
Erweiterte Statistiksammlung aktivieren:
spark.conf.set("spark.microsoft.delta.stats.collect.extended", "true")
Erweiterte Statistiksammlung deaktivieren:
spark.conf.set("spark.microsoft.delta.stats.collect.extended", "false")
Aktivieren sie das Einfügen von Statistiken in den Abfrageoptimierer:
spark.conf.set("spark.microsoft.delta.stats.injection.enabled", "true")
Deaktivieren sie die Statistikeinfügung:
spark.conf.set("spark.microsoft.delta.stats.injection.enabled", "false")
Hinweis
Die Delta-Protokollstatistiksammlung (spark.databricks.delta.stats.collect) muss ebenfalls aktiviert sein (Standard: true).
Tabelleneigenschaften (Überschreibt Sitzungskonfigurationen)
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)
Automatische Einstellung von Tabelleneigenschaften beim Erstellen deaktivieren:
spark.conf.set("spark.microsoft.delta.stats.collect.extended.property.setAtTableCreation", "false")
So überprüfen Sie 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:
spark.read.table("tableName").queryExecution.optimizedPlan.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}")
}
Erneutes Komputieren von Statistiken
Manchmal können Statistiken veraltet oder teilweise werden , z. B. nach Schemaänderungen oder teilweisen Aktualisierungen. Sie können Statistiken mithilfe dieser Methoden neu 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")
Verwenden des BEFEHLS "ANALYSIEREN"
Der ANALYZE TABLE Befehl bietet eine manuelle Möglichkeit zum Sammeln von Statistiken über alle Spalten hinweg, ähnlich wie open-source Spark.
Führen Sie den folgenden Befehl aus:
ANALYZE TABLE tableName COMPUTE STATISTICS FOR ALL COLUMNS
Katalogstatistikeinfügung aktivieren:
spark.conf.set("spark.microsoft.delta.stats.injection.catalog.enabled", "true")
Katalogstatistikeinfügung deaktivieren:
spark.conf.unset("spark.microsoft.delta.stats.injection.catalog.enabled")
Einschränkungen
Es ist wichtig, die aktuellen Einschränkungen der automatisierten Statistiken von Fabric zu verstehen, damit Sie entsprechend planen können.
- Statistiken, die nur zur Schreibzeit gesammelt werden
- Updates oder Änderungen von anderen Engines werden nicht aggregiert
- Nur die ersten 32 Spalten sind enthalten (einschließlich geschachtelter Spalten)
- Löschungen oder Aktualisierungen können Statistiken veraltet machen
- Keine Neukompilierung , ohne die Tabelle neu zu schreiben oder die API zu verwenden
- Keine Statistikeinfügung für geschachtelte Spalten
- Kein Leistungsfallback → können Statistiken gelegentlich zu Regressionen führen.
-
ANALYZE TABLEfunktioniert nur mitFOR ALL COLUMNS - Spaltenreihenfolge oder Konfigurationsänderungen erfordern eine vollständige Neuschreibung, um Statistiken zu aktualisieren.