Untersuchen der Computekosten

Die Compute-Gesamtkosten setzen sich aus der Gesamtnutzung folgender Entitäten zusammen:

  • Virtuelle Warehouses (benutzerverwaltete Computeressourcen)

  • Serverlose Features wie Automatic Clustering und Snowpipe, die von Snowflake verwaltete Computeressourcen nutzen

  • Clouddiensteschicht der Snowflake-Architektur

Unter diesem Thema wird beschrieben, wie Sie mit Snowsight oder durch das Schreiben von Abfragen auf Ansichten der Schemas ACCOUNT_USAGE und ORGANIZATION_USAGE einen Einblick in historische Computekosten erhalten. Mit Snowsight können Sie über ein visuelles Dashboard schnell und einfach Informationen zu Kosten abrufen. Durch Abfragen auf den Nutzungsansichten können Sie Kostendaten detailliert aufschlüsseln und mit diesen Informationen kundenspezifische Berichte und Dashboards generieren.

Weitere Informationen zur Entstehung der Computekosten finden Sie unter Erläuterungen zu den Computekosten.

Bemerkung

Die Schicht der Clouddienste verbraucht Credits, aber nicht alle diese Credits werden tatsächlich in Rechnung gestellt. Die Nutzung von Clouddiensten wird nur dann in Rechnung gestellt, wenn der tägliche Verbrauch von Clouddiensten 10 % der täglichen Nutzung von virtuellen Warehouses übersteigt. Snowsight und eine Mehrheit der Ansichten zeigen die Gesamtzahl der von Warehouses, serverlosen Features und Clouddiensten verbrauchten Credits ohne Berücksichtigung dieser täglichen Anpassung an Clouddienste. Um festzustellen, wie viele Credits tatsächlich für Computekosten in Rechnung gestellt wurden, führen Sie Abfragen auf der METERING_DAILY_HISTORY-Ansicht aus.

Anzeigen der Credit-Nutzung für Ihre Organisation

Alle Computeressourcen (virtuelle Warehouses, serverlose Features, Clouddienste) verbrauchen Snowflake-Credits. Ein Benutzer mit den erforderlichen Berechtigungen kann Snowsight verwenden, um die Gesamtkosten für die Computenutzung für einen bestimmten Tag, eine bestimmte Woche oder einen bestimmten Monat anzuzeigen.

So untersuchen Sie die Computekosten:

  1. Melden Sie sich bei Snowsight an.

  2. Wechseln Sie zur Rolle ACCOUNTADMIN.

  3. Navigieren Sie zu Admin » Cost Management.

  4. Wählen Sie das Warehouse aus, für das Sie Nutzungsdaten anzeigen möchten. Snowflake empfiehlt die Verwendung eines XS-Warehouses für diesen Zweck.

  5. Wählen Sie Consumption aus.

  6. Wählen Sie in der Dropdown-Liste mit den Nutzungsarten die Option Compute aus.

Bemerkung

Wenn ein Benutzer die Rolle ACCOUNTADMIN, aber nicht die Rolle ORGADMIN hat, kann er nur die Kosten für das aktuelle Konto einsehen. Der Filter Account, der es ermöglichen würde, zu einem anderen Konto zu wechseln, wird nicht angezeigt.

Nach Tag filtern

Sie können Tags verwenden, um die Kosten, die bei der Nutzung der Ressourcen entstehen, einer logischen Einheit innerhalb Ihrer Organisation zuzuordnen. Ein Tag ist ein Snowflake-Objekt, dem ein oder mehrere Werte zugeordnet sein können. Ein Benutzer mit den entsprechenden Berechtigungen wendet ein Tag/Wert-Paar auf jede Ressource an, die von einer Kostenstelle oder einer anderen logischen Einheit (z. B. der Entwicklungsumgebung, einem Geschäftsbereich oder einer Geschäftssparte) genutzt wird. Sobald Ressourcen getaggt sind, können Sie die Kosten auf der Grundlage eines bestimmten Tag/Wert-Paares isolieren, sodass Sie diese Kosten einer bestimmten logischen Einheit zuordnen können.

So filtern Sie das Consumption-Dashboard, um die mit einer bestimmten Tag/Wert-Kombination verbundenen Kosten anzuzeigen:

  1. Öffnen Sie in Snowsight das Dashboard Consumption.

  2. Wählen Sie in der Dropdown-Liste Tags das entsprechende Tag aus.

  3. Wählen Sie in der Liste der Tag-Werte den entsprechenden Wert aus.

  4. Wählen Sie Apply aus.

Sie können zum Beispiel das Tag COST_CENTER und den Wert SALES auswählen, um die Nutzung der mit COST_CENTER = SALES getaggten Ressourcen anzuzeigen, während alle anderen Nutzungen nicht auf dem Dashboard angezeigt werden.

Sie können auch alle Ressourcen mit einem bestimmten Tag unabhängig vom Wert des Tags anzeigen. Verwenden Sie die Dropdown-Listen, um ein Tag auszuwählen, und wählen Sie dann anstelle eines bestimmten Wertes die Option All aus.

Verbrauch nach Typ, Dienst oder Ressource anzeigen

Beim Anzeigen des Balkendiagramms, das die Verarbeitungshistorie anzeigt, können Sie die Daten nach Typ (By Type), nach Dienst (By Service) oder nach Ressource (By Resource) filtern.

Nach Typ

Teilt den Ressourcenverbrauch nach Compute (virtuelle Warehouses und serverlose Ressourcen) und Clouddienste auf. Für die Zwecke dieses Filters werden die Clouddienste von den anderen Typen von Computeressourcen getrennt.

Nach Dienst

Teilt den Ressourcenverbrauch nach Verbrauch durch Warehouses und Verbrauch durch einzelne serverlose Features auf. So steht beispielsweise WAREHOUSE_METERING für die von den Warehouses verbrauchten Credits, während PIPE für die vom serverlosen Snowpipe-Feature verbrauchten Credits steht. Der Computeverbrauch von Clouddiensten ist im Warehouse-Verbrauch enthalten.

Nach Ressource

Teilt den Ressourcenverbrauch nach den Snowflake-Objekten auf, die Credits verbraucht haben. So wird beispielsweise jedes Warehouse dargestellt, ebenso wie jede Tabelle, die serverlose Kosten verursacht hat.

Abfragen von Daten zu Computekosten

Snowflake bietet zwei Schemas, die Daten zu Nutzung und Kosten enthalten: ORGANIZATION_USAGE und ACCOUNT_USAGE. Das Schema ORGANIZATION_USAGE liefert Kosteninformationen für alle Konten der Organisation, während das Schema ACCOUNT_USAGE ähnliche Informationen für ein einzelnes Konto liefert. Ansichten in diesen Schemas stellen detaillierte, analysefähige Nutzungsdaten bereit, die dann in kundenspezifischen Berichten und Dashboards verwendet werden können.

Die meisten Ansichten in den Schemas ORGANIZATION_USAGE und ACCOUNT_USAGE enthalten die Kosten der Computeressourcen in Form von verbrauchten Credits. Um die Computekosten in Währung statt in Credits zu untersuchen, schreiben Sie Abfragen für Ansicht USAGE_IN_CURRENCY_DAILY. In dieser Ansicht werden die verbrauchten Credits anhand des Tagespreises eines Credits in Kosten in der jeweiligen Währung umgerechnet.

Die folgenden Ansichten bieten Nutzungs- und Kosteninformationen zu den Computekosten.

Ansicht

Computeressource

Beschreibung

Schema

AUTOMATIC_CLUSTERING_HISTORY

Serverlos

Credits, die vom automatischen Clustering verbraucht wurden.

ORGANIZATION_USAGE ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

Serverlos

Credits, die für die Datenbankreplikation verbraucht wurden.

ACCOUNT_USAGE

LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY

Warehouses

Credits, die zur Aktualisierung von Daten verwendet wurden, die durch die Cloud-übergreifende automatische Auftragsausführung in anderen Regionen bereitgestellt werden.

DATA_SHARING_USAGE

LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY

Warehouses

Geschätzter Verbrauch im Zusammenhang mit der Bereitstellung von Datenprodukten in andere Regionen durch die Verwendung von Cloud-übergreifender automatischer Ausführung. Weitere Informationen dazu finden Sie unter SERVICE_TYPE von REPLICATION.

ORGANIZATION_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

Serverlos

Credits, die für die Aktualisierung materialisierter Ansichten verbraucht wurden.

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_DAILY_HISTORY

Warehouses

Serverlos

Clouddienste

Credits, die an einem bestimmten Tag von allen Computeressourcen (Warehouses, serverlose Features und Clouddienste) verbraucht wurden.

Kann verwendet werden, um festzustellen, ob die Computekosten für Clouddienste an einem bestimmten Tag tatsächlich in Rechnung gestellt wurden (d. h. Credit-Verbrauch für Clouddienste lag 10 % über dem für Warehouses).

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_HISTORY

Warehouses

Serverlos

Clouddienste

Credits, die von Warehouses und Clouddiensten auf stündlicher Basis verbraucht wurden. Um zu sehen, wie viele Credits ein einzelnes Warehouse verbraucht, fragen Sie die Ansicht WAREHOUSE_METERING_HISTORY ab.

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

Serverlos

Credits, die von Snowpipe verbraucht wurden.

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

Serverlos

Credits, die vom Abfragebeschleunigungsdienst verbraucht wurden.

ACCOUNT_USAGE

REPLICATION_USAGE_HISTORY

Serverlos

Credits, die während der Datenbankreplikation verbraucht wurden, und Anzahl der dabei übertragenen Bytes. Verwenden Sie, wenn möglich, stattdessen die Ansicht DATABASE_REPLICATION_USAGE_HISTORY.

ORGANIZATION_USAGE ACCOUNT_USAGE

REPLICATION_GROUP_USAGE_ HISTORY

Serverlos

Credits, die während der Replikation einer bestimmten Replikationsgruppe verbraucht wurden, und Anzahl der dabei übertragenen Bytes.

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

Serverlos

Credits, die vom Suchoptimierungsdienst verbraucht wurden.

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

Serverlos

Credits, die von Aufgaben verbraucht wurden.

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

Serverlos

Credits, die von Snowpipe Streaming-Verarbeitung verbraucht wurden (beinhaltet keine Clientkosten).

ACCOUNT_USAGE

USAGE_IN_CURRENCY_DAILY

Warehouses

Serverlos

Clouddienste

Täglicher Credit-Verbrauch von allen Computeressourcen, einschließlich der Kosten für diese Nutzung in der Währung der Organisation.

ORGANIZATION_USAGE

WAREHOUSE_METERING_HISTORY

Warehouses

Clouddienste

Stündliche Credit-Nutzung jedes Warehouses, einschließlich der mit der Verwendung des Warehouses verbundenen Kosten für Clouddienste.

ORGANIZATION_USAGE ACCOUNT_USAGE

Bemerkung

Die Ansichten und Tabellenfunktionen des Snowflake Information Schema stellen außerdem kostenrelevante Nutzungsdaten bereit. Obwohl das ACCOUNT_USAGE-Schema bevorzugt wird, kann das Information Schema unter bestimmten Umständen schneller sein.

Beispielabfragen

Mit den folgenden Abfragen werden die Daten der ACCOUNT_USAGE-Ansichten detailliert aufgeschlüsselt, um einen Einblick in die Computekosten zu erhalten.

Bemerkung

Abfragen, die auf Ansichten im Account Usage-Schema ausgeführt werden, können für die Verwendung im Organization Usage-Schema angepasst werden, um Einblick in die Kosten der gesamten Organisation zu erhalten. Beide Schemas enthalten zum Beispiel eine Ansicht WAREHOUSE_METERING_HISTORY.

Klicken Sie im Folgenden auf den Namen einer Abfrage, um das vollständige SQL-Beispiel zu erhalten.

Compute-Kosten für Warehouses
Compute-Kosten für Clouddienste
Compute-Kosten für Automatic Clustering
Compute-Kosten für Suchoptimierung
Compute-Kosten für materialisierte Ansichten
Compute-Kosten für Query Acceleration Service
Compute-Kosten für Snowpipe
Compute- und Clientkosten für Snowpipe Streaming
Compute-Kosten für Aufgaben
Compute-Kosten für Replikation
Compute-Kosten für Partnertools

Compute-Kosten für Warehouses

Abfrage: Durchschnittliche Snowflake-Ausgaben pro Stunde (für alle Warehouse) in den letzten m Tagen

Diese Abfrage gibt den gesamten Credit-Verbrauch auf stündlicher Basis zurück, um einen Eindruck der Verbrauchstrends (Spitzen, Täler) der letzten m Tage zu erhalten. Auf diese Weise lassen sich Tageszeiten ermitteln, in denen der Verbrauch besonders hoch ist.

SELECT start_time,
  warehouse_name,
  credits_used_compute
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
ORDER BY 1 DESC, 2;

-- by hour
SELECT DATE_PART('HOUR', start_time) AS start_hour,
  warehouse_name,
  AVG(credits_used_compute) AS credits_used_compute_avg
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
GROUP BY 1, 2
ORDER BY 1, 2;
Copy
Abfrage: Credit-Verbrauch nach Warehouse über einen bestimmten Zeitraum

Diese Abfrage gibt den gesamten Credit-Verbrauch für jedes Warehouse in einem bestimmten Zeitraum zurück. Auf diese Weise können Warehouses ermittelt werden, die mehr Credits als andere verbrauchen, und Warehouses, die mehr Credits als erwartet verbrauchen.

-- Credits used (all time = past year)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
GROUP BY 1
ORDER BY 2 DESC;

-- Credits used (past N days/weeks/months)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
GROUP BY 1
ORDER BY 2 DESC;
Copy
Abfrage: Tagesdurchschnitt der Warehouse-Nutzung über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch gruppiert nach Woche und Warehouse zurück. Sie kann dazu verwendet werden, Anomalien im Credit-Verbrauch von Warehouses in den Wochen des letzten Jahres zu erkennen.

WITH cte_date_wh AS (
  SELECT TO_DATE(start_time) AS start_date,
    warehouse_name,
    SUM(credits_used) AS credits_used_date_wh
  FROM snowflake.account_usage.warehouse_metering_history
  GROUP BY start_date, warehouse_name
)

SELECT start_date,
  warehouse_name,
  credits_used_date_wh,
  AVG(credits_used_date_wh) OVER (PARTITION BY warehouse_name ORDER BY start_date ROWS m PRECEDING) AS credits_used_m_day_avg,
  100.0*((credits_used_date_wh / credits_used_m_day_avg) - 1) AS pct_over_to_m_day_average
FROM cte_date_wh
  QUALIFY credits_used_date_wh > 100  -- Minimum N=100 credits
    AND pct_over_to_m_day_average >= 0.5  -- Minimum 50% increase over past m day average
ORDER BY pct_over_to_m_day_average DESC;
Copy

Compute-Kosten für Clouddienste

Abfrage: Abgerechnete Clouddienste

Die Nutzung von Clouddiensten wird nur abgerechnet, wenn der tägliche Verbrauch der Clouddienste 10 % des täglichen Verbrauchs der virtuellen Warehouses überschreitet. Diese Abfrage gibt zurück, wie viel der Nutzung von Clouddiensten für einen bestimmten Tag tatsächlich abgerechnet wurde, sortiert nach dem höchsten abgerechneten Betrag.

SELECT
    usage_date,
    credits_used_cloud_services,
    credits_adjustment_cloud_services,
    credits_used_cloud_services + credits_adjustment_cloud_services AS billed_cloud_services
FROM snowflake.account_usage.metering_daily_history
WHERE usage_date >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
ORDER BY 4 DESC;
Copy
Abfrage: Gesamtkosten der Clouddienste nach Abfragetyp

Diese Abfrage gibt die Gesamtzahl der Credits zurück, die von einem bestimmten Abfragetyp für Clouddienste verbraucht wurden.

SELECT query_type,
  SUM(credits_used_cloud_services) AS cs_credits,
  COUNT(1) num_queries
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
Copy
Abfrage: Kosten für Clouddienste für Abfragen eines bestimmten Typs

Diese Abfrage gibt die Gesamtzahl der Credits zurück, die von allen Abfragen eines bestimmten Typs für Clouddienste verbraucht wurden. Ersetzen Sie 'COPY', wenn Sie sich auf einen anderen Typ von Abfrage konzentrieren möchten, und day, wenn Sie einen längeren oder kürzeren Zeitraum untersuchen möchten.

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
  AND query_type = 'COPY'
ORDER BY credits_used_cloud_services DESC
LIMIT 10;
Copy
Abfrage: Warehouses mit hohem Verbrauch von Clouddiensten

Diese Abfrage gibt die Warehouses zurück, die nicht genug Warehouse-Zeit verbrauchen, um den Anteil der Clouddienste am Computing zu decken. Dies bietet einen Ausgangspunkt für weitere Untersuchungen, indem Warehouses mit einem hohen Anteil an Clouddienst-Nutzung (>10 % der Gesamt-Credits) isoliert werden. Mögliche Untersuchungskandidaten sind Probleme rund um das Klonen, mit Freigabeangebotsdateien in S3, Partnertools, Einstellungen der Sitzungsparameter usw.

SELECT
  warehouse_name,
  SUM(credits_used) AS credits_used,
  SUM(credits_used_cloud_services) AS credits_used_cloud_services,
  SUM(credits_used_cloud_services)/SUM(credits_used) AS percent_cloud_services
FROM snowflake.account_usage.warehouse_metering_history
WHERE TO_DATE(start_time) >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
GROUP BY 1
ORDER BY 4 DESC;
Copy
Abfrage: Verbrauch der Clouddienste, sortiert nach Anteil der Abfragezeit

Diese Abfrage gibt alle Abfragen zurück, die innerhalb der letzten Minute ausgeführt wurden, und sortiert sie nach Teilen der gesamten Abfrageausführungszeit (z. B. Kompilierungszeit vs. Warteschlangenzeit).

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(minute, -60, CURRENT_TIMESTAMP)
ORDER BY compilation_time DESC,
  execution_time DESC,
  list_external_files_time DESC,
  queued_overload_time DESC,
  credits_used_cloud_services DESC
LIMIT 10;
Copy

Compute-Kosten für Automatic Clustering

Abfrage: Kostenverlauf von Automatic Clustering (nach Tag, nach Objekt)

Diese Abfrage liefert eine Liste von Tabellen mit Automatic Clustering und das Volumen der über den Dienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.automatic_clustering_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Abfrage: Automatic Clustering-Historie und Tagesdurchschnitt über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch Automatic Clustering für das letzte Jahr, gruppiert nach Woche zurück. Sie kann dazu beitragen, Anomalien in den Tagesdurchschnittswerten über das Jahr hinweg zu erkennen, sodass Sie Verbrauchsspitzen oder unerwarteten Nutzungsänderungen untersuchen können.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.automatic_clustering_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
      AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Compute-Kosten für Suchoptimierung

Abfrage: Kostenverlauf von Suchoptimierung (nach Tag, nach Objekt)

Diese Abfrage liefert eine umfassende Liste von Tabellen mit Suchoptimierung und das Volumen der über den Dienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.search_optimization_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Abfrage: Suchoptimierungshistorie und Tagesdurchschnitt über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch die Suchoptimierung für das letzte Jahr, gruppiert nach Woche zurück. Sie kann dazu beitragen, Anomalien in den Tagesdurchschnittswerten über das Jahr hinweg zu erkennen, sodass Sie Verbrauchsspitzen oder unerwarteten Nutzungsänderungen untersuchen können.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.search_optimization_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week', date),
  AVG(credits_used) as avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Compute-Kosten für materialisierte Ansichten

Abfrage: Kostenverlauf für materialisierte Ansichten (nach Tag, nach Objekt)

Diese Abfrage liefert eine umfassende Liste der materialisierten Ansichten und das Volumen der über den Dienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.materialized_view_refresh_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Abfrage: Historie von materialisierten Ansichten und Tagesdurchschnitt über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch materialisierte Ansichten für das letzte Jahr, gruppiert nach Woche zurück. Sie kann dazu beitragen, Anomalien in den Tagesdurchschnittswerten über das Jahr hinweg zu erkennen, sodass Sie Verbrauchsspitzen oder unerwarteten Nutzungsänderungen untersuchen können.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.materialized_view_refresh_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Compute-Kosten für Query Acceleration Service

Abfrage: Kosten für Query Acceleration Service nach Warehouse

Diese Abfrage gibt die Credits zurück, die von jedem Warehouse in Ihrem Konto für den Abfragebeschleunigungsdienst verbraucht wurden (aktueller Monat):

SELECT warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE start_time >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1
  ORDER BY 2 DESC;
Copy

Computing für Snowpipe und Snowpipe Streaming

Abfrage: Kumulativer Verbrauch der Datenerfassung (Snowpipe und „Copy“)

Diese Abfrage gibt eine aggregierte tägliche Zusammenfassung aller Ladeoperationen für jede Tabelle in Snowflake zurück und zeigt die durchschnittliche Dateigröße, die Gesamtzahl der Zeilen, das Gesamtvolumen und die Erfassungsmethode (Kopie oder Snowpipe) an. Wenn die Dateigrößen für eine optimale Erfassung zu klein oder zu groß sind, kann eine zusätzliche Untersuchung/Optimierung erforderlich sein. Durch die Zuordnung des Volumens zum Credit-Verbrauch lässt sich feststellen, welche Tabellen mehr Credits pro geladenem TB verbrauchen.

SELECT TO_DATE(last_load_time) AS load_date,
  status,
  table_catalog_name AS database_name,
  table_schema_name AS schema_name,
  table_name,
  CASE
    WHEN pipe_name IS NULL THEN 'COPY'
    ELSE 'SNOWPIPE'
  END AS ingest_method,
  SUM(row_count) AS row_count,
  SUM(row_parsed) AS rows_parsed,
  AVG(file_size) AS avg_file_size_bytes,
  SUM(file_size) AS total_file_size_bytes,
  SUM(file_size)/POWER(1024,1) AS total_file_size_kb,
  SUM(file_size)/POWER(1024,2) AS total_file_size_mb,
  SUM(file_size)/POWER(1024,3) AS total_file_size_gb,
  SUM(file_size)/POWER(1024,4) AS total_file_size_tb
FROM snowflake.account_usage.copy_history
GROUP BY 1,2,3,4,5,6
ORDER BY 3,4,5,1,2;
Copy
Abfrage: Kostenverlauf von Snowpipe (nach Tag, nach Objekt)

Diese Abfrage liefert eine umfassende Liste der Pipes und das Volumen der über den Dienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.

SELECT TO_DATE(start_time) AS date,
  pipe_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.pipe_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
Abfrage: Snowpipe-Historie und Tagesdurchschnitt über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch Snowpipe für das letzte Jahr, gruppiert nach Woche zurück. Sie kann dazu beitragen, Anomalien in den Tagesdurchschnittswerten über das Jahr hinweg zu erkennen, sodass Sie Verbrauchsspitzen oder unerwarteten Nutzungsänderungen untersuchen können.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.pipe_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy
Abfrage: Gesamtkosten für Snowpipe Streaming

Diese Abfrage listet die aktuelle Credit-Nutzung durch Snowpipe Streaming auf, einschließlich der Compute- und Clientkosten für Snowpipe Streaming.

SELECT start_time,
  end_time,
  SUM(credits_used) AS total_credits,
  name,
  IFF(CONTAINS(name,':'),'streaming client cost', 'streaming compute cost') AS streaming_cost_type
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_HISTORY
WHERE service_type ='SNOWPIPE_STREAMING'
GROUP BY ALL;
Copy

Compute-Kosten für Aufgaben

Abfrage: Gesamtkosten für Aufgabe

Diese Abfrage listet die aktuelle Credit-Nutzung für alle serverlosen Aufgaben auf:

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

Compute-Kosten für Replikation

Abfrage: Kosten für Kontoreplikation

Diese Abfrage listet die Credits auf, die von einer Replikations- oder Failover-Gruppe für die Kontoreplikation im aktuellen Monat verbraucht wurden:

SELECT start_time, 
  end_time, 
  replication_group_name, 
  credits_used, 
  bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
Copy
Abfrage: Kostenverlauf von Datenbankreplikation (nach Tag, nach Objekt)

Diese Abfrage liefert eine umfassende Liste der replizierten Datenbanken und das Volumen der über den Replikationsdienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.

SELECT TO_DATE(start_time) AS date,
  database_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.database_replication_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
Abfrage: Datenbankreplikationsverlauf und Tagesdurchschnitt über m Tage

Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch die Replikation für das letzte Jahr, gruppiert nach Woche zurück. Auf diese Weise lassen sich etwaige Anomalien in Tagesdurchschnittswerten feststellen, die für die Untersuchung von Verbrauchsspitzen oder -veränderungen dienen können.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.database_replication_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Compute-Kosten für Partnertools

Abfrage: Credit-Verbrauch nach Partnertools

Diese Abfrage ermittelt, welche Partnertools/Partnerlösungen von Snowflake (z. B. BI, ETL usw.) die meisten Credits verbrauchen. Auf diese Weise können Partnerlösungen identifiziert werden, die mehr Credits verbrauchen als erwartet, was Ausgangspunkt für weitere Untersuchungen sein kann.

-- This Is Approximate Credit Consumption By Client Application
WITH
  client_hour_execution_cte AS (
    SELECT
      CASE
        WHEN client_application_id LIKE 'Go %' THEN 'Go'
        WHEN client_application_id LIKE 'Snowflake UI %' THEN 'Snowflake UI'
        WHEN client_application_id LIKE 'SnowSQL %' THEN 'SnowSQL'
        WHEN client_application_id LIKE 'JDBC %' THEN 'JDBC'
        WHEN client_application_id LIKE 'PythonConnector %' THEN 'Python'
        WHEN client_application_id LIKE 'ODBC %' THEN 'ODBC'
        ELSE 'NOT YET MAPPED: ' || CLIENT_APPLICATION_ID
      END AS client_application_name,
      warehouse_name,
      DATE_TRUNC('hour',start_time) AS start_time_hour,
      SUM(execution_time)  AS client_hour_execution_time
    FROM snowflake.account_usage.query_history qh
      JOIN snowflake.account_usage.sessions se
        ON se.session_id = qh.session_id
    WHERE warehouse_name IS NOT NULL
      AND execution_time > 0
      AND start_time > DATEADD(month,-1,CURRENT_TIMESTAMP())
    GROUP BY 1,2,3
  ),
  hour_execution_cte AS (
    SELECT start_time_hour,
      warehouse_name,
      SUM(client_hour_execution_time) AS hour_execution_time
    FROM client_hour_execution_cte
    GROUP BY 1,2
  ),
  approximate_credits AS (
    SELECT A.client_application_name,
      C.warehouse_name,
      (A.client_hour_execution_time/B.hour_execution_time)*C.credits_used AS approximate_credits_used
    FROM client_hour_execution_cte A
      JOIN hour_execution_cte B
        ON A.start_time_hour = B.start_time_hour and B.warehouse_name = A.warehouse_name
      JOIN snowflake.account_usage.warehouse_metering_history C
        ON C.warehouse_name = A.warehouse_name AND C.start_time = A.start_time_hour
  )

SELECT client_application_name,
  warehouse_name,
  SUM(approximate_credits_used) AS approximate_credits_used
FROM approximate_credits
GROUP BY 1,2
ORDER BY 3 DESC;
Copy