커스텀 예산(Custom Budgets)

커스텀 예산(Custom Budgets)

커스텀 예산을 사용하면 커스텀 객체 그룹의 컴퓨팅 비용을 모니터링할 수 있어요. 모니터링하려는 객체를 두 가지 방식으로 지정할 수 있어요.

  • 예산에 태그를 추가해요. 지정된 태그/값 쌍을 가진 모든 객체가 예산에 의해 모니터링돼요.
  • 각 객체를 예산에 개별적으로 추가해요.

같은 예산이 개별로 추가된 객체와 태그로 추가된 객체를 모두 추적할 수 있어요. 객체가 둘 이상의 이유로 예산에 포함되면(예: 개별로 추가되었고 지정된 태그/값 쌍도 가짐) 그 크레딧 사용량은 예산의 지출 한도에 한 번만 계산돼요.

객체를 커스텀 예산에 추가하면 예산은 백그라운드 유지 관리 작업과 서버리스 기능을 포함한 객체의 모든 컴퓨팅 비용을 모니터링해요. 예를 들어 테이블을 커스텀 예산에 추가했고 그 테이블에 자동 클러스터링이 활성화되어 있으면, 예산은 자동 클러스터링의 백그라운드 유지 관리를 위한 크레딧 사용량을 모니터링해요.

출처: Snowflake 문서

본문

태그로 객체 모니터링

태그는 계정 내 논리적 단위에 속하는 객체의 크레딧 사용량을 모니터링하기 위해 예산에 적용할 수 있어요. 조직 내 비용 센터가 발생시키는 비용을 추적하기 위해 cost_center 태그를 사용한다고 가정해 봐요. 판매 팀에 귀속된 모든 객체에 cost_center = 'sales' 태그/값 쌍을 지정할 수 있어요. 판매 팀이 사용하는 각 객체를 예산에 개별적으로 추가하는 대신, cost_center = 'sales' 태그/값 쌍만 추가하면 예산이 그 태그/값 쌍이 할당된 모든 객체의 크레딧 사용량을 자동으로 모니터링해요.

팁(Tip): 사용자 태그 지정을 자동화하려면 SCIM ID 공급자를 통해 사용자를 프로비저닝하고 snowflakeTags 속성을 사용해 사용자가 생성·업데이트될 때 태그를 자동으로 적용할 수 있어요. 자세한 내용은 SCIM으로 사용자 태그 자동화를 참고해요. 공급자별 설정 단계는 다음을 참고해요.

태그 상속(Tag inheritance)

예산에 태그를 추가하면 상위 객체에서 태그를 상속한 객체를 포함해 해당 태그를 가진 모든 객체를 추적해요. 예를 들어 데이터베이스에 태그가 있으면 데이터베이스 내의 테이블이 태그를 상속하고 예산에 의해 추적돼요. 예산은 태그/값 쌍을 기반으로 사용량을 추적하므로, 테이블 수준에서 태그 값을 재정의하면 예산이 테이블과 관련된 사용량을 추적하는지 여부가 바뀔 수 있어요. 예를 들어 team = 'eng' 태그를 가진 객체를 추적하는 예산이 있다고 가정해 봐요. 데이터베이스가 team = 'eng' 태그를 가지지만 데이터베이스 내의 테이블이 team = 'IT' 태그를 가지면 예산은 그 테이블과 관련된 비용을 모니터링하지 않아요.

예산의 맥락에서 태그는 계정에서 상속되지 않아요. 계정 예산이 그 사용 사례를 충족하기 위한 것이기 때문이에요.

태그 값이 재정의되는 방식을 포함한 자세한 내용은 태그 상속을 참고해요.

여러 예산으로 객체 추적

여러 예산이 같은 태그/값 쌍을 추가할 수 있는데, 이는 하나 이상의 예산이 같은 객체의 크레딧 사용량을 추적할 수 있다는 뜻이에요. 예를 들어 budget_1과 budget_2 둘 다에 cost_center = 'eng' 태그를 추가했다고 가정해 봐요. cost_center = 'eng' 태그가 있는 웨어하우스가 크레딧을 소비하면 budget_1과 budget_2 둘 다의 크레딧 한도에 계산돼요.

객체에 여러 태그가 있으면 둘 이상의 예산이 객체를 추적할 수도 있어요. 예를 들어 웨어하우스에 cost_center = 'finance'와 stage = 'dev' 두 태그가 있다고 가정해 봐요. cost_center = 'finance'를 추적하는 예산 하나와 stage = 'dev'를 추적하는 예산 하나를 만들 수 있어요. 웨어하우스가 소비하는 크레딧은 두 예산 모두의 크레딧 한도에 계산돼요.

제한사항과 고려사항

태그로 객체를 모니터링할 때 다음을 유의해요.

  • 객체의 태그를 변경하면 태그를 사용하는 예산에 변경이 반영되는 데 최대 6시간이 걸릴 수 있어요.
  • 현재 알림(alerts)은 태그로 모니터링할 수 없어요. 개별적으로 추가해야 해요.
  • 월의 첫 이틀 내의 태그 변경은 이전 달 사용량에 반영돼요.

커스텀 예산에 지원되는 객체

다음 유형의 Snowflake 객체를 모니터링하는 커스텀 예산을 만들 수 있어요.

객체 모니터링되는 비용
AI Gateway Preview Feature — Open, 모든 계정에서 사용 가능. Cortex AI Gateway를 통해 보내진 추론 요청. 자세한 내용은 "AI Gateway 추가"를 참고해요.
Alerts 서버리스 알림은 계정 예산이 모니터링해요. 사용자 관리 웨어하우스로 실행되는 알림의 크레딧 사용량을 모니터링하려면 웨어하우스를 예산에 추가해야 해요. 알림 비용에 대한 자세한 내용은 "알림 비용 이해"를 참고해요.
Apps(Snowflake Native Apps) Snowflake Native App이 만들고 소유한 객체에 대한 예산 동작은 앱을 직접 추가하는지 태그로 추가하는지에 따라 달라져요. 태그로 Snowflake Native App을 예산에 추가하면 일치하는 태그/값 조합을 가진 웨어하우스만 공유 여부와 무관하게 자동으로 추적돼요. 앱을 예산에 직접 추가하면 크레딧을 소비하고 앱이 만들고 소유한 모든 객체가 예산에 자동으로 추가돼요. 여기에는 앱이 소유한 웨어하우스와 Snowpark Container Services 컴퓨팅 풀이 포함돼요. 공유되는 웨어하우스와 컴퓨팅 풀은 수동으로 추가할 수 있지만 자동으로 추적되지는 않아요. 앱이 만들고 소유한 객체를 별도의 예산에 추가할 수는 없어요. 공유되는 웨어하우스와 컴퓨팅 풀은 별도의 예산에 추가할 수 있어요. 웨어하우스나 컴퓨팅 풀이 앱이 소유하는지 확인하려면 다음을 확인해요. 웨어하우스의 경우 SHOW WAREHOUSES 명령을 실행해요. owner_role_type 열의 값이 APPLICATION이면 웨어하우스는 Snowflake Native App이 소유한 것이에요. 컴퓨팅 풀의 경우 SHOW COMPUTE POOLS 명령을 실행해요. application 열의 값이 NULL이 아니면 컴퓨팅 풀은 Snowflake Native App이 소유한 것이에요.
Compute pool Snowpark Container Services용 컴퓨팅 풀 사용량. 자세한 내용은 "컴퓨팅 풀 비용"을 참고해요.
Cortex Agent 오케스트레이션과 도구 사용량. 자세한 내용은 "비용 고려사항"을 참고해요.
Databases 데이터베이스를 예산에 추가하면 데이터베이스가 포함하는 모든 지원 객체도 자동으로 추가돼요. 예산은 다음 객체와 서버리스 기능의 크레딧 사용량을 모니터링해요. 위에 설명된 지원 스키마 객체, 보조(복제본) 데이터베이스에 대한 복제. 참고: 복제 또는 장애 조치 그룹에서 복제된 보조 데이터베이스의 복제 비용은 계정 예산으로만 모니터링할 수 있어요.
Materialized views 구체화된 뷰의 백그라운드 유지 관리. 자세한 내용은 "Materialized Views Cost"를 참고해요.
Schemas 스키마를 예산에 추가하면 스키마가 포함하는 모든 지원 객체도 자동으로 추가돼요. 예산은 위에 설명된 스키마 객체의 크레딧 사용량을 모니터링해요.
Pipes Snowpipe로 데이터를 로드하기 위한 리소스 소비. 자세한 내용은 "Snowpipe costs"를 참고해요.
Snowflake CoWork 오케스트레이션과 도구 사용량을 포함한 Snowflake CoWork 상호작용.
Tables 테이블에서 활성화되어 있다면 자동 클러스터링과 검색 최적화의 백그라운드 유지 관리 작업.
Tasks 서버리스 태스크는 커스텀 예산이 모니터링해요. 사용자 관리 웨어하우스로 실행되는 태스크의 크레딧 사용량을 모니터링하려면 웨어하우스를 예산에 추가해야 해요. 자세한 내용은 "Task costs"를 참고해요.
Warehouses 쿼리 실행, 웹 인터페이스 및 기타 기능(Virtual warehouse credit usage 참고)용 컴퓨팅 리소스, 서버리스 태스크, 클라우드 서비스 컴퓨팅.

자세한 내용은 커스텀 예산에서 태그 추가·제거를 참고해요.

커스텀 예산 생성

다음 섹션은 커스텀 예산을 만드는 방법을 설명해요.

Snowsight를 사용하거나 SQL 문을 실행해 커스텀 예산을 만들 수 있어요.

예산 생성을 위한 커스텀 역할 생성

계정에서 예산을 만들기 위해 커스텀 역할을 사용할 수 있어요. 커스텀 예산을 만들려면 역할에 부여해야 하는 권한과 역할의 전체 목록은 예산 역할과 권한을 참고해요.

다음 예시는 budget_owner라는 역할을 만들고 budgets_db.budgets_schema 스키마에서 커스텀 예산을 만드는 데 필요한 역할과 권한을 부여해요. 예시는 ACCOUNTADMIN 역할로 실행해야 해요.

USE ROLE ACCOUNTADMIN;

CREATE ROLE budget_owner;

GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner;
GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;

GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_owner;

예산 소유자 외의 역할이 커스텀 예산 설정을 수정할 수 있게 하려면 수정 권한이 있는 커스텀 역할을 만들 수 있어요. 자세한 내용은 커스텀 예산 관리를 위한 커스텀 역할 생성을 참고해요.

Snowsight로 커스텀 예산 생성

참고(Note): 계정 예산이 활성화되지 않았거나 비활성화되었다면 Snowsight로 커스텀 예산을 만들 수 없어요. 하지만 SQL로 커스텀 예산을 만들 수는 있어요.

  • Snowsight에 로그인해요.
  • 내비게이션 메뉴에서 Admin » Cost management를 선택해요.
  • Budgets 탭을 선택해요.
  • + Budget을 선택해요.
  • Basic Information 페이지에서 다음 단계를 완료해요.
    • Location to store 드롭다운에서 예산을 만들 데이터베이스와 스키마의 이름을 선택해요.
    • Name 필드에 커스텀 예산의 이름을 지정해요.
    • Budget (credits per month) 필드에 예산의 지출 한도를 지정해요.
    • 지출을 더 면밀히 볼 수 있도록 예산 새로고침 간격을 줄이려면 Enable low latency budget을 선택해요.
    • Threshold 필드에 예산 한도의 백분율을 지정해요. Snowflake가 지출이 예산 한도의 이 백분율을 초과할 것이라고 판단하면 알림이 전송돼요.
    • Notify 필드에 알림 이메일을 받을 이메일 주소를 입력해요.

참고(Note): 예산 알림용으로 추가된 각 이메일 주소는 검증(verified)되어야 해요. 목록의 이메일 주소 중 하나라도 검증되지 않으면 알림 이메일 설정이 실패해요.

  • Next를 선택해요.
  • Budget scope 페이지에서 커스텀 예산에 추가할 객체를 추가해요.
    • 태그 사용으로 객체의 소비를 추적한다면 다음 단계를 완료해요.
      • Tags on resources 드롭다운 목록을 선택해요.
      • 적절한 태그를 찾은 후 펼쳐서 하나 이상의 값을 선택해요.
      • Done을 선택해요.
    • 개별 객체를 예산에 추가한다면 다음 단계를 완료해요.
      • Resources 드롭다운 목록을 선택해요.
      • 하나 이상의 객체를 선택해요.
      • Done을 선택해요.

참고(Note): 개별 객체를 직접 추가한다면 객체를 하나의 커스텀 예산에만 추가할 수 있어요. 이 경우 객체가 현재 한 커스텀 예산에 포함되어 있고 그 객체를 두 번째 커스텀 예산에 추가하면, Budgets는 경고 없이 그 객체를 첫 번째 커스텀 예산에서 제거해요.

이 동작은 태그를 사용해 객체를 예산에 추가하는 경우에는 적용되지 않아요. 태그를 사용해 객체를 예산에 추가한다면 하나 이상의 태그를 가진 객체를 여러 커스텀 예산에 포함할 수 있어요.

  • Create를 선택해요.

커스텀 예산을 만들고 설정한 후에는 비계정 관리자가 예산 리소스와 사용량을 모니터링할 수 있게 하는 커스텀 역할을 만들 수 있어요. 자세한 내용은 커스텀 예산 모니터링을 위한 커스텀 역할 생성을 참고해요.

SQL 명령으로 커스텀 예산 생성

커스텀 예산을 만들고 지출 한도와 알림 이메일 주소를 설정해요.

참고(Note):

  • 계정의 기존 예산을 검토해요.

참고(Note): 다음 문장은 접근 권한이 있는 예산을 반환해요. ACCOUNTADMIN 역할을 가진 사용자만 계정의 모든 예산을 볼 수 있어요.

SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
  • CREATE BUDGET 명령을 사용해 budgets_db.budgets_schema에 my_budget 예산을 만들어요.
USE SCHEMA budgets_db.budgets_schema;

CREATE SNOWFLAKE.CORE.BUDGET my_budget();
  • 월간 지출 한도를 설정해요. 예를 들어 월 500크레딧으로 지출 한도를 설정해요.
CALL my_budget!SET_SPENDING_LIMIT(500);
  • 크레딧 사용량이 지출 한도를 초과할 것으로 예상될 때 알림을 받도록 예산 알림을 설정해요. 예산 알림을 참고해요.

커스텀 예산을 만들고 설정한 후에는 비계정 관리자가 예산 리소스와 사용량을 모니터링할 수 있게 하는 커스텀 역할을 만들 수 있어요. 자세한 내용은 커스텀 예산 모니터링을 위한 커스텀 역할 생성을 참고해요.

새 예산에 객체를 추가하려면 커스텀 예산에서 객체 추가·제거를 참고해요.

커스텀 예산 관리를 위한 커스텀 역할 생성

커스텀 예산을 모니터링하고 수정하려면 커스텀 역할에 권한과 인스턴스 역할을 부여할 수 있어요. 커스텀 예산을 수정하려면 역할에 부여해야 하는 권한과 역할의 전체 목록은 예산 역할과 권한을 참고해요.

커스텀 역할 예시

budgets_db.budgets_schema 스키마의 my_budget 예산을 모니터링·수정할 수 있는 능력을 커스텀 역할 budget_admin에 부여해요.

참고(Note): 다음 예시를 실행하려면 커스텀 예산에 대한 OWNERSHIP 권한이 필요해요.

  • budgets_db.budgets_schema 스키마의 my_budget 예산에 대해 커스텀 역할 budget_admin에 필요한 권한과 인스턴스 역할을 부여해요.
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin;

GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_admin;

GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
TO ROLE budget_admin;

GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
  • 커스텀 예산에 추가하거나 제거할 객체와 태그에 APPLYBUDGET 권한을 부여해요. 이 단계는 추가하거나 제거할 각 객체 또는 태그에 필요해요.
    • 예를 들어 역할 budget_admin이 커스텀 예산 my_budget에 데이터베이스 db1을 추가할 수 있게 하려면 다음 문장을 실행해요.
GRANT USAGE ON DATABASE db1 TO ROLE budget_admin;

GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;

커스텀 예산에서 태그 추가·제거

Snowsight 또는 SQL을 사용해 커스텀 예산에서 태그를 추가하거나 제거할 수 있어요. 예산에 추가된 각 태그는 태그에 대한 하나 이상의 값을 포함해요.

참고(Note): 커스텀 예산에서 태그를 추가하거나 제거하려면 예산과 태그에 필요한 권한을 가진 역할을 사용해야 해요. 자세한 내용은 커스텀 예산 관리를 위한 커스텀 역할 생성을 참고해요.

Snowsight로 커스텀 예산에서 태그 추가·제거

  • Snowsight에 로그인해요.
  • 내비게이션 메뉴에서 Admin » Cost management를 선택해요.
  • Budgets를 선택해요.
  • 편집할 예산을 선택해요.
  • 대시보드에서 (편집 아이콘)을 선택해요.
  • + Tags & resources를 선택해요.
  • Tags를 펼치고 추가하려는 태그로 이동해요.
  • 다음 중 하나를 수행해요.
    • 태그에 허용 값 목록이 있으면 값 중 하나 이상을 선택해요.
    • 태그를 임의 값으로 설정할 수 있으면 값을 지정해요.
  • Done을 선택해요.

참고(Note): Snowsight에서 예산에 태그를 추가할 때 다음을 유의해요.

  • 태그는 예산에 추가하기 전에 최소 하나의 객체에 적용되어야 해요.
  • 태그를 객체에 추가한 후 태그가 나타나는 데 최대 2시간이 걸릴 수 있어요.

SQL 명령으로 커스텀 예산에서 태그 추가·제거

예산에서 태그를 추가하거나 제거하는 데 사용하는 역할은 태그에 대한 APPLYBUDGET 권한을 가져야 해요. 자세한 내용은 커스텀 예산 관리를 위한 커스텀 역할 생성 섹션의 예시를 참고해요.

커스텀 예산에 이미 있는 태그 목록을 검토하려면 예산의 <budget_name>!GET_RESOURCE_TAGS 메서드를 호출해요. 예를 들어 budgets_db.budgets_schema 스키마의 my_budget 예산에 있는 태그 목록을 보려면 다음 문장을 실행해요.

CALL budgets_db.budgets_schema.my_budget!GET_RESOURCE_TAGS();

태그는 참조(reference)로 예산에 추가하거나 제거해야 해요.

  • 다음 단계로 cost_mgmt_db.tags.cost_center 태그를 my_budget 예산에 추가할 수 있어요.
    • 다음 문장을 실행해 역할 budget_admin에 태그에 대한 APPLYBUDGET 권한을 부여해요.
GRANT APPLYBUDGET ON TAG cost_center TO ROLE budget_admin;
  • 다음 문장을 실행해 ADD_RESOURCE_TAG 인스턴스 메서드에 cost_center 태그에 대한 참조를 전달해요. 태그의 값은 finance로 설정돼요.
CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE_TAG(
   SELECT SYSTEM$REFERENCE('TAG',
'cost_mgmt_db.tags.cost_center',
'SESSION',
'applybudget'),
'finance');

SYSTEM$REFERENCE 함수는 태그에 APPLYBUDGET 권한이 부여된 cost_center 태그에 대한 참조를 만들어요. 이를 통해 예산은 계정에서 지정된 태그/값 쌍을 가진 객체를 모니터링할 수 있어요. 함수의 세 번째 파라미터는 참조의 범위를 지정하며, 여기서 'SESSION'은 세션 범위의 참조를 만들어요. 예산의 ADD_RESOURCE_TAG 메서드에 전달되는 참조는 임시 참조 범위(즉 세 번째 파라미터는 'SESSION' 또는 'CALL')로 만들 수 있어요.

  • 다음 단계로 my_budget 예산에서 cost_center 태그를 제거할 수 있어요.
    • 다음 문장을 실행해 역할 budget_admin에 데이터베이스에 대한 APPLYBUDGET 권한을 부여해요.
GRANT APPLYBUDGET ON TAG cost_center TO ROLE budget_admin;
CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE_TAG(
   SELECT SYSTEM$REFERENCE('TAG',
'cost_mgmt_db.tags.cost_center',
'SESSION',
'applybudget'),
'finance');

커스텀 예산에서 객체 추가·제거

Snowsight 또는 SQL을 사용해 커스텀 예산에서 객체를 추가하거나 제거할 수 있어요.

참고(Note): 커스텀 예산에서 객체를 추가하거나 제거하려면 예산과 객체에 필요한 권한을 가진 역할을 사용해야 해요. 자세한 내용은 커스텀 예산 관리를 위한 커스텀 역할 생성을 참고해요.

Snowsight로 커스텀 예산에서 객체 추가·제거

  • Snowsight에 로그인해요.
  • 내비게이션 메뉴에서 Admin » Cost management를 선택해요.
  • Budgets를 선택해요.
  • 편집할 예산을 선택해요.
  • 대시보드에서 (편집 아이콘)을 선택해요.
  • + Tags & resources를 선택한 다음 커스텀 예산에 추가할 객체를 선택해요.

참고(Note):

  • 데이터베이스나 스키마를 선택하면 데이터베이스나 스키마에 포함된 모든 지원 객체(예: 테이블)도 예산에 추가돼요.
  • 개별 객체를 직접 추가한다면 객체를 하나의 커스텀 예산에만 추가할 수 있어요. 이 경우 객체가 현재 한 커스텀 예산에 포함되어 있고 그 객체를 두 번째 커스텀 예산에 추가하면, Budgets는 경고 없이 그 객체를 첫 번째 커스텀 예산에서 제거해요.

이 동작은 태그를 사용해 객체를 예산에 추가하는 경우에는 적용되지 않아요. 태그를 사용해 객체를 예산에 추가한다면 하나 이상의 태그를 가진 객체를 여러 커스텀 예산에 포함할 수 있어요.

  • Done을 선택해요.

SQL 명령으로 커스텀 예산에서 객체 추가·제거

예산에서 객체를 추가하거나 제거하는 데 사용하는 역할은 객체에 대한 APPLYBUDGET 권한을 가져야 해요. 자세한 내용은 커스텀 예산 관리를 위한 커스텀 역할 생성 섹션의 예시를 참고해요.

커스텀 예산에 이미 있는 객체 목록을 검토하려면 예산의 <budget_name>!GET_LINKED_RESOURCES 메서드를 호출해요. 예를 들어 budgets_db.budgets_schema 스키마의 my_budget 예산에 있는 객체 목록을 보려면 다음 문장을 실행해요.

CALL budgets_db.budgets_schema.my_budget!GET_LINKED_RESOURCES();

다음 출력을 반환해요.

+-------------+-----------------+-----------+-------------+---------------+
| RESOURCE_ID | NAME            | DOMAIN    | SCHEMA_NAME | DATABASE_NAME |
|-------------+-----------------+-----------+-------------+---------------|
|         326 | DB1             | DATABASE  | NULL        | NULL          |
|         157 | MY_WH           | WAREHOUSE | NULL        | NULL          |
+-------------+-----------------+-----------+-------------+---------------+

참고(Note): 목록에는 다음이 포함되지 않아요.

  • 자동으로 추가된 객체(예: Snowflake Native App이 만들고 소유한 컴퓨팅 풀과 웨어하우스)
  • 태그가 예산에 추가되었을 때 추가된 객체

객체는 참조(reference)로 예산에 추가하거나 제거해야 해요.

  • 다음 단계로 my_budget 예산에 t1 테이블을 추가할 수 있어요.
    • 다음 문장을 실행해 역할 budget_admin에 테이블에 대한 APPLYBUDGET 권한을 부여해요.
GRANT APPLYBUDGET ON TABLE t1 TO ROLE budget_admin;
  • 다음 문장을 실행해 ADD_RESOURCE 인스턴스 메서드에 t1 테이블에 대한 참조를 전달해요.
CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE(
   SELECT SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));

SYSTEM$REFERENCE 함수는 테이블에 APPLYBUDGET 권한이 부여된 TABLE 객체 t1에 대한 참조를 만들어요. 이를 통해 예산은 계정에서 지정된 객체를 모니터링할 수 있어요. 함수의 세 번째 파라미터는 참조의 범위를 지정하며, 여기서 'SESSION'은 세션 범위의 참조를 만들어요. 예산의 ADD_RESOURCE 메서드에 전달되는 참조는 임시 참조 범위(즉 세 번째 파라미터는 'SESSION' 또는 'CALL')로 만들 수 있어요.

참고(Note): Snowflake Native App을 예산에 추가하려면 SYSTEM$REFERENCE를 호출할 때 object_type 인자에 'DATABASE'를 지정해요('APPLICATION' 아님).

객체와 권한의 전체 목록은 참조에 지원되는 객체 유형과 권한을 참고해요.

참고(Note): 개별 객체를 직접 추가한다면 객체를 하나의 커스텀 예산에만 추가할 수 있어요. 이 경우 객체가 현재 한 커스텀 예산에 포함되어 있고 그 객체를 두 번째 커스텀 예산에 추가하면, Budgets는 경고 없이 그 객체를 첫 번째 커스텀 예산에서 제거해요.

이 동작은 태그를 사용해 객체를 예산에 추가하는 경우에는 적용되지 않아요. 태그를 사용해 객체를 예산에 추가한다면 하나 이상의 태그를 가진 객체를 여러 커스텀 예산에 포함할 수 있어요.

  • 다음 단계로 my_budget 예산에서 db1 데이터베이스를 제거할 수 있어요.
    • 다음 문장을 실행해 역할 budget_admin에 데이터베이스에 대한 APPLYBUDGET 권한을 부여해요.
GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
  • REMOVE_RESOURCE 인스턴스 메서드에 참조를 전달해 데이터베이스를 제거해요.
CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE(
   SELECT SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));

더 알아보기 (Learn more)