청구 사용량 명세서 대조(Reconcile)하기
청구 사용량 명세서 대조(Reconcile)하기
Snowflake는 활성 계약(일명 Snowflake 주문서, Order Form)이 하나 이상 있는 고객에게 청구 사용량 명세서를 생성해요. 이 페이지에서는 Organization Usage 스키마의 청구 뷰에 있는 사용량 데이터를 사용해 명세서를 대조하는 쿼리를 설명해요.
출처: Snowflake 문서
본문
이 쿼리들을 실행하려면 다음 중 하나를 수행해야 해요.
- GLOBALORGADMIN 역할을 가진 사용자로 조직 계정에 로그인
- ACCOUNTADMIN 역할을 가진 사용자로 ORGADMIN이 활성화된 계정에 로그인
참고(Note): 2024년 3월 1일 이전에 발생한 사용량을 대조하는 쿼리를 실행하면 결과가 사용량 명세서와 약간 다를 수 있어요. 그 날짜 이전에는 일부 청구 뷰가 사용량 명세서와 일치하도록 값을 반올림하지 않았어요. 예를 들어, 2024년 3월 1일 이전에는:
- $0.001 또는 -$0.001 사용량은 사용량 명세서에 포함되지 않았지만 청구 뷰에는 포함됐어요.
- $1.004 사용량은 사용량 명세서에서 $1.00으로 내림됐지만 청구 뷰에서는 그렇지 않았어요.
- $1.006 사용량은 사용량 명세서에서 $1.01로 올림됐지만 청구 뷰에서는 그렇지 않았어요.
쿼리 결과와 사용량 명세서의 차이는 계약 활성 기간에 따라 수 센트에서 10달러 미만까지로 작아요.
잔여 잔액 대조
계약을 맺은 Snowflake 고객은 지정된 양의 사용량(즉, 용량 약정(capacity commitment))을 지불하겠다는 선행 재정적 약정을 해요. 고객이 Snowflake를 사용하면 지출 통화가 이 용량 약정에서 차감돼요. 각 사용량 명세서의 Summary 섹션은 원래 용량 약정에서 계약 시작 이후 총 사용량을 뺀 값으로 계산되는 계약의 잔여 잔액을 식별해요.
다음 쿼리를 사용해 사용량 명세서에 표시된 잔여 잔액을 REMAINING_BALANCE_DAILY 뷰의 데이터와 대조해요. 날짜를 사용량 명세서에 표시된 달의 마지막 날로 바꿔요.
SELECT date,
contract_number,
(capacity_balance + free_usage_balance + rollover_balance) AS remaining_balance
FROM snowflake.organization_usage.remaining_balance_daily
WHERE TRUE
AND date = LAST_DAY(TO_DATE('2024-01-01'));
참고(Note): 계약의 구독 기간이 종료된 경우 위 쿼리는 0을 올바르게 반환하지만, 사용량 명세서의 값은 0이 아닐 수 있어요. 이는 알려진 차이이며 향후 업데이트에서 해결될 예정이에요.
계약의 총 사용량 대조
Snowflake는 계약 시작 이후 사용량에 지출된 금액을 추적하고, 이 금액을 사용량 명세서의 Summary 섹션에 있는 Total Consumed로 분류해요. 이 소비는 소비된 크레딧이 아니라 지출 통화로 추적돼요.
다음 쿼리를 사용해 사용량 명세서에 표시된 총 소비를 USAGE_IN_CURRENCY_DAILY 뷰의 데이터와 대조해요. 쿼리가 반환하는 총 소비에는 balance_source가 overage인 사용량이 포함되지 않아요. 날짜를 사용량 명세서에 표시된 달의 마지막 날로 바꿔요.
SELECT contract_number,
SUM(usage_in_currency) AS total_consumed
FROM snowflake.organization_usage.usage_in_currency_daily
WHERE TRUE
AND usage_date <= LAST_DAY(TO_DATE('2024-01-01'))
AND LOWER(balance_source) != 'overage'
GROUP BY 1
ORDER BY 1;
계정별 월간 총 사용량 대조
명세서의 Monthly Usage 섹션은 조직의 각 계정에 대한 항목을 포함해요. 각 항목은 한 달 동안 계정의 총 사용량을 보여줘요. 소비된 크레딧 수와 지출 통화 금액을 보여줘요.
다음 쿼리를 사용해 각 계정의 월간 총 사용량을 USAGE_IN_CURRENCY_DAILY 뷰의 데이터와 대조해요. 쿼리가 반환하는 총 사용량에는 balance_source가 overage인 사용량이 포함되지 않아요. 날짜를 사용량 명세서에 표시된 달의 마지막 날로 바꿔요.
SELECT contract_number,
DATE_TRUNC(month, usage_date) AS usage_month,
CONCAT(account_locator,'-',region) AS account_name,
SUM(usage_in_currency) AS total_consumed,
FROM snowflake.organization_usage.usage_in_currency_daily
WHERE TRUE
AND usage_month = DATE_TRUNC(month,to_date('2024-01-01'))
AND LOWER(balance_source) != 'overage'
GROUP BY 1,2,3
ORDER BY 1,2,3;
참고(Note): Snowflake 내부에는 리전에 대한 다양한 명명 규칙이 있어요. 위 쿼리가 반환하는 리전 이름은 사용량 명세서의 Monthly Usage 섹션에 표시되는 것과 일치하지 않을 수 있지만, 같은 리전을 가리켜요. 이는 알려진 차이이며 향후 업데이트에서 해결될 예정이에요.
각 사용량 유형 대조
Snowflake 사용량은 다양한 기능과 아키텍처 구성 요소에 귀속될 수 있어요. 명세서의 Monthly Usage 섹션은 사용량이 발생한 계정별로 그룹화하고 사용량의 출처에 따라 사용량을 항목별로 나열해요. 예를 들어, account_1 계정의 자동 클러스터링에 귀속된 사용량은 account_2 계정의 자동 클러스터링 사용량과 다른 줄에 표시돼요. 각 줄은 소비된 크레딧 수와 지출 통화 금액을 보여줘요.
다음 쿼리를 사용해 명세서의 Monthly Usage 섹션에 표시된 개별 사용량 범주를 USAGE_IN_CURRENCY_DAILY 뷰의 데이터와 대조해요. 명세서처럼 각 사용량 유형은 쿼리 결과에서 계정별로 그룹화돼요. 날짜를 사용량 명세서에 표시된 달의 마지막 날로 바꿔요.
SELECT contract_number,
DATE_TRUNC(month, usage_date) AS usage_month,
CONCAT(account_locator,'-',region) AS account_name,
usage_type AS usage_category,
SUM(usage) AS units_consumed,
SUM(usage_in_currency) AS total_usage
FROM snowflake.organization_usage.usage_in_currency_daily
WHERE TRUE
AND usage_month = DATE_TRUNC(month, TO_DATE('2024-01-01'))
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
참고(Note): Snowflake 내부에는 리전에 대한 다양한 명명 규칙이 있어요. 위 쿼리가 반환하는 리전 이름은 사용량 명세서의 Monthly Usage 섹션에 표시되는 것과 일치하지 않을 수 있지만, 같은 리전을 가리켜요. 이는 알려진 차이이며 향후 업데이트에서 해결될 예정이에요.
더 알아보기 (Learn more)
- 청구 사용량 명세서 — 사용량 명세서 조회·다운로드
- Organization Usage 스키마 — 사용량 뷰
- 청구서 확인하기 — 청구서 조회