비용 귀속

조직은 조직 내 논리적 단위(예: 다른 부서, 환경 또는 프로젝트)에 Snowflake 사용 비용을 할당할 수 있습니다. 이 차지백 또는 쇼백 모델은 회계 목적에 유용하며, 조직에서 제어 및 최적화를 통해 비용을 절감할 수 있는 영역을 정확히 찾아냅니다.

부서 또는 프로젝트와 같은 여러 그룹에 비용을 특성으로 지정하려면 다음 권장 방법을 사용하십시오.

  • 오브젝트 태그 를 사용하여 리소스 및 사용자를 부서 또는 프로젝트와 연결하십시오.

  • 여러 부서에 속한 사용자를 대신하여 동일한 애플리케이션에서 쿼리를 수행하는 경우 쿼리 태그 를 사용하여 개별 쿼리를 부서 또는 프로젝트와 연결하십시오.

비용 특성 시나리오의 유형

가장 일반적으로 발생하는 비용 특성 시나리오는 다음과 같습니다. 이 시나리오에서 웨어하우스는 비용이 발생하는 리소스의 예로 사용됩니다.

  • 단일 비용 센터 또는 부서에서 독점적으로 사용하는 리소스: 예를 들어, 오브젝트 태그를 사용하여 웨어하우스를 부서와 연결할 수 있습니다. 이러한 오브젝트 태그를 사용하여 해당 웨어하우스에서 발생한 비용을 전적으로 해당 부서에 특성화할 수 있습니다.

  • 여러 부서의 사용자가 공유하는 리소스: 여러 부서의 사용자가 공유하는 웨어하우스를 예로 들 수 있습니다. 이 경우 오브젝트 태그를 사용하여 각 사용자를 부서와 연결합니다. 쿼리 비용은 사용자에게 귀속됩니다. 사용자에게 할당된 오브젝트 태그를 사용하여 부서별로 비용을 세분화할 수 있습니다.

  • 다른 부서의 사용자가 공유하는 애플리케이션 또는 워크플로: 사용자를 대신하여 쿼리를 발행하는 애플리케이션을 예로 들 수 있습니다. 이 경우 애플리케이션에서 실행되는 각 쿼리에는 쿼리가 수행되는 사용자의 팀 또는 비용 센터를 식별하는 쿼리 태그가 할당됩니다.

다음 섹션에서는 계정에서 오브젝트 태그를 설정하는 방법과 각 비용 특성 시나리오에 대한 세부 정보를 설명합니다.

비용 특성을 위한 오브젝트 태그 설정하기

비용 특성에 사용할 그룹을 나타내는 태그를 설정하는 경우에는 그룹이 단일 계정에 적용되는지 아니면 여러 계정에 적용되는지 결정해야 합니다. 이에 따라 태그 설정 방법이 결정됩니다.

예를 들어, 부서를 기준으로 비용을 특성으로 지정하고 싶다고 가정해 보겠습니다.

  • 부서에서 사용하는 리소스가 단일 계정에 위치하는 경우 해당 계정의 데이터베이스에 태그를 생성합니다.

  • 부서에서 사용하는 리소스가 여러 계정에 걸쳐 있는 경우, 조직의 키 계정(예: 조직 계정)에 태그를 만든 다음, 복제 를 통해 다른 계정에서 해당 태그를 사용할 수 있도록 설정합니다.

다음 섹션에서는 태그를 만들고, 태그를 복제하고, 리소스에 태그를 적용하는 방법을 설명합니다.

참고

이 섹션의 예제에서는 태그를 만들고 관리할 수 있는 권한이 부여된 것으로 가정한 사용자 지정 역할 tag_admin 을 사용합니다. 조직 내에서 오브젝트 태그에 대한 더욱 세분화된 권한 을 사용하여 보안 태그 전략을 개발할 수 있습니다.

태그 만들기

전략을 설계할 때 태그를 만들 계획이 있는 데이터베이스와 스키마를 결정하십시오.

  • 태그에 대한 전용 데이터베이스와 스키마를 만들 수 있습니다.

  • 조직 내 여러 계정의 리소스에 태그를 지정하려면 조직의 주요 계정(예: 조직 계정)에서 태그를 만들 수 있습니다.

다음 예에서는 사용하려는 태그에 대해 cost_management 라는 데이터베이스와 tags 라는 스키마를 생성합니다.

USE ROLE tag_admin;

CREATE DATABASE cost_management;
CREATE SCHEMA tags;
Copy

cost_managementtags 를 현재 데이터베이스 및 스키마로 선택한 상태에서 cost_center 라는 태그를 만들고 태그에 허용되는 값을 비용 센터의 이름으로 설정합니다.

CREATE TAG cost_center
  ALLOWED_VALUES 'finance', 'marketing', 'engineering', 'product';
Copy

태그 데이터베이스 복제하기

여러 계정을 보유한 조직에서 다른 계정에서도 태그를 사용할 수 있도록 하려면 계정을 복제 설정 하고, 복제 그룹 을 주요 계정(예: 조직 계정)에 생성합니다. 태그가 포함된 데이터베이스를 복제하도록 이 복제 그룹을 설정합니다.

오브젝트 태그가 포함된 데이터베이스 복제하기

예를 들어, my_org.my_accountmy_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';
Copy

그런 다음 태그를 사용할 수 있게 하려는 각 계정에서 보조 복제 그룹을 만들고 기본 그룹에서 이 그룹을 새로 고칩니다.

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

리소스 및 사용자 태그 지정하기

태그를 생성하고 복제한 후에는 이 태그를 사용하여 각 부서에 속한 웨어하우스와 사용자를 식별할 수 있습니다. 예를 들어, 영업 부서에서 warehouse1warehouse2 를 모두 사용하므로 두 웨어하우스 모두에 대해 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';
Copy

SQL 로 태그별 비용 뷰 보기

계정 내 또는 조직의 계정 간에 비용을 특성으로 지정할 수 있습니다.

  • 계정 내 비용 특성 지정하기

    ACCOUNT_USAGE 스키마에서 다음 뷰를 쿼리하여 계정 내 비용을 특성으로 지정할 수 있습니다.

  • 조직 내 계정 간 비용 특성 부여하기

    조직 내에서, 조직 계정 에서 ORGANIZATION_USAGE 스키마의 뷰를 쿼리하여 단일 부서에서만 사용하는 리소스에 대한 비용을 특성으로 지정할 수도 있습니다.

    참고

    • ORGANIZATION_USAGE 스키마에서 TAG_REFERENCES 뷰는 조직 계정에서만 사용할 수 있습니다.

    • QUERY_ATTRIBUTION_HISTORY 뷰는 계정의 ACCOUNT_USAGE 스키마에서만 사용할 수 있습니다. 조직 전체에 해당하는 뷰는 없습니다.

다음 섹션에서는 일반적인 비용 배분 시나리오 에 대한 비용 배분 방법을 설명합니다.

부서에서 공유하지 않는 리소스

부서별로 비용을 특성으로 지정하고 싶고 각 부서가 전용 웨어하우스 세트를 사용한다고 가정해 보겠습니다.

웨어하우스에 cost_center 태그를 지정하여 웨어하우스를 소유한 부서를 식별한 경우, object_idwarehouse_id 열의 ACCOUNT_USAGE TAG_REFERENCES 뷰WAREHOUSE_METERING_HISTORY 뷰 와 조인하여 웨어하우스별 사용 정보를 얻을 수 있으며, tag_value 열을 사용하여 해당 웨어하우스를 소유한 부서를 식별할 수 있습니다.

TAG_REFERENCES 및 WAREHOUSE_METERING_HISTORY 에 가입하여 전용 웨어하우스에 대한 특성 비용을 확인하십시오

다음 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;
Copy
+-------------+-------------+-----------------+
| TAG_NAME    | TAG_VALUE   |   TOTAL_CREDITS |
|-------------+-------------+-----------------|
| NULL        | untagged    |    20.360277159 |
| COST_CENTER | Sales       |    17.173333333 |
| COST_CENTER | Finance     |      8.14444444 |
+-------------+-------------+-----------------+

조직 계정 의 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;
Copy

다른 부서의 사용자가 공유하는 리소스

여러 부서의 사용자가 동일한 웨어하우스를 공유하며 각 부서에서 사용한 크레딧을 세분화하고 싶다고 가정해 보겠습니다. 사용자에게 cost_center 태그를 지정하여 소속 부서를 식별할 수 있으며, TAG_REFERENCES 뷰QUERY_ATTRIBUTION_HISTORY 뷰 에 조인할 수 있습니다.

참고

이 데이터는 한 번에 1개의 계정에 대해서만 가져올 수 있습니다. 조직의 여러 계정에서 이 데이터를 검색하는 쿼리를 실행할 수 없습니다.

공유 웨어하우스에 비용을 할당하기 위해 TAG_REFERENCES 및 WAREHOUSE_METERING_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;
Copy
+-----------+--------------------+
| USER_NAME | ATTRIBUTED_CREDITS |
|-----------+--------------------+
| FINUSER   | 6.603575468        |
| SALESUSER | 4.321378049        |
| ENGUSER   | 0.6217131392       |
|-----------+--------------------+

유휴 시간 없이 부서별 사용자 쿼리 비용 계산하기

다음 예제에서는 해당 부서의 사용자가 실행한 쿼리를 통해 각 부서의 컴퓨팅 비용을 특성으로 지정합니다. 이 쿼리는 부서를 식별하는 태그가 있는 사용자 오브젝트에 따라 달라집니다.

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;
Copy
+-------------+-------------+-----------------+
| TAG_NAME    | TAG_VALUE   |   TOTAL_CREDITS |
|-------------+-------------+-----------------|
| COST_CENTER | engineering |   0.02493688426 |
| COST_CENTER | finance     |    0.2281084988 |
| COST_CENTER | marketing   |    0.3686840545 |
|-------------+-------------+-----------------|

유휴 시간 없이 사용자의 쿼리 비용 계산하기

다음 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;
Copy
+-----------+--------------------+
| USER_NAME | ATTRIBUTED_CREDITS |
|-----------+--------------------|
| JSMITH    |       17.173333333 |
| MJONES    |         8.14444444 |
| SYSTEM    |         5.33985393 |
+-----------+--------------------+

태그가 없는 사용자의 쿼리 비용 계산하기

다음 예제는 태그가 지정되지 않은 사용자의 쿼리 비용을 계산한 것입니다. 이를 사용하여 태그가 사용자에게 일관되게 적용되고 있는지 확인할 수 있습니다.

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;
Copy
+------------+---------------+
| USER_NAME  | TOTAL_CREDITS |
|------------+---------------|
| RSMITH     |  0.1830555556 |
+------------+---------------+

여러 부서에 비용을 특성으로 지정해야 하는 애플리케이션에서 사용하는 리소스

이 섹션의 예제에서는 Snowflake로 구동되는 1개 이상의 애플리케이션에 대한 비용을 계산합니다.

이 예에서는 이러한 애플리케이션이 실행되는 모든 쿼리에 대해 애플리케이션을 식별하는 쿼리 태그를 설정한다고 가정합니다. 세션의 쿼리에 대한 쿼리 태그를 설정하려면 ALTER SESSION 명령을 실행합니다. 예:

ALTER SESSION SET QUERY_TAG = 'COST_CENTER=finance';
Copy

이렇게 하면 COST_CENTER=finance 태그가 세션 중에 실행되는 모든 후속 쿼리와 연결됩니다.

그런 다음 쿼리 태그를 사용하여 이러한 쿼리로 인해 발생한 비용을 해당 부서로 추적할 수 있습니다.

다음 섹션에서는 이 접근법을 사용하는 예제를 제공합니다.

부서별 쿼리 비용 계산하기

다음 예는 재무 부서를 위한 Query Acceleration Service 에 사용된 컴퓨팅 크레딧과 크레딧을 계산하는 예입니다. 이는 실행된 원래 쿼리에 적용된 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;
Copy
+---------------------+-----------------+------+
| QUERY_TAG           | COMPUTE_CREDITS | QAS  |
|---------------------+-----------------|------|
| COST_CENTER=finance |      0.00576115 | null |
+---------------------+-----------------+------+

쿼리 태그별 쿼리 비용 계산(유휴 시간 제외)

다음 예는 쿼리 태그별로 쿼리 비용을 계산하고 태그가 없는 쿼리(“태그 없음”으로 식별됨)를 포함합니다.

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;
Copy
+-------------------------+-----------------+------+
| TAG                     | COMPUTE_CREDITS | QAS  |
|-------------------------+-----------------+------+
| untagged                | 3.623173449     | null |
| COST_CENTER=engineering | 0.531431948     | null |
|-------------------------+-----------------+------+

쿼리 태그별 쿼리 비용 계산(유휴 시간 포함)하기

다음 예는 쿼리당 비용에 캡처되지 않은 유휴 시간을 웨어하우스 사용량에 비례하여 부서별로 분배하는 예입니다.

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;
Copy
+-------------------------+--------------------+
| TAG                     | ATTRIBUTED_CREDITS |
+-------------------------+--------------------|
| untagged                |        9.020031304 |
| COST_CENTER=finance     |        1.027742521 |
| COST_CENTER=engineering |        1.018755812 |
| COST_CENTER=marketing   |       0.4801370376 |
+-------------------------+--------------------+

Snowsight 에서 태그별 비용 뷰 보기

cost_center 태그가 있는 리소스 사용에 관해 보고하여 비용의 출처를 밝힐 수 있습니다. 이 데이터는 Snowsight 에서 액세스할 수 있습니다.

  1. ACCOUNT_USAGE 스키마에 대한 액세스 권한 이 있는 역할로 전환합니다.

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

  3. Consumption 을 선택합니다.

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

  5. 특정 비용 센터에 초점을 맞추려면 태그 값 목록에서 값을 선택하십시오.

  6. Apply 를 선택합니다.

Snowsight 에서의 필터링에 대한 자세한 내용은 태그로 필터링하기 섹션을 참조하십시오

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

쿼리 ID에 기반한 추가 쿼리는 섹션을 참조하십시오.

계층적 쿼리의 특성으로 지정 비용

여러 계층 쿼리를 실행하는 저장 프로시저의 경우 프로시저에 대한 루트 쿼리 ID를 사용하여 프로시저의 각 쿼리 비용을 계산할 수 있습니다.

  1. 저장 프로시저에 대한 루트 쿼리 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;
    
    Copy

    자세한 내용은 예: 저장 프로시저를 사용한 상위 쿼리 섹션을 참조하십시오.

  2. 전체 프로시저의 쿼리 비용을 합산하려면 <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);
    
    Copy