Kategorien:

Systemfunktionen (Systeminformationen)

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS

Gibt die geschätzten Kosten zurück, die mit der Aktivierung von Automatic Clustering für eine Tabelle verbunden sind. Mit dieser Funktion können Sie Folgendes tun:

  • Schätzen der Kosten für das erstmalige Clustering einer Tabelle.

  • Schätzen für Kosten für die Änderung des Gruppierungsschlüssels einer Tabelle.

  • Wenn möglich, Abschätzen der Kosten, die mit der Wartung der Tabelle verbunden sind, nachdem sie um den angegebenen Schlüssel geclustert wurde. Manchmal benötigt eine Tabelle mehr DML-Verlauf, um die zukünftigen Kosten für die Wartung abzuschätzen.

Wichtig

Die von der Funktion SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS zurückgegebenen Kostenschätzungen werden mit bestmöglichen Bemühungen vorgenommen. Die geschätzten Kosten können allerdings erheblich (bis zu 100 % oder in seltenen Fällen um ein Vielfaches) von den tatsächlich realisierten Kosten abweichen.

Syntax

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '' ,
 [ '(  [ ,  ... ] )' ] )
Copy

Argumente

table_name

Name der Tabelle, für die Sie die geschätzten Clustering-Kosten zurückgeben möchten.

(expr1 [ , expr2 ... ])

Der vorgeschlagene Gruppierungsschlüssel für die Tabelle ist, wo jeder Ausdruck in eine Tabellenspalte aufgelöst wird. Die Funktion schätzt die Kosten für das Clustering der Tabelle unter Verwendung dieser Spalten als Gruppierungsschlüssel.

Auch wenn nur ein Spaltenname oder Ausdruck übergeben wird, muss dieser in Klammern gesetzt sein.

Dieses Argument ist für eine Tabelle ohne Gruppierungsschlüssel erforderlich. Ein Fehler wird zurückgegeben, wenn das Argument nicht angegeben wird.

Dieses Argument ist optional für eine Tabelle mit einem Gruppierungsschlüssel. Wenn das Argument weggelassen wird, schätzt die Funktion die Kosten für das Clustering der Tabelle unter Verwendung des aktuellen Gruppierungsschlüssels der Tabelle.

Rückgabewerte

Gibt einen Wert vom Typ VARCHAR zurück. Die zurückgegebene Zeichenfolge ist im JSON-Format und enthält die folgenden Name/Wert-Paare:

warning

Zeigt an, ob Bedingungen die Genauigkeit der Kostenschätzung oder die Auswirkungen der Wahl eines Gruppierungsschlüssels beeinflussen könnten.

reportTime

Datum, an dem die Ausgabe der Funktion generiert wurde.

clusteringKey

Spalten, aus denen sich der Gruppierungsschlüssel zusammensetzt.

initial

Beschreibt die voraussichtlichen Kosten für das Clustering der Tabelle um den angegebenen Gruppierungsschlüssel. Die geschätzten Kosten für die Wartung der Tabelle, sobald sie geclustert ist, sind nicht enthalten. Das initial JSON-Objekt enthält die folgenden Name/Wert-Paare.

unit

Gibt die Einheiten an, in denen die anfänglichen Kosten ausgedrückt werden.

value

Gibt die Kosten für das Clustering der Tabelle an, ausgedrückt in unit.

comment

Interpretiert die anfänglichen Clustering-Kosten.

maintenance

Beschreibt die voraussichtlichen Kosten für die Wartung einer gut geclusterten Tabelle, nachdem sie erstmalig geclustert wurde. Diese Vorhersage basiert auf der jüngsten DML-Aktivität, denn eine Tabelle wird neu geclustert, wenn sie sich ändert.

Ein leeres Objekt bedeutet, dass Snowflake keine Kostenschätzung für die Wartung erstellen konnte. In den meisten Fällen ist Snowflake nicht in der Lage, einen Schätzung für die Wartung zu erstellen, da die Tabelle nicht über einen ausreichenden DML-Verlauf verfügte oder in der letzten Woche nicht genügend unterstützte DML-Typen zur Verfügung standen, um die Kosten genau vorherzusagen.

unit

Gibt die Einheiten an, in denen die Kosten ausgedrückt werden.

value

Gibt an, wie viel die Wartung der Tabelle nach dem ersten Clustering kosten wird, ausgedrückt in units pro Tag.

comment

Enthält den Zeitraum, in dem Kosten anfallen, und den Zeitrahmen, auf dem die Schätzung basiert.

Anforderungen an die Zugriffssteuerung

Die Berechtigungen, die für die Schätzung der Kosten erforderlich sind, entsprechen denen, die zum Lesen der Tabelle und zum Ändern des Gruppierungsschlüssels erforderlich sind. Sie benötigen die folgenden Berechtigungen:

  • SELECT- und INSERT-Berechtigungen für die, oder OWNERSHIP-Berechtigung für die Tabelle.

  • USAGE- oder OWNERSHIP-Berechtigung für das übergeordnete Schema und die übergeordnete Datenbank.

Nutzungshinweise

  • Die Kostenschätzungen, die von der Funktion SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS zurückgegeben werden, basieren auf einer Stichprobe einer Teilmenge von Mikropartitionen aus Ihrer Tabelle und der Erfassung der Clustering-Ausführungszeit. Je nach den untersuchten spezifischen Mikropartitionen und der Systemgeschwindigkeit können die Kostenschätzungen zwischen den Ausführungen der Funktionen abweichen.

  • Um die bestmögliche Präzision zu erzielen, können Sie SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS mehrmals ausführen und den Durchschnitt der Ergebnisse ermitteln. Die Funktion verwendet Beispiele für Clustering-Jobs und erfasst deren Ausführungszeit. Die angegebenen Kosten können abhängig von der Systemgeschwindigkeit schwanken. Wenn Sie die Funktion mehrmals ausführen und den Durchschnitt der Ergebnisse bilden, können Sie eine genauere Kostenschätzung vornehmen.

  • Der häufigste Grund für eine ungenaue Schätzung der Wartungskosten ist, dass die DML-Muster der Vergangenheit, die der Schätzung zugrunde liegen, nicht mit den DML-Mustern der Zukunft übereinstimmen.

  • Snowflake kann in den meisten Fällen eine einmalige Kostenschätzung und in einigen Fällen eine Kostenschätzung für die Wartung erstellen. Wenn die Funktion nicht in der Lage ist, eine Kostenschätzung für die Wartung zu erstellen, gibt Snowflake in der Ausgabe einen Grund dafür an.

Beispiele

Gibt die geschätzten Kosten zurück, die mit der Definition der Spalten day und tenantId als Gruppierungsschlüssel für die Tabelle myTable verbunden sind.

SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(day, tenantId)');
Copy
{
  "reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
  "clusteringKey": "LINEAR(day, tenantId)",
  "initial": {
    "unit": "Credits",
    "value": 98.2,
    "comment": "Total upper bound of one-time cost"
  },
  "maintenance": {
    "unit": "Credits",
    "value": 10.0,
    "comment": "Daily maintenance cost estimate provided based on DML history from the
    past seven days."
  }
}