Attributing cost
Attributing cost (비용 귀속)
조직은 Snowflake 사용 비용을 조직 내 논리적 단위(예: 다른 부서, 환경, 또는 프로젝트)에 배분할 수 있어요. 이 청구(chargeback) 또는 표시(showback) 모델은 회계 목적에 유용하며, 비용을 줄일 수 있는 제어와 최적화의 혜택을 받을 수 있는 조직의 영역을 정확히 짚어줘요.
출처: Attributing cost
본문
부서나 프로젝트 같은 다른 그룹에 비용을 귀속시키려면 다음 권장 접근 방식을 사용해요.
- 객체 태그를 사용해 리소스와 사용자를 부서나 프로젝트와 연결.
- 쿼리가 여러 부서에 속한 사용자를 대신해 같은 애플리케이션이 만든 경우, 쿼리 태그를 사용해 개별 쿼리를 부서나 프로젝트와 연결.
비용 귀속 시나리오 유형
다음 비용 귀속 시나리오가 가장 흔하게 나타나요. 이 시나리오에서 웨어하우스는 비용을 발생시키는 리소스의 예로 사용돼요.
- 단일 비용 센터 또는 부서가 독점적으로 사용하는 리소스: 웨어하우스를 부서와 연결하기 위해 객체 태그를 사용하는 것이 예시예요. 이 객체 태그를 사용해 그 웨어하우스들이 발생시킨 비용을 그 부서에 완전히 귀속할 수 있어요.
- 여러 부서의 사용자가 공유하는 리소스: 다른 부서의 사용자가 공유하는 웨어하우스가 예시예요. 이 경우 객체 태그를 사용해 각 사용자를 부서와 연결해요. 쿼리 비용은 사용자에게 귀속돼요. 사용자에게 할당된 객체 태그를 사용해 비용을 부서별로 분류할 수 있어요.
- 여러 부서의 사용자가 공유하는 애플리케이션 또는 워크플로: 사용자를 대신해 쿼리를 발행하는 애플리케이션이 예시예요. 이 경우 애플리케이션이 실행하는 각 쿼리에는 그 쿼리가 이루어지는 사용자의 팀이나 비용 센터를 식별하는 쿼리 태그가 할당돼요.
다음 섹션은 내 계정에 객체 태그를 설정하는 방법을 설명하고 각 비용 귀속 시나리오에 대한 세부 정보를 제공해요.
비용 귀속용 객체 태그 설정
비용 귀속에 사용할 그룹을 나타내는 태그를 설정할 때, 그 그룹이 단일 계정에 적용되는지 여러 계정에 적용되는지 결정해야 해요. 이는 태그를 설정하는 방법을 결정해요.
예를 들어 비용을 부서별로 귀속하고 싶다고 가정해요.
- 부서가 사용하는 리소스가 단일 계정에 있으면 그 계정의 데이터베이스에 태그를 만들어요.
- 부서가 사용하는 리소스가 여러 계정에 걸쳐 있으면 조직의 키 계정(예: 조직 계정)에 태그를 만들고, 복제를 통해 그 태그를 다른 계정에서 사용할 수 있게 해요.
다음 섹션은 태그를 만들고, 태그를 복제하고, 리소스에 태그를 적용하는 방법을 설명해요.
- 태그 만들기
- 태그 데이터베이스 복제
- 리소스와 사용자 태깅
참고
이 섹션의 예시는 태그를 만들고 관리할 권한이 부여되었다고 가정되는 사용자 지정 역할 tag_admin을 사용해요. 조직 내에서 객체 태깅을 위해 더 세분화된 권한을 사용해 안전한 태깅 전략을 개발할 수 있어요.
태그 만들기
전략을 설계하는 일부로 태그를 만들 계획인 데이터베이스와 스키마를 결정해요.
- 태그를 위한 전용 데이터베이스와 스키마를 만들 수 있어요.
- 조직 전반의 다른 계정에서 리소스에 태그를 지정하려면 조직의 키 계정(예: 조직 계정)에 태그를 만들 수 있어요.
다음 예시는 사용할 계획인 태그를 위한 cost_management라는 데이터베이스와 tags라는 스키마를 만들어요.
USE ROLE tag_admin;
CREATE DATABASE cost_management;
CREATE SCHEMA tags;
cost_management와 tags를 현재 데이터베이스·스키마로 선택한 상태에서 cost_center라는 태그를 만들고 태그에 허용되는 값을 비용 센터 이름으로 설정해요.
CREATE TAG cost_center
ALLOWED_VALUES 'finance', 'marketing', 'engineering', 'product';
태그 데이터베이스 복제
여러 계정이 있는 조직이 있고 다른 계정에서 태그를 사용할 수 있게 하려면 복제를 위해 계정을 설정하고, 메인 계정(예: 조직 계정)에 복제 그룹을 만들어요. 태그를 포함한 데이터베이스를 복제하도록 이 복제 그룹을 설정해요.
예를 들어 my_org.my_account와 my_org.my_account_2라는 계정에 태그를 복제하려면 조직 계정에서 이 문장을 실행해요.
CREATE REPLICATION GROUP cost_management_repl_group
OBJECT_TYPES = DATABASES
ALLOWED_DATABASES = cost_management
ALLOWED_ACCOUNTS = my_org.my_account_1, my_org.my_account_2
REPLICATION_SCHEDULE = '10 MINUTE';
그런 다음 태그를 사용할 수 있게 하려는 각 계정에서 보조 복제 그룹을 만들고 이 그룹을 기본 그룹에서 새로고침해요.
CREATE REPLICATION GROUP cost_management_repl_group
AS REPLICA OF my_org.my_org_account.cost_management_repl_group;
ALTER REPLICATION GROUP cost_management_repl_group REFRESH;
리소스와 사용자 태깅
태그를 만들고 복제한 뒤 이 태그를 사용해 각 부서에 속한 웨어하우스와 사용자를 식별할 수 있어요. 예를 들어 sales 부서가 warehouse1과 warehouse2 둘 다를 사용하므로 두 웨어하우스에 대해 cost_center 태그를 'SALES'로 설정할 수 있어요.
팁
이상적으로는 리소스와 사용자를 만들 때 이 태그를 적용하는 과정을 자동화하는 워크플로가 있어야 해요.
USE ROLE tag_admin;
ALTER WAREHOUSE warehouse1 SET TAG cost_management.tags.cost_center='SALES';
ALTER WAREHOUSE warehouse2 SET TAG cost_management.tags.cost_center='SALES';
ALTER WAREHOUSE warehouse3 SET TAG cost_management.tags.cost_center='FINANCE';
ALTER USER finance_user SET TAG cost_management.tags.cost_center='FINANCE';
ALTER USER sales_user SET TAG cost_management.tags.cost_center='SALES';
SCIM으로 사용자 태그 자동화
비용 귀속을 위해 사용자 태깅 과정을 자동화하려면 Microsoft Entra ID나 Okta 같은 SCIM ID 공급자를 통해 Snowflake 사용자를 프로비저닝해 그렇게 할 수 있어요. SCIM을 사용하면 사용자가 생성되거나 업데이트될 때 비용 귀속 태그를 자동으로 적용할 수 있어, 각 새 사용자에 대해 ALTER USER <user_name> SET TAG를 수동으로 실행할 필요가 없고, 사용자가 부서에 합류하거나 부서 간에 이동할 때 비용 귀속 태그를 일관되게 유지할 수 있어요.
SCIM을 사용할 때 snowflakeTags 사용자 지정 속성은 쉼표로 구분된 정규화된 태그 참조 목록을 받아요. 예를 들어 프로비저닝 시점에 사용자를 finance 비용 센터에 할당하려면 SCIM 사용자 페이로드에 다음 값을 포함해요.
{
"userName": "JSMITH",
"displayName": "Jane Smith",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"snowflakeUserName": "JSMITH",
"snowflakeTags": "[cost_management.tags.cost_center:finance]"
}
}
SCIM을 통해 설정된 태그는 같은 TAG_REFERENCES 뷰에 나타나고 Snowsight 태그 필터(Snowsight에서 태그로 비용 보기 참고)와 함께 작동하므로, 기존 비용 귀속 쿼리와 대시보드가 변경 없이 작동해요.
이 접근 방식을 시작하려면:
- 위의 태그 만들기에서 설명한 대로 Snowflake에 태그를 만들어요.
- SCIM 프로비저너 역할에 태그 스키마에 대한 USAGE와 각 태그에 대한 APPLY를 부여해요.
완전한 설정 단계, 사전 요구 부여, API 예시는 다음의 "SCIM 통합으로 Snowflake 태그 채우기" 섹션을 참고해요.
- SCIM with Microsoft Entra ID
- SCIM with Okta
- SCIM with a custom identity provider
SQL에서 태그로 비용 보기
계정 내 또는 조직의 계정 전체에서 비용을 귀속할 수 있어요.
- 계정 내 비용 귀속: ACCOUNT_USAGE 스키마의 다음 뷰를 쿼리해 계정 내에서 비용을 귀속할 수 있어요.
- TAG_REFERENCES 뷰: 태그가 있는 객체(웨어하우스, 사용자 등)를 식별.
- WAREHOUSE_METERING_HISTORY 뷰: 웨어하우스의 크레딧 사용량 제공.
- QUERY_ATTRIBUTION_HISTORY 뷰: 쿼리의 컴퓨팅 비용 제공. 쿼리당 비용은 그 쿼리를 실행하는 웨어하우스 크레딧 사용량이에요. 이 뷰 사용에 대한 자세한 내용은 QUERY_ATTRIBUTION_HISTORY 뷰 정보를 참고해요.
- 조직의 계정 전체 비용 귀속: 조직 내에서 조직 계정의 ORGANIZATION_USAGE 스키마의 뷰를 쿼리해 단일 부서가 독점적으로 사용하는 리소스의 비용을 귀속할 수도 있어요.
참고
- ORGANIZATION_USAGE 스키마에서 TAG_REFERENCES 뷰는 조직 계정에서만 사용할 수 있어요.
- QUERY_ATTRIBUTION_HISTORY 뷰는 계정의 ACCOUNT_USAGE 스키마에서만 사용할 수 있어요. 이 뷰의 조직 전체에 해당하는 것은 없어요.
다음 섹션은 일반적인 비용 귀속 시나리오 중 일부에 대한 비용 귀속 방법을 설명해요.
- 부서가 공유하지 않는 리소스
- 여러 부서의 사용자가 공유하는 리소스
- 다른 부서에 비용을 귀속해야 하는 애플리케이션이 사용하는 리소스
부서가 공유하지 않는 리소스
비용을 부서별로 귀속하고 각 부서가 전용 웨어하우스 집합을 사용한다고 가정해요.
웨어하우스에 cost_center 태그를 지정해 웨어하우스를 소유한 부서를 식별하면, ACCOUNT_USAGE TAG_REFERENCES 뷰를 object_id와 warehouse_id 컬럼에서 WAREHOUSE_METERING_HISTORY와 조인해 웨어하우스별 사용량 정보를 얻을 수 있고, tag_value 컬럼을 사용해 그 웨어하우스들을 소유한 부서를 식별할 수 있어요.
다음 SQL 문장은 이 조인을 수행해요.
SELECT
TAG_REFERENCES.tag_name,
COALESCE(TAG_REFERENCES.tag_value, 'untagged') AS tag_value,
SUM(WAREHOUSE_METERING_HISTORY.credits_used_compute) AS total_credits
FROM
SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
LEFT JOIN SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
ON WAREHOUSE_METERING_HISTORY.warehouse_id = TAG_REFERENCES.object_id
AND TAG_REFERENCES.domain = 'WAREHOUSE'
WHERE
WAREHOUSE_METERING_HISTORY.start_time >= DATE_TRUNC('MONTH', DATEADD(MONTH, -1, CURRENT_DATE))
AND WAREHOUSE_METERING_HISTORY.start_time < DATE_TRUNC('MONTH', CURRENT_DATE)
GROUP BY TAG_REFERENCES.tag_name, COALESCE(TAG_REFERENCES.tag_value, 'untagged')
ORDER BY total_credits DESC;
조직 계정의 ORGANIZATION_USAGE 스키마의 뷰를 사용해 조직의 모든 계정에 대해 같은 귀속을 수행하는 유사한 쿼리를 실행할 수 있어요. 쿼리의 나머지는 변경되지 않아요.
SELECT
TAG_REFERENCES.tag_name,
COALESCE(TAG_REFERENCES.tag_value, 'untagged') AS tag_value,
SUM(WAREHOUSE_METERING_HISTORY.credits_used_compute) AS total_credits
FROM
SNOWFLAKE.ORGANIZATION_USAGE.WAREHOUSE_METERING_HISTORY
LEFT JOIN SNOWFLAKE.ORGANIZATION_USAGE.TAG_REFERENCES
ON WAREHOUSE_METERING_HISTORY.warehouse_id = TAG_REFERENCES.object_id
AND TAG_REFERENCES.domain = 'WAREHOUSE'
AND tag_database = 'COST_MANAGEMENT' AND tag_schema = 'TAGS'
WHERE
WAREHOUSE_METERING_HISTORY.start_time >= DATE_TRUNC('MONTH', DATEADD(MONTH, -1, CURRENT_DATE))
AND WAREHOUSE_METERING_HISTORY.start_time < DATE_TRUNC('MONTH', CURRENT_DATE)
GROUP BY TAG_REFERENCES.tag_name, COALESCE(TAG_REFERENCES.tag_value, 'untagged')
ORDER BY total_credits DESC;
여러 부서의 사용자가 공유하는 리소스
여러 부서의 사용자가 같은 웨어하우스를 공유하고 각 부서가 사용한 크레딧을 분류하고 싶다고 가정해요. 사용자에게 cost_center 태그를 지정해 그들이 속한 부서를 식별하고, TAG_REFERENCES 뷰를 QUERY_ATTRIBUTION_HISTORY 뷰와 조인할 수 있어요.
참고
이 데이터는 한 번에 단일 계정에 대해서만 얻을 수 있어요. 조직의 계정 전체에 걸쳐 이 데이터를 검색하는 쿼리는 실행할 수 없어요.
다음 섹션은 공유 리소스에 대한 비용 귀속 SQL 문장 예시를 제공해요.
- 지난 달 사용자 쿼리 비용 계산
- 유휴 시간 없이 부서별 사용자 쿼리 비용 계산
- 유휴 시간 없이 사용자별 쿼리 비용 계산
- 태그가 없는 사용자별 쿼리 비용 계산
지난 달 사용자 쿼리 비용 계산
다음 SQL 문장은 지난 달 비용을 계산해요. 이 예시에서 유휴 시간은 사용자에게 그 사용량에 비례해 분배돼요.
WITH
wh_bill AS (
SELECT SUM(credits_used_compute) AS compute_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND start_time < CURRENT_DATE
),
user_credits AS (
SELECT user_name, SUM(credits_attributed_compute) AS credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE start_time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND start_time < CURRENT_DATE
GROUP BY user_name
),
total_credit AS (
SELECT SUM(credits) AS sum_all_credits
FROM user_credits
)
SELECT
u.user_name,
u.credits / t.sum_all_credits * w.compute_credits AS attributed_credits
FROM user_credits u, total_credit t, wh_bill w
ORDER BY attributed_credits DESC;
유휴 시간 없이 부서별 사용자 쿼리 비용 계산
다음 예시는 해당 부서의 사용자가 실행한 쿼리를 통해 각 부서에 컴퓨팅 비용을 귀속해요. 이 쿼리는 사용자 객체에 그 부서를 식별하는 태그가 있다는 것에 의존해요.
WITH joined_data AS (
SELECT
tr.tag_name,
tr.tag_value,
qah.credits_attributed_compute,
qah.start_time
FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES tr
JOIN SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY qah
ON tr.domain = 'USER' AND tr.object_name = qah.user_name
)
SELECT
tag_name,
tag_value,
SUM(credits_attributed_compute) AS total_credits
FROM joined_data
WHERE start_time >= DATEADD(MONTH, -1, CURRENT_DATE)
AND start_time < CURRENT_DATE
GROUP BY tag_name, tag_value
ORDER BY tag_name, tag_value;
유휴 시간 없이 사용자별 쿼리 비용 계산
다음 SQL 문장은 지난 달의 사용자별 비용(유휴 시간 제외)을 계산해요.
SELECT user_name, SUM(credits_attributed_compute) AS credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE
start_time >= DATEADD(MONTH, -1, CURRENT_DATE)
AND start_time < CURRENT_DATE
GROUP BY user_name;
태그가 없는 사용자별 쿼리 비용 계산
다음 예시는 태그가 없는 사용자의 쿼리 비용을 계산해요. 이를 사용해 태그가 사용자에게 일관되게 적용되고 있는지 확인할 수 있어요.
SELECT qah.user_name, SUM(qah.credits_attributed_compute) as total_credits
FROM
SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY qah
LEFT JOIN snowflake.account_usage.tag_references tr
ON qah.user_name = tr.object_name AND tr.DOMAIN = 'USER'
WHERE
start_time >= dateadd(month, -1, current_date)
AND qah.user_name IS NULL OR tr.object_name IS NULL
GROUP BY qah.user_name
ORDER BY total_credits DESC;
다른 부서에 비용을 귀속해야 하는 애플리케이션이 사용하는 리소스
이 섹션의 예시는 Snowflake로 구동되는 하나 이상의 애플리케이션에 대한 비용을 계산해요.
예시는 이 애플리케이션이 실행되는 모든 쿼리에 대해 애플리케이션을 식별하는 쿼리 태그를 설정한다고 가정해요. 세션의 쿼리에 대한 쿼리 태그를 설정하려면 ALTER SESSION 명령을 실행해요. 예:
ALTER SESSION SET QUERY_TAG = 'COST_CENTER=finance';
이것은 세션 동안 실행되는 모든 후속 쿼리와 COST_CENTER=finance 태그를 연결해요.
그런 다음 쿼리 태그를 사용해 이 쿼리들이 발생시킨 비용을 적절한 부서로 추적할 수 있어요.
다음 섹션은 이 접근 방식을 사용하는 예시를 제공해요.
- 부서별 쿼리 비용 계산
- 쿼리 태그별 쿼리 비용 계산(유휴 시간 제외)
- 쿼리 태그별 쿼리 비용 계산(유휴 시간 포함)
부서별 쿼리 비용 계산
다음 예시는 finance 부서의 컴퓨팅 크레딧과 쿼리 가속기 서비스에 사용된 크레딧을 계산해요. 이것은 실행된 원래 쿼리에 COST_CENTER=finance 쿼리 태그가 적용된 것에 의존해요.
비용은 유휴 시간을 제외한다는 점에 주의해요.
SELECT
query_tag,
SUM(credits_attributed_compute) AS compute_credits,
SUM(credits_used_query_acceleration) AS qas
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE query_tag = 'COST_CENTER=finance'
GROUP BY query_tag;
쿼리 태그별 쿼리 비용 계산(유휴 시간 제외)
다음 예시는 쿼리 태그별로 쿼리 비용을 계산하고 태그가 없는 쿼리("untagged"로 식별)를 포함해요.
SELECT
COALESCE(NULLIF(query_tag, ''), 'untagged') AS tag,
SUM(credits_attributed_compute) AS compute_credits,
SUM(credits_used_query_acceleration) AS qas
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE start_time >= DATEADD(MONTH, -1, CURRENT_DATE)
GROUP BY tag
ORDER BY compute_credits DESC;
쿼리 태그별 쿼리 비용 계산(유휴 시간 포함)
다음 예시는 쿼리당 비용에서 포착되지 않은 유휴 시간을 부서에 그 웨어하우스 사용량에 비례해 분배해요.
WITH
wh_bill AS (
SELECT SUM(credits_used_compute) AS compute_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND start_time < CURRENT_DATE
),
tag_credits AS (
SELECT
COALESCE(NULLIF(query_tag, ''), 'untagged') AS tag,
SUM(credits_attributed_compute) AS credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE start_time >= DATEADD(MONTH, -1, CURRENT_DATE)
GROUP BY tag
),
total_credit AS (
SELECT SUM(credits) AS sum_all_credits
FROM tag_credits
)
SELECT
tc.tag,
tc.credits / t.sum_all_credits * w.compute_credits AS attributed_credits
FROM tag_credits tc, total_credit t, wh_bill w
ORDER BY attributed_credits DESC;
Snowsight에서 태그로 비용 보기
cost_center 태그가 있는 리소스의 사용에 대해 보고해 비용을 귀속할 수 있어요. Snowsight에서 이 데이터에 접근할 수 있어요.
- ACCOUNT_USAGE 스키마에 접근할 수 있는 역할로 전환해요.
- 내비게이션 메뉴에서 Admin » Cost management를 선택해요.
- Consumption을 선택해요.
- Tags 드롭다운에서 cost_center 태그를 선택해요.
- 특정 비용 센터에 집중하려면 태그 값 목록에서 값을 선택해요.
- Apply를 선택해요.
Snowsight에서 필터링에 대한 자세한 내용은 Filter by tag를 참고해요.
QUERY_ATTRIBUTION_HISTORY 뷰 정보
QUERY_ATTRIBUTION_HISTORY 뷰를 사용해 쿼리를 기반으로 비용을 귀속할 수 있어요. 쿼리당 비용은 그 쿼리를 실행하는 웨어하우스 크레딧 사용량이에요. 이 비용은 쿼리 실행의 결과로 발생하는 다른 크레딧 사용량을 포함하지 않아요. 예를 들어 다음은 쿼리 비용에 포함되지 않아요.
- 데이터 전송 비용
- 저장 비용
- 클라우드 서비스 비용
- 서버리스 기능 비용
- AI 서비스가 처리한 토큰 비용
동시에 실행되는 쿼리의 경우 웨어하우스 비용은 주어진 시간 간격 동안 그 리소스 소비의 가중 평균을 기반으로 개별 쿼리에 귀속돼요.
쿼리당 비용은 웨어하우스 유휴 시간을 포함하지 않아요. 유휴 시간은 웨어하우스에서 쿼리가 실행되지 않는 기간이며 웨어하우스 수준에서 측정될 수 있어요.
추가 쿼리 예시
다음 섹션은 비용 귀속에 사용할 수 있는 추가 쿼리를 제공해요.
- 유사한 쿼리 그룹화
- 계층적 쿼리 비용 귀속
유사한 쿼리 그룹화
반복되거나 유사한 쿼리의 경우 query_hash 또는 query_parameterized_hash를 사용해 쿼리별로 비용을 그룹화해요.
이번 달 가장 비싼 반복 쿼리를 찾으려면 다음 문장을 실행해요.
SELECT query_parameterized_hash,
COUNT(*) AS query_count,
SUM(credits_attributed_compute) AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE start_time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND start_time < CURRENT_DATE
GROUP BY query_parameterized_hash
ORDER BY total_credits DESC
LIMIT 20;
쿼리 ID를 기반으로 한 추가 쿼리는 Examples를 참고해요.
계층적 쿼리 비용 귀속
여러 계층적 쿼리를 발행하는 저장 프로시저의 경우, 프로시저의 루트 쿼리 ID를 사용해 그 프로시저에 대한 귀속된 쿼리 비용을 계산할 수 있어요.
- 저장 프로시저의 루트 쿼리 ID를 찾으려면 ACCESS_HISTORY 뷰를 사용해요. 예를 들어 저장 프로시저의 루트 쿼리 ID를 찾으려면 query_id를 설정하고 다음 문장을 실행해요.
SET query_id = '<query_id>';
SELECT query_id,
parent_query_id,
root_query_id,
direct_objects_accessed
FROM SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY
WHERE query_id = $query_id;
자세한 내용은 Ancestor queries with stored procedures를 참고해요.
- 전체 프로시저의 쿼리 비용을 합산하려면 root_query_id를 바꾸고 다음 문장을 실행해요.
SET query_id = '<root_query_id>';
SELECT SUM(credits_attributed_compute) AS total_attributed_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
WHERE (root_query_id = $query_id OR query_id = $query_id);
더 알아보기
- Managing cost in Snowflake — 비용 관리 프레임워크
- Exploring compute cost — 컴퓨팅 비용 탐색