CertSafari
    Snowflake SnowPro Core Certification (COF-C03)· Lessons

    Domain 2 · Lesson 9/19

    Calculating Warehouse Credit Usage and Querying ACCOUNT_USAGE

    Explain monitoring and cost management

    9 min read
    6.67% of exam
    4 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Calculate credits for a warehouse from its size, run time and the 60-second minimum
    • Account for resizing, multi-cluster warehouses and the cloud services 10% adjustment
    • Explain how ACCOUNT_USAGE views differ from the Information Schema
    • Query WAREHOUSE_METERING_HISTORY and grant other roles access to it

    1.Warehouse size, run time and per-second billing

    Virtual warehouses are the compute you control, and Snowflake charges for them by size and run time. Each step up in size doubles the credits per hour, starting at 1 credit per hour for an X-Small Gen1 standard warehouse:

    Credits per hour for Gen1 standard warehouses
    Warehouse sizeCredits / hour
    X-Small1
    Small2
    Medium4
    Large8
    X-Large16
    2X-Large32
    3X-Large64
    4X-Large128

    These are hourly rates, but billing is per second, with a 60-second minimum each time a warehouse starts or resumes. An X-Small that runs for 10 minutes uses 0.167 credits. One that runs for 5 seconds is billed for a full minute: 0.017 credits. A suspended warehouse uses no credits at all.

    The minimum is easy to overlook. Suspending and resuming within the first minute leads to multiple charges, because the 1-minute minimum starts over at every resume. A workload that wakes a warehouse many times an hour for a few seconds each time pays a full minute every time. The auto-suspend and auto-resume settings, both on by default, decide how often that happens. A longer auto-suspend period keeps the warehouse running between short jobs instead of starting it again for each one.

    Resizing has its own rule. Moving to a larger size bills 1 minute, but only for the additional compute. Going from Small (2 credits/hour) to Medium (4 credits/hour) bills 1 minute's worth of the extra 2 credits. Resizing down from 5X-Large or 6X-Large to 4X-Large or smaller briefly bills both the old and new resources while the old ones shut down. These figures are for Gen1. Gen2 rates are in the Snowflake Service Consumption Table.

    Checkpoint 1 of 6· Check yourself

    A suspended Large warehouse (8 credits/hour) resumes, runs one 20-second query, and suspends again. Roughly how many credits are billed?

    Checkpoint 2 of 6· Exam question

    An administrator assigns a resource monitor with a 1,000-credit monthly quota to a single Large warehouse used by the marketing team. Which statement correctly describes the scope of what this monitor tracks and controls?

    Sources12

    2.Multi-cluster warehouses and the cloud services adjustment

    With a multi-cluster warehouse, an Enterprise Edition feature, multiply the size rate by the number of clusters running during each period. A 3X-Large (64 credits/hour) that runs 1 cluster for an hour and then 2 clusters for the next hour bills 64 + 128 = 192 credits.

    Cloud services, the layer that handles authentication, query compilation and optimisation, also uses credits. You're billed for it only on days when cloud services consumption is more than 10% of that day's warehouse usage. Snowflake calculates this daily, in UTC: it multiplies daily warehouse usage by 10%. The adjustment can never be larger than that day's actual cloud services usage, so the monthly total adjustment can come out well under 10%. Serverless compute isn't part of this calculation.

    The result is a gap between credits consumed and credits billed. Resource monitors and some usage views report consumption, before the adjustment. Billing applies it.

    Checkpoint 3 of 6· Check yourself

    On one day, warehouses use 200 credits and cloud services use 15 credits. How many cloud services credits are billed for that day?

    Sources12

    3.The ACCOUNT_USAGE schema

    To see these numbers after the fact, you query the shared SNOWFLAKE database. Its ACCOUNT_USAGE schema holds views of object metadata and usage metrics for your account. If you're a Secure Data Sharing provider, a separate READER_ACCOUNT_USAGE schema holds a small subset of these views for your reader accounts. ACCOUNT_USAGE views use the same structure and naming as their Information Schema counterparts, but they behave differently in three ways:

    ACCOUNT_USAGE compared with the Information Schema
    DifferenceAccount UsageInformation Schema
    Includes dropped objectsYesNo
    Latency of dataFrom 45 minutes to 3 hours (varies by view)None
    Retention of historical data1 yearFrom 7 days to 6 months (varies by view/table function)

    Most ACCOUNT_USAGE views have up to 2 hours of latency, and these are maximums, so a query can show recent activity sooner. Many object views have a DELETED column, plus ID columns that tell apart objects dropped and recreated under the same name. So use ACCOUNT_USAGE for trend analysis, such as six months of warehouse spend, and the Information Schema when you need data with no delay.

    The views most relevant to cost are WAREHOUSE_METERING_HISTORY (hourly credits per warehouse), METERING_HISTORY (hourly credits for the account), METERING_DAILY_HISTORY, WAREHOUSE_LOAD_HISTORY and RESOURCE_MONITORS. All of them have a latency of up to 3 hours or less.

    Checkpoint 4 of 6· Match them up

    Match each requirement to the right choice

    Tap a term, then the definition that fits it.

    Checkpoint 5 of 6· Exam question

    A Snowpipe-heavy workload is quietly consuming a large amount of cloud services credits every day, but the account's resource monitors never trigger a notification for it. What is the most accurate explanation for this gap?

    Sources3

    4.Reading warehouse credits, and granting access

    WAREHOUSE_METERING_HISTORY returns hourly credit usage for one warehouse or all warehouses, going back 365 days. Its CREDITS_USED column is CREDITS_USED_COMPUTE plus CREDITS_USED_CLOUD_SERVICES. That's the consumed figure, before the cloud services adjustment, so it can be higher than what you're billed. For billed credits, query METERING_DAILY_HISTORY. CREDITS_ATTRIBUTED_COMPUTE_QUERIES counts only query execution and leaves out idle time. Subtracting it from compute credits shows what idle warehouses cost:

    Idle-time cost per warehouse over the last 10 dayssql
    SELECT
      (SUM(credits_used_compute) -
        SUM(credits_attributed_compute_queries)) AS idle_cost,
      warehouse_name
    FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
    WHERE start_time >= DATEADD('days', -10, CURRENT_DATE())
      AND end_time < CURRENT_DATE()
    GROUP BY warehouse_name;

    Every user can see the SNOWFLAKE database, but querying its schemas needs a grant from ACCOUNTADMIN. There are two ways: grant IMPORTED PRIVILEGES on the whole database, or grant a SNOWFLAKE database role to an account role. Snowflake recommends database roles for ACCOUNT_USAGE access, so you don't accidentally expose organization-level data.

    Checkpoint 6 of 6· Fill the gap

    Which role runs these grants so that SYSADMIN and customrole1 can query ACCOUNT_USAGE?

    USE ROLE  ? ; GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE SYSADMIN; GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE customrole1;

    Sources43

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.Resizing a warehouse to a larger size bills a full minute at the new size's rate.Why is that wrong?

      The 1-minute charge on resizing up covers only the additional compute.

      Covered in Warehouse size, run time and per-second billing

    2. 2.ACCOUNT_USAGE views are real-time, so a query that finished a minute ago will already show up.Why is that wrong?

      ACCOUNT_USAGE views have up to 45 minutes to 3 hours of latency. Only the Information Schema has none.

      Covered in The ACCOUNT_USAGE schema

    3. 3.CREDITS_USED in WAREHOUSE_METERING_HISTORY is what appears on the bill.Why is that wrong?

      CREDITS_USED is before the cloud services adjustment and can be higher than billed credits. Use METERING_DAILY_HISTORY for billed credits.

      Covered in Reading warehouse credits, and granting access

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “there is a doubling of credit usage as you increase in size to the next larger warehouse size”
      ↩︎ Warehouse size, run time and per-second billing
      “By default, auto-suspend is enabled.”
      ↩︎ Warehouse size, run time and per-second billing
      “the total number of credits billed would be 192 (i.e. 64 + 128)”
      ↩︎ Multi-cluster warehouses and the cloud services adjustment
      “Snowflake utilizes per-second billing (with a 60-second minimum each time the warehouse starts)”
      ↩︎ Checkpoint
    2. 2.
      “When a warehouse is suspended, it does not use any credits.”
      ↩︎ Warehouse size, run time and per-second billing
      “the 1-minute minimum starts over each time a warehouse is resumed”
      ↩︎ Warehouse size, run time and per-second billing
      “The daily adjustment never exceeds actual cloud services usage for that day.”
      ↩︎ Multi-cluster warehouses and the cloud services adjustment
      “Serverless compute does not factor into the 10% adjustment for cloud services.”
      ↩︎ Multi-cluster warehouses and the cloud services adjustment
      “the number of credits billed are only for the additional compute resources that are provisioned”
      ↩︎ Exam trap 1
      “Usage for cloud services is charged only if the daily consumption of cloud services exceeds 10% of the daily usage of virtual warehouses.”
      ↩︎ Checkpoint
    3. 3.
      “Records for dropped objects are included in each view.”
      ↩︎ The ACCOUNT_USAGE schema
      “The retention period for these views is 1 year (365 days).”
      ↩︎ The ACCOUNT_USAGE schema
      “To avoid unintentionally granting access to organization-level data, consider using SNOWFLAKE database roles to grant access to views in the ACCOUNT_USAGE schema.”
      ↩︎ Reading warehouse credits, and granting access
      “For most of the views, the latency is 2 hours (120 minutes).”
      ↩︎ Exam trap 2
      “In contrast, views/table functions in the Snowflake Information Schema do not have any latency.”
      ↩︎ Checkpoint
    4. 4.
      “This value does not take into account the adjustment for cloud services, and may therefore be greater than the credits that are billed.”
      ↩︎ Reading warehouse credits, and granting access
      “Warehouse idle time is not included in the CREDITS_ATTRIBUTED_COMPUTE_QUERIES column.”
      ↩︎ Reading warehouse credits, and granting access
      “To determine how many credits were actually billed, run queries against the METERING_DAILY_HISTORY view.”
      ↩︎ Exam trap 3

    Ready to test yourself?

    Practise the 26 questions on this subdomain.

    Spotted a mistake, or was something unclear? Tell us.