- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$CLUSTERING_INFORMATION¶
Gibt Clustering-Informationen, einschließlich der durchschnittlichen Clustering-Tiefe, für eine Tabelle auf Basis von einer oder mehreren Spalten der Tabelle zurück.
- Siehe auch:
Syntax¶
SYSTEM$CLUSTERING_INFORMATION( '<table_name>'
[ , { '( <expr1> [ , <expr2> ... ] )' | <number_of_errors> } ] )
Argumente¶
table_name
Tabelle, für die Sie Clustering-Informationen zurückgeben möchten.
(expr1 [ , expr2 ... ])
Spaltennamen oder Ausdrücke, für die Clustering-Informationen zurückgegeben werden:
Für eine Tabelle ohne Gruppierungsschlüssel ist dieses Argument erforderlich. Wenn das Argument nicht angegeben wird, wird ein Fehler zurückgegeben.
Bei einer Tabelle mit Gruppierungsschlüssel ist dieses Argument optional. Wenn das Argument weggelassen wird, nutzt Snowflake zur Rückgabe der Clustering-Informationen den definierten Gruppierungsschlüssel.
Auch wenn nur ein Spaltenname oder Ausdruck übergeben wird, muss dieser in Klammern gesetzt sein.
Bemerkung
Sie können mit diesem Argument Clustering-Informationen für beliebige Spalten in der Tabelle zurückgeben unabhängig davon, ob für die Tabelle ein Gruppierungsschlüssel definiert ist.
Mit anderen Worten, Sie können dies verwenden, um zu entscheiden, welches Clustering in Zukunft verwendet werden soll.
number_of_errors
Anzahl der von der Funktion zurückgegebenen Clustering-Fehler. Wenn dieses Argument weggelassen wird, werden die letzten 10 Fehler zurückgegeben.
Nutzungshinweise¶
Das zweite Argument der Funktion gibt einen Spaltennamen/Ausdruck oder eine Anzahl von Fehlern an. Sie können nicht beide Argumente in einem einzigen Funktionsaufruf verwenden.
Tabellenname, Spaltenname und Ausdruck sind Zeichenfolgen, die in einfache Anführungszeichen gesetzt werden müssen.
Ausgabe¶
Die Funktion gibt einen Wert vom Typ VARCHAR zurück.
Die zurückgegebene Zeichenfolge ist im JSON-Format und enthält die folgenden Name/Wert-Paare:
cluster_by_keys
Spalten in der Tabelle, die zur Rückgabe von Clustering-Informationen verwendet werden. Es kann sich um beliebige Spalten in der Tabelle handeln.
notes
Diese Spalte kann Vorschläge enthalten, um das Clustering effizienter zu gestalten. Dieses Feld kann beispielsweise eine Warnung enthalten, wenn die Kardinalität der Clustering-Spalte extrem hoch ist.
Diese Spalte kann leer sein.
Weitere Informationen zum effizienten Clustering finden Sie unter Strategien zur Auswahl von Gruppierungsschlüsseln.
total_partition_count
Gesamtzahl der Mikropartitionen, aus denen die Tabelle besteht.
total_constant_partition_count
Gesamtzahl der Mikropartitionen, für die der Wert der angegebenen Spalten einen konstanten Status erreicht hat (d. h. die Mikropartitionen profitieren von Reclustering nicht wesentlich). Die Anzahl konstanter Mikropartitionen in einer Tabelle hat Auswirkungen auf das Bereinigen von Abfragen. Je höher die Anzahl ist, desto mehr Mikropartitionen können aus für die Tabelle ausgeführten Abfragen bereinigt werden, was sich entsprechend auf die Leistung auswirkt.
average_overlaps
Durchschnittliche Anzahl sich überlappender Mikropartitionen für jede Mikropartition in der Tabelle. Eine hohe Zahl weist darauf hin, dass das Clustering der Tabelle nicht effizient ist.
average_depth
Mittlere Überlappungstiefe der einzelnen Mikropartitionen in der Tabelle. Eine hohe Zahl weist darauf hin, dass das Clustering der Tabelle nicht effizient ist.
Dieser Wert wird auch von SYSTEM$CLUSTERING_DEPTH zurückgegeben.
partition_depth_histogram
Ein Histogramm, das die Verteilung der Überlappungstiefe für die einzelnen Mikropartitionen in der Tabelle darstellt. Das Histogramm enthält Buckets mit Breiten:
0
bis16
in Inkrementen von1
.Bei Buckets, die größer als
16
sind, Inkremente mit doppelter Breite des vorherigen Buckets (z. B.32
,64
,128
, …).
clustering_errors
Ein Array von JSON-Objekten, jeweils mit
timestamp
underror
-Name/Wert-Paar.error
beschreibt, warum das automatische Clustering nicht in der Lage war, die Daten neu zu clustern.Standardmäßig werden von der Funktion die letzten 10 Fehler zurückgegeben. Um mehr oder weniger Fehler zurückzugeben, geben Sie als zweites Argument der Funktion die Anzahl an.
Weitere Informationen zu Überlappung und Tiefe von Mikropartitionen sowie deren Auswirkungen auf die Abfragebereinigung finden Sie unter Grundlegendes zu Tabellenstrukturen in Snowflake.
Beispiele¶
Zurückgeben der letzten 5 Clustering-Fehler:
SELECT SYSTEM$CLUSTERING_INFORMATION('t1', 5);
Zurückgeben der Clustering-Informationen für eine Tabelle mit zwei Spalten in der Tabelle:
SELECT SYSTEM$CLUSTERING_INFORMATION('test2', '(col1, col3)');+--------------------------------------------------------------------+ | SYSTEM$CLUSTERING_INFORMATION('TEST2', '(COL1, COL3)') | |--------------------------------------------------------------------| | { | | "cluster_by_keys" : "LINEAR(COL1, COL3)", | | "total_partition_count" : 1156, | | "total_constant_partition_count" : 0, | | "average_overlaps" : 117.5484, | | "average_depth" : 64.0701, | | "partition_depth_histogram" : { | | "00000" : 0, | | "00001" : 0, | | "00002" : 3, | | "00003" : 3, | | "00004" : 4, | | "00005" : 6, | | "00006" : 3, | | "00007" : 5, | | "00008" : 10, | | "00009" : 5, | | "00010" : 7, | | "00011" : 6, | | "00012" : 8, | | "00013" : 8, | | "00014" : 9, | | "00015" : 8, | | "00016" : 6, | | "00032" : 98, | | "00064" : 269, | | "00128" : 698 | | }, | | "clustering_errors" : [ { | | "timestamp" : "2023-04-03 17:50:42 +0000", | | "error" : "(003325) Clustering service has been disabled.\n" | | } | | ] | | } | +--------------------------------------------------------------------+Dieses Beispiel zeigt, dass die
test2
-Tabelle aus folgenden Gründen nicht gut gruppiert ist:
Null (
0
) konstante Mikropartitionen von insgesamt1156
Mikropartitionen.Hoher Durchschnitt an überlappenden Mikropartitionen.
Hoher Durchschnitt der Überlappungstiefe zwischen Mikropartitionen.
Die meisten Mikropartitionen sind am unteren Ende des Histogramms gruppiert, wobei die Mehrzahl der Mikropartitionen eine Überlappungstiefe zwischen
64
und128
aufweist.Automatisches Clustering war zuvor deaktiviert.
Einschränkungen¶
Wenn eine Tabelle mehr als 2 Millionen Partitionen hat:
Die Ergebnisse der Funktion basieren auf einer Teilmenge der Partitionen der Tabelle.
Der Wert des Ausgabefeldes
total_partition_count
ist 2 Millionen.