컴퓨팅 비용 살펴보기

총 컴퓨팅 비용은 다음의 전체 사용 비용으로 구성됩니다.

  • 가상 웨어하우스(사용자 관리 컴퓨팅 리소스)

  • Snowflake 관리 컴퓨팅 리소스를 사용하는 자동 클러스터링 및 Snowpipe와 같은 서버리스 기능

  • Snowflake 아키텍처의 클라우드 서비스 계층

이 항목에서는 Snowsight 를 사용하거나 ACCOUNT_USAGEORGANIZATION_USAGE 스키마의 뷰에 대한 쿼리를 작성하여 과거 컴퓨팅 비용에 대한 인사이트를 얻는 방법을 설명합니다. Snowsight 를 사용하면 시각적 대시보드에서 비용에 대한 정보를 빠르고 쉽게 얻을 수 있습니다. 비용 데이터를 드릴다운할 수 있는 사용량 뷰에 대한 쿼리는 사용자 지정 보고서와 대시보드를 생성하는 데 도움이 될 수 있습니다.

컴퓨팅 비용이 어떻게 발생하는지에 대한 자세한 정보가 필요하면 컴퓨팅 비용 이해하기 섹션을 참조하십시오.

참고

클라우드 서비스 계층은 크레딧을 소비하지만 해당 크레딧이 전부 실제로 청구되는 것은 아닙니다. 클라우드 서비스 사용량은 클라우드 서비스 일일 소비량이 가상 웨어하우스 일일 사용량의 10%를 초과하는 경우에만 청구됩니다. Snowsight 및 대다수 뷰에는 클라우드 서비스에 대한 이런 일일 조정을 고려하지 않고 웨어하우스, 서버리스 기능, 클라우드 서비스에서 소비한 총 크레딧 수가 표시됩니다. 컴퓨팅 비용에 대해 실제로 청구된 크레딧 수를 확인하려면 METERING_DAILY_HISTORY 뷰 에 대해 쿼리를 실행하십시오.

조직의 크레딧 사용 보기

모든 컴퓨팅 리소스(가상 웨어하우스, 서버리스, 클라우드 서비스)는 Snowflake 크레딧을 사용합니다. 적절한 권한을 사용자는 Snowsight 를 사용하여 지정된 일, 주 또는 월의 전체 컴퓨팅 사용 비용을 볼 수 있습니다.

컴퓨팅 비용을 탐색하는 방법:

  1. Snowsight 에 로그인합니다.

  2. ACCOUNTADMIN 역할로 전환합니다.

  3. Admin » Cost Management 으로 이동합니다.

  4. 사용 데이터를 보기 위해 사용할 웨어하우스를 선택합니다. 이를 위해 XS 웨어하우스를 사용하는 것이 좋습니다.

  5. Consumption 을 선택합니다.

  6. 사용 유형 드롭다운에서 Compute 를 선택합니다.

참고

사용자에게 ACCOUNTADMIN 역할이 있지만 ORGADMIN 역할이 없는 경우 현재 계정의 비용만 볼 수 있습니다. 다른 계정으로 전환할 수 있는 Account 필터가 표시되지 않습니다.

태그로 필터링

태그를 사용하여 조직 내 논리 단위에 리소스를 사용하는 비용의 출처를 밝힐 수 있습니다. 태그는 하나 이상의 값이 연결되어 있을 수 있는 Snowflake 오브젝트입니다. 적절한 권한이 있는 사용자는 비용 센터 또는 기타 논리 단위(예: 개발 환경, 사업부 또는 사업 분야)에서 사용되는 각 리소스에 태그/값 페어를 적용합니다. 리소스에 태그가 지정되면 특정 태그/값 페어를 기준으로 비용을 분리하여 이 비용을 특정 논리 단위에 귀속할 수 있습니다.

특정 태그/값 조합과 관련된 비용을 표시하도록 Consumption 대시보드를 필터링하는 방법:

  1. Snowsight 에서 Consumption 대시보드를 엽니다.

  2. Tags 드롭다운에서 태그를 선택합니다.

  3. 태그 값 목록에서 값을 선택합니다.

  4. Apply 를 선택합니다.

예를 들어 드롭다운을 사용하여 COST_CENTER 태그와 SALES 값을 선택하여 COST_CENTER = SALES 로 태그가 지정된 리소스와 관련된 사용량을 표시하면서 다른 모든 사용량은 대시보드에서 제외할 수 있습니다.

태그 값에 관계없이 태그가 있는 모든 리소스를 표시할 수도 있습니다. 드롭다운을 사용하여 태그를 선택한 다음, 특정 값 대신 All 을 선택합니다.

유형, 서비스 또는 리소스별 사용량 보기

컴퓨팅 기록을 표시하는 막대그래프를 볼 때 데이터를 By Type, By Service 또는 By Resource 로 필터링할 수 있습니다.

By Type

리소스 사용을 컴퓨팅(가상 웨어하우스 및 서버리스 리소스)과 클라우드 서비스로 구분합니다. 이 필터의 목적상, 클라우드 서비스는 다른 유형의 컴퓨팅 리소스와는 구분됩니다.

By Service

리소스 사용을 웨어하우스 사용과 각 서버리스 기능에 의한 사용으로 구분합니다. 예를 들어 WAREHOUSE_METERING은 웨어하우스에서 사용한 크레딧을 나타내는 반면, PIPE는 서버리스 Snowpipe 기능에서 사용한 크레딧을 나타냅니다. 클라우드 서비스 컴퓨팅은 웨어하우스 사용에 포함됩니다.

By Resource

크레딧을 사용한 Snowflake 오브젝트별로 리소스 사용을 구분합니다. 예를 들어 서버리스 비용이 발생한 모든 테이블과 마찬가지로 각 웨어하우스가 표시됩니다.

컴퓨팅 비용 데이터 쿼리하기

Snowflake는 사용량 및 비용과 관련된 데이터가 포함된 ORGANIZATION_USAGEACCOUNT_USAGE 의 두 가지 스키마를 제공합니다. ORGANIZATION_USAGE 스키마는 조직의 모든 계정에 대한 비용 정보를 제공하는 반면, ACCOUNT_USAGE 스키마는 단일 계정에 대해 그와 유사한 정보를 제공합니다. 이러한 스키마의 뷰는 사용자 지정 보고서 또는 대시보드를 만들 수 있도록 바로 분석할 수 있는 세분화된 사용량 데이터를 제공합니다.

ORGANIZATION_USAGE 및 ACCOUNT_USAGE 스키마에서 대부분의 뷰는 사용된 크레딧 측면에서의 컴퓨팅 리소스 비용을 포함합니다. 크레딧이 아닌 통화로 컴퓨팅 비용을 탐색하려면 USAGE_IN_CURRENCY_DAILY 뷰 에 대한 쿼리를 작성하십시오. 이 뷰에서는 크레딧의 일일 가격을 사용하여 사용된 크레딧을 통화 단위의 비용으로 변환합니다.

다음 뷰는 컴퓨팅 비용과 관련된 사용량 및 비용 정보를 제공합니다.

컴퓨팅 리소스

설명

스키마

AUTOMATIC_CLUSTERING_HISTORY

서버리스

자동 클러스터링에 사용된 크레딧.

ORGANIZATION_USAGE ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

서버리스

데이터베이스 복제에 사용된 크레딧.

ACCOUNT_USAGE

LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY

웨어하우스

클라우드 간 자동 복제에 의해 다른 리전으로 복제된 데이터를 새로 고치는 데 사용되는 크레딧.

DATA_SHARING_USAGE

LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY

웨어하우스

클라우드 간 자동 복제를 사용하여 다른 리전으로 데이터 제품을 복제하는 것과 관련된 예상 사용량입니다. REPLICATION의 SERVICE_TYPE을 참조하십시오.

ORGANIZATION_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

서버리스

구체화된 뷰의 새로 고침에 사용된 크레딧.

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_DAILY_HISTORY

웨어하우스

서버리스

클라우드 서비스

지정된 날짜에 모든 컴퓨팅 리소스(웨어하우스, 서버리스 및 클라우드 서비스)에서 사용한 크레딧.

특정 날짜에 대해 클라우드 서비스 컴퓨팅 비용이 실제로 청구되었는지(즉, 클라우드 서비스 크레딧 사용량이 웨어하우스 사용량의 10% 초과) 여부를 확인하는 데 사용할 수 있습니다.

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_HISTORY

웨어하우스

서버리스

클라우드 서비스

웨어하우스 및 클라우드 서비스에서 시간당 사용한 크레딧. 개별 웨어하우스가 사용 중인 크레딧을 보려면 WAREHOUSE_METERING_HISTORY 뷰를 쿼리하십시오.

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

서버리스

Snowpipe에서 사용된 크레딧.

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

서버리스

Query Acceleration Service에서 사용된 크레딧.

ACCOUNT_USAGE

REPLICATION_USAGE_HISTORY

서버리스

데이터베이스 복제 중에 사용된 크레딧과 전송된 바이트 수. 가능하면 DATABASE_REPLICATION_USAGE_HISTORY 뷰 를 대신 사용하십시오.

ORGANIZATION_USAGE ACCOUNT_USAGE

REPLICATION_GROUP_USAGE_ HISTORY

서버리스

특정 복제 그룹에 대한 복제 중 사용된 크레딧과 전송된 바이트 수.

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

서버리스

검색 최적화 서비스에서 사용된 크레딧.

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

서버리스

작업에서 사용된 크레딧.

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

서버리스

Snowpipe Streaming 컴퓨팅에서 사용하는 크레딧(클라이언트 비용은 포함하지 않음).

ACCOUNT_USAGE

USAGE_IN_CURRENCY_DAILY

웨어하우스

서버리스

클라우드 서비스

모든 컴퓨팅 리소스의 일일 크레딧 사용량과 조직의 통화로 표시된 해당 사용량의 비용.

ORGANIZATION_USAGE

WAREHOUSE_METERING_HISTORY

웨어하우스

클라우드 서비스

웨어하우스 사용과 관련된 클라우드 서비스 비용을 포함하여, 각 웨어하우스의 시간당 크레딧 사용.

ORGANIZATION_USAGE ACCOUNT_USAGE

참고

Snowflake Information Schema 의 뷰 및 테이블 함수는 비용과 관련된 사용량 데이터도 제공합니다. ACCOUNT_USAGE 스키마가 선호되지만, 상황에 따라서는 Information Schema가 더 빠를 수 있습니다.

예제 쿼리

다음 쿼리는 ACCOUNT_USAGE 뷰의 데이터를 드릴다운하여 컴퓨팅 비용에 대한 인사이트를 얻습니다.

참고

Account Usage 스키마의 뷰에 대해 실행된 쿼리를 수정하면 Organization Usage 스키마의 해당 뷰를 사용하여 전체 조직의 비용에 대한 인사이트를 얻을 수 있습니다. 예를 들어 두 스키마 모두 WAREHOUSE_METERING_HISTORY 뷰를 포함합니다.

전체 SQL 예제를 보려면 아래 쿼리의 이름을 클릭하십시오.

웨어하우스에 대한 계산
클라우드 서비스에 대한 계산
자동 클러스터링에 대한 계산
검색 최적화에 대한 계산
구체화된 뷰에 대한 계산
Query Acceleration Service 요금 계산
Snowpipe에 대한 계산
Snowpipe Streaming의 컴퓨팅 및 클라이언트 비용
작업 요금 계산
복제에 대한 계산
파트너 도구에 대한 계산

웨어하우스에 대한 계산

쿼리: 지난 m일 동안 (모든 웨어하우스에서 발생한) 평균 시간당 Snowflake 지출

이 쿼리는 지난 m일 동안의 사용 추세(피크, 밸리) 이해에 도움이 되는 시간당 총 크레딧 사용을 보여줍니다. 이 쿼리는 하루 중 사용이 급증하는 시간을 파악하는 데 도움이 됩니다.

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
쿼리: 특정 기간에 걸친 웨어하우스별 크레딧 사용

이 쿼리는 특정 기간에 각 웨어하우스의 총 크레딧 사용을 보여줍니다. 이는 다른 웨어하우스보다 많은 크레딧을 사용 중인 웨어하우스와 예상보다 많은 크레딧을 사용 중인 특정 웨어하우스의 식별에 도움이 됩니다.

-- 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
쿼리: m일 평균에 대한 웨어하우스 사용량

이 쿼리는 주별 및 웨어하우스별로 분류된 일일 평균 크레딧 사용을 반환합니다. 작년부터 주별로 웨어하우스의 크레딧 사용 데이터에서 이상을 식별하는 데 사용할 수 있습니다.

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

클라우드 서비스에 대한 계산

쿼리: 청구된 클라우드 서비스

클라우드 서비스의 사용 요금 은 클라우드 서비스의 일일 사용량이 가상 웨어하우스 일일 사용량의 10%를 초과하는 경우에만 청구됩니다. 이 쿼리는 특정 날짜에 실제로 청구된 클라우드 서비스 소비량을 가장 높은 청구 금액 순으로 반환합니다.

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
쿼리: 쿼리 유형별 총 클라우드 서비스 비용

이 쿼리는 특정 유형의 쿼리에서 클라우드 서비스에 사용한 총 크레딧을 반환합니다.

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
쿼리: 특정 유형의 쿼리에 대한 클라우드 서비스 비용

이 쿼리는 특정 유형의 모든 쿼리에서 클라우드 서비스에 사용한 총 크레딧을 반환합니다. 다른 유형의 쿼리에 집중하려면 'COPY' 를, 더 길거나 더 짧은 기간을 탐색하려면 day 를 바꾸십시오.

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
쿼리: 클라우드 서비스 사용량이 많은 웨어하우스

이 쿼리는 컴퓨팅의 클라우드 서비스 부분을 다루기에 충분한 웨어하우스 시간을 사용하지 않는 웨어하우스를 보여줍니다. 이 쿼리는 클라우드 서비스 사용 비율이 높은(전체 크레딧의 10% 이상) 웨어하우스를 분리하여 추가 조사를 위한 출발점을 제공합니다. 복제, S3의 파일 나열, 파트너 도구, 세션 매개 변수 설정 등과 관련된 문제가 조사 대상에 포함됩니다.

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
쿼리: 쿼리 시간에서 부분별로 정렬된 클라우드 서비스 사용량

이 쿼리는 지난 1분 이내에 실행된 모든 쿼리를 반환하고 총 쿼리 실행 시간의 일부(예: 컴파일 시간 대 큐 시간)를 기준으로 이들 쿼리를 정렬합니다.

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

자동 클러스터링에 대한 계산

쿼리: 자동 클러스터링 비용 기록(일별, 오브젝트별)

이 쿼리는 자동 클러스터링과 지난 30일간 하루 단위로 나누어 이 서비스를 통해 사용된 크레딧 볼륨이 포함된 테이블의 목록을 제공합니다. 크레딧 사용의 불규칙성 또는 지속적으로 높은 사용량은 추가로 조사해봐야 할 대상입니다.

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
쿼리: 자동 클러스터링 기록 및 m일 평균

이 쿼리는 작년에 자동 클러스터링에서 사용된 평균 일일 크레딧을 주 단위로 나누어 보여줍니다. 이는 그 해의 일일 평균 이상을 식별하는 데 도움이 될 수 있으므로 사용량의 급증이나 예상치 못한 변화를 조사할 수 있습니다.

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

검색 최적화에 대한 계산

쿼리: 검색 최적화 비용 기록(일별, 오브젝트별)

이 쿼리는 검색 최적화와 지난 30일간 하루 단위로 나누어 이 서비스를 통해 사용된 크레딧 볼륨이 포함된 테이블의 전체 목록을 제공합니다. 크레딧 사용의 불규칙성 또는 지속적으로 높은 사용량은 추가로 조사해봐야 할 대상입니다.

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
쿼리: 검색 최적화 기록 및 m일 평균

이 쿼리는 작년에 검색 최적화에서 사용된 평균 일일 크레딧을 주 단위로 나누어 보여줍니다. 이는 그 해의 일일 평균 이상을 식별하는 데 도움이 될 수 있으므로 사용량의 급증이나 예상치 못한 변화를 조사할 수 있습니다.

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

구체화된 뷰에 대한 계산

쿼리: 구체화된 뷰 비용 기록(일별, 오브젝트별)

이 쿼리는 구체화된 뷰와 지난 30일간 하루 단위로 나누어 이 서비스를 통해 사용된 크레딧 볼륨의 전체 목록을 제공합니다. 크레딧 사용의 불규칙성 또는 지속적으로 높은 사용량은 추가로 조사해봐야 할 대상입니다.

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
쿼리: 구체화된 뷰 기록 및 m일 평균

이 쿼리는 작년에 구체화된 뷰에서 사용된 평균 일일 크레딧을 주 단위로 나누어 보여줍니다. 이는 그 해의 일일 평균 이상을 식별하는 데 도움이 될 수 있으므로 사용량의 급증이나 예상치 못한 변화를 조사할 수 있습니다.

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

Query Acceleration Service 요금 계산

쿼리: 웨어하우스별 Query Acceleration Service 비용

이 쿼리는 Query Acceleration Service에 대해 계정의 각 웨어하우스에서 사용한 크레딧(당월 합계)의 총수를 반환합니다.

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

Snowpipe 및 Snowpipe Streaming을 위한 컴퓨팅

쿼리: 데이터 수집의 누적 사용량(Snowpipe 및 《복사》)

이 쿼리는 평균 파일 크기, 전체 행 수, 전체 볼륨, 수집 방법(복사 또는 Snowpipe)을 보여주는 Snowflake의 각 테이블에 대한 모든 로드의 집계된 일일 요약 정보를 반환합니다. 파일 크기가 최적의 수집에는 너무 작거나 큰 경우 추가적인 조사/최적화가 필요할 수 있습니다. 볼륨을 크레딧 사용에 매핑하여 로딩된 TB당 더 많은 크레딧을 사용하는 테이블을 확인할 수 있습니다.

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
쿼리: Snowpipe 비용 기록(일별, 오브젝트별)

이 쿼리는 파이프와 지난 30일간 하루 단위로 나누어 이 서비스를 통해 사용된 크레딧 볼륨의 전체 목록을 제공합니다. 크레딧 사용의 불규칙성 또는 지속적으로 높은 사용량은 추가로 조사해봐야 할 대상입니다.

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
쿼리: Snowpipe 기록 및 m일 평균

이 쿼리는 작년에 Snowpipe에서 사용된 평균 일일 크레딧을 주 단위로 나누어 보여줍니다. 이는 그 해의 일일 평균 이상을 식별하는 데 도움이 될 수 있으므로 사용량의 급증이나 예상치 못한 변화를 조사할 수 있습니다.

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
쿼리: 총 Snowpipe Streaming 비용

이 쿼리를 실행하면 Snowpipe Streaming 컴퓨팅 비용과 클라이언트 비용을 모두 포함하여 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

작업 요금 계산

쿼리: 총 작업 비용

다음 쿼리는 모든 서버리스 작업의 현재 크레딧 사용 정보를 나열합니다.

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

복제에 대한 계산

쿼리: 계정 복제 비용

이 쿼리를 실행하면 이번 달의 계정 복제에 대해 복제 또는 장애 조치 그룹에서 사용하는 크레딧이 나열됩니다.

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
쿼리: 데이터베이스 복제 비용 기록(일별, 오브젝트별)

이 쿼리는 복제 데이터베이스와 지난 30일간 하루 단위로 나누어 복제 서비스를 통해 사용된 크레딧 볼륨의 전체 목록을 제공합니다. 크레딧 사용의 불규칙성 또는 지속적으로 높은 사용량은 추가로 조사해봐야 할 대상입니다.

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
쿼리: 데이터베이스 복제 기록 및 m일 평균

이 쿼리는 작년에 복제에서 사용된 평균 일일 크레딧을 주 단위로 나누어 보여줍니다. 이 쿼리는 일일 평균의 이상을 파악하는 데 도움이 되므로 사용의 급증 또는 변화를 조사할 수 있습니다.

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

파트너 도구에 대한 계산

쿼리: 파트너 도구별 크레딧 사용

이 쿼리는 Snowflake의 어떤 파트너 도구/솔루션(예: BI, ETL 등)이 가장 많은 크레딧을 사용 중인지 식별합니다. 이 쿼리는 예상보다 많은 크레딧을 사용 중인 파트너 솔루션을 식별하는 데 도움이 될 수 있으며, 이는 추가 조사를 위한 출발점이 될 수 있습니다.

-- 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