컴퓨팅 비용 탐색¶
총 컴퓨팅 비용은 다음의 전체 사용 비용으로 구성됩니다.
가상 웨어하우스(사용자 관리 컴퓨팅 리소스)
Snowflake 관리 컴퓨팅 리소스를 사용하는 자동 클러스터링 및 Snowpipe와 같은 서버리스 기능
Snowflake 아키텍처의 클라우드 서비스 계층
이 항목에서는 Snowsight, the Snowflake web interface 를 사용하거나 ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마의 뷰에 대한 쿼리를 작성하여 과거 컴퓨팅 비용에 대한 인사이트를 얻는 방법을 설명합니다. Snowsight 를 사용하면 시각적 대시보드에서 비용에 대한 정보를 빠르고 쉽게 얻을 수 있습니다. 비용 데이터를 드릴다운할 수 있는 사용량 뷰에 대한 쿼리는 사용자 지정 보고서와 대시보드를 생성하는 데 도움이 될 수 있습니다.
컴퓨팅 비용이 어떻게 발생하는지에 대한 자세한 정보가 필요하면 컴퓨팅 비용 이해하기 섹션을 참조하십시오.
이 항목의 내용:
컴퓨팅 비용 액세스하기¶
Snowsight 를 사용하거나 쿼리를 작성하여 컴퓨팅 비용을 탐색하는 권한을 사용자에게 부여하려면 비용 및 사용량 데이터 액세스하기 섹션을 참조하십시오.
조직의 크레딧 사용 보기¶
모든 컴퓨팅 리소스(가상 웨어하우스, 서버리스, 클라우드 서비스)는 Snowflake 크레딧을 사용합니다. 적절한 권한을 사용자는 Snowsight 를 사용하여 지정된 일, 주 또는 월의 전체 컴퓨팅 사용 비용을 볼 수 있습니다.
Snowsight 를 사용하여 컴퓨팅 비용을 탐색하는 방법:
Admin » Usage 으로 이동합니다.
사용 데이터를 보기 위해 사용할 웨어하우스를 선택합니다. 이를 위해 XS 웨어하우스를 사용하는 것이 좋습니다.
사용 유형 드롭다운에서 Compute 를 선택합니다.
태그로 필터링¶
태그를 사용하여 조직 내 논리 단위에 리소스를 사용하는 비용의 출처를 밝힐 수 있습니다. 태그는 하나 이상의 값이 연결되어 있을 수 있는 Snowflake 오브젝트입니다. 적절한 권한이 있는 사용자는 비용 센터 또는 기타 논리 단위(예: 개발 환경, 사업부 또는 사업 분야)에서 사용되는 각 리소스에 태그/값 페어를 적용합니다. 리소스에 태그가 지정되면 특정 태그/값 페어를 기준으로 비용을 분리하여 이 비용을 특정 논리 단위에 귀속할 수 있습니다.
특정 태그/값 조합과 관련된 비용을 표시하도록 Usage 대시보드를 필터링하는 방법:
Snowsight 에서 Usage 대시보드를 엽니다.
Tags 드롭다운에서 태그를 선택합니다.
태그 값 목록에서 값을 선택합니다.
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_USAGE 및 ACCOUNT_USAGE 의 두 가지 스키마를 제공합니다. ORGANIZATION_USAGE 스키마는 조직의 모든 계정에 대한 비용 정보를 제공하는 반면, ACCOUNT_USAGE 스키마는 단일 계정에 대해 그와 유사한 정보를 제공합니다. 이러한 스키마의 뷰는 사용자 지정 보고서 또는 대시보드를 만들 수 있도록 바로 분석할 수 있는 세분화된 사용량 데이터를 제공합니다.
ORGANIZATION_USAGE 및 ACCOUNT_USAGE 스키마에서 대부분의 뷰는 사용된 크레딧 측면에서의 컴퓨팅 리소스 비용을 포함합니다. 크레딧이 아닌 통화로 컴퓨팅 비용을 탐색하려면 USAGE_IN_CURRENCY_DAILY 뷰 에 대한 쿼리를 작성하십시오. 이 뷰에서는 크레딧의 일일 가격을 사용하여 사용된 크레딧을 통화 단위의 비용으로 변환합니다.
다음 뷰는 컴퓨팅 비용과 관련된 사용량 및 비용 정보를 제공합니다.
뷰 |
컴퓨팅 리소스 |
설명 |
스키마 |
---|---|---|---|
AUTOMATIC_CLUSTERING_HISTORY |
서버리스 |
자동 클러스터링에 사용된 크레딧. |
|
DATABASE_REPLICATION_USAGE_HISTORY |
서버리스 |
데이터베이스 복제에 사용된 크레딧. |
|
MATERIALIZED_VIEW_REFRESH_HISTORY |
서버리스 |
구체화된 뷰의 새로 고침에 사용된 크레딧. |
|
METERING_DAILY_HISTORY |
웨어하우스 서버리스 클라우드 서비스 |
지정된 날짜에 모든 컴퓨팅 리소스(웨어하우스, 서버리스 및 클라우드 서비스)에서 사용한 크레딧. 특정 날짜에 대해 클라우드 서비스 컴퓨팅 비용이 실제로 청구되었는지(즉, 클라우드 서비스 크레딧 사용량이 웨어하우스 사용량의 10% 초과) 여부를 확인하는 데 사용할 수 있습니다. |
|
METERING_HISTORY |
웨어하우스 서버리스 클라우드 서비스 |
웨어하우스 및 클라우드 서비스에서 시간당 사용한 크레딧. 개별 웨어하우스가 사용 중인 크레딧을 보려면 WAREHOUSE_METERING_HISTORY 뷰를 쿼리하십시오. |
|
PIPE_USAGE_HISTORY |
서버리스 |
Snowpipe에서 사용된 크레딧. |
|
QUERY_ACCELERATION_HISTORY |
서버리스 |
Query Acceleration Service에서 사용된 크레딧. |
|
REPLICATION_USAGE_HISTORY |
서버리스 |
데이터베이스 복제 중에 사용된 크레딧과 전송된 바이트 수. 가능하면 DATABASE_REPLICATION_USAGE_HISTORY 뷰 를 대신 사용하십시오. |
|
REPLICATION_GROUP_USAGE_HISTORY |
서버리스 |
특정 복제 그룹에 대한 복제 중 사용된 크레딧과 전송된 바이트 수. |
|
SEARCH_OPTIMIZATION_HISTORY |
서버리스 |
검색 최적화 서비스에서 사용된 크레딧. |
|
SERVERLESS_TASK_HISTORY |
서버리스 |
작업에서 사용된 크레딧. |
|
SNOWPIPE_STREAMING_FILE_MIGRATION_HISTORY |
서버리스 |
Credits consumed by Snowpipe Streaming compute (does not include client costs). |
|
USAGE_IN_CURRENCY_DAILY |
웨어하우스 서버리스 클라우드 서비스 |
모든 컴퓨팅 리소스의 일일 크레딧 사용량과 조직의 통화로 표시된 해당 사용량의 비용. |
|
WAREHOUSE_METERING_HISTORY |
웨어하우스 클라우드 서비스 |
웨어하우스 사용과 관련된 클라우드 서비스 비용을 포함하여, 각 웨어하우스의 시간당 크레딧 사용. |
참고
Snowflake Information Schema 의 뷰 및 테이블 함수는 비용과 관련된 사용량 데이터도 제공합니다. ACCOUNT_USAGE 스키마가 선호되지만, 상황에 따라서는 Information Schema가 더 빠를 수 있습니다.
예제 쿼리¶
다음 쿼리는 ACCOUNT_USAGE 뷰의 데이터를 드릴다운하여 컴퓨팅 비용에 대한 인사이트를 얻습니다.
참고
Account Usage 스키마의 뷰에 대해 실행된 쿼리를 수정하면 Organization Usage 스키마의 해당 뷰를 사용하여 전체 조직의 비용에 대한 인사이트를 얻을 수 있습니다. 예를 들어 두 스키마 모두 WAREHOUSE_METERING_HISTORY 뷰를 포함합니다.
전체 SQL 예제를 보려면 아래 쿼리의 이름을 클릭하십시오.
- 웨어하우스에 대한 계산
- 클라우드 서비스에 대한 계산
- 자동 클러스터링에 대한 계산
- 검색 최적화에 대한 계산
- 구체화된 뷰에 대한 계산
- Query Acceleration Service 요금 계산
- Snowpipe에 대한 계산
- 작업 요금 계산
- 복제에 대한 계산
- 파트너 도구에 대한 계산
웨어하우스에 대한 계산¶
- 쿼리: 지난 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;
- 쿼리: 특정 기간에 걸친 웨어하우스별 크레딧 사용
이 쿼리는 특정 기간에 각 웨어하우스의 총 크레딧 사용을 보여줍니다. 이는 다른 웨어하우스보다 많은 크레딧을 사용 중인 웨어하우스와 예상보다 많은 크레딧을 사용 중인 특정 웨어하우스의 식별에 도움이 됩니다.
-- 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;
- 쿼리: 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;
클라우드 서비스에 대한 계산¶
- 쿼리: 쿼리 유형별 총 클라우드 서비스 비용
이 쿼리는 특정 유형의 쿼리에서 클라우드 서비스에 사용한 총 크레딧을 반환합니다.
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'
를, 더 길거나 더 짧은 기간을 탐색하려면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;
- 쿼리: 클라우드 서비스 사용량이 많은 웨어하우스
이 쿼리는 컴퓨팅의 클라우드 서비스 부분을 다루기에 충분한 웨어하우스 시간을 사용하지 않는 웨어하우스를 보여줍니다. 이 쿼리는 클라우드 서비스 사용 비율이 높은(전체 크레딧의 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;
- 쿼리: 쿼리 시간에서 부분별로 정렬된 클라우드 서비스 사용량
이 쿼리는 지난 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;
자동 클러스터링에 대한 계산¶
- 쿼리: 자동 클러스터링 비용 기록(일별, 오브젝트별)
이 쿼리는 자동 클러스터링과 지난 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;
- 쿼리: 자동 클러스터링 기록 및 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;
검색 최적화에 대한 계산¶
- 쿼리: 검색 최적화 비용 기록(일별, 오브젝트별)
이 쿼리는 검색 최적화와 지난 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;
- 쿼리: 검색 최적화 기록 및 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;
구체화된 뷰에 대한 계산¶
- 쿼리: 구체화된 뷰 비용 기록(일별, 오브젝트별)
이 쿼리는 구체화된 뷰와 지난 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;
- 쿼리: 구체화된 뷰 기록 및 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;
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;
Snowpipe에 대한 계산¶
- 쿼리: 데이터 수집의 누적 사용량(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;
- 쿼리: 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;
- 쿼리: 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;
작업 요금 계산¶
- 쿼리: 총 작업 비용
다음 쿼리는 모든 서버리스 작업의 현재 크레딧 사용 정보를 나열합니다.
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;
복제에 대한 계산¶
- 쿼리: 계정 복제 비용
이 쿼리를 실행하면 이번 달의 계정 복제에 대해 복제 또는 장애 조치 그룹에서 사용하는 크레딧이 나열됩니다.
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());
- 쿼리: 데이터베이스 복제 비용 기록(일별, 오브젝트별)
이 쿼리는 복제 데이터베이스와 지난 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;
- 쿼리: 데이터베이스 복제 기록 및 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;
파트너 도구에 대한 계산¶
- 쿼리: 파트너 도구별 크레딧 사용
이 쿼리는 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;