COF-C02 — Snowflake SnowPro Core Certification Cheat Sheet

Compact Cheat sheet for the Snowflake SnowPro Core Certification (COF-C02): architecture, RBAC, warehouses, loading, SQL, sharing, governance, and performance.

Use the tables for a quick pre-exam check. Expand a topic’s notes for explanations, examples, and additional distinctions.

Scope and study context

Focus on recognizing what the scenario is really asking:

If the question emphasizes…Think first about…
Slow queriesWarehouse size, pruning, clustering, query profile, caching
Too many users waitingMulti-cluster warehouse, concurrency, queuing
Least privilegeRoles, grants, ownership, managed access schemas
Recovery from accidental changeTime Travel, UNDROP, zero-copy clone
Disaster recoveryReplication, failover, Fail-safe distinction
Batch ingestionStages, file formats, COPY INTO <table>
Near-continuous ingestionSnowpipe or Snowpipe Streaming
Change data captureStreams plus tasks
Shared read-only dataSecure data sharing, listings, reader accounts
Column/row protectionMasking policies, row access policies, secure views

The goal is not to replace Snowflake documentation or hands-on practice. The goal is to help you quickly reconnect the most testable concepts: Snowflake architecture, virtual warehouses, storage, data loading, querying, security, governance, sharing, performance, and cost control.

This page supports IT Mastery exam-prep resources and are not affiliated with Snowflake.

Snowflake Architecture Mental Model

Snowflake separates storage, compute, and cloud services. Many COF-C02 questions test whether you know which layer solves the problem.

Layer / conceptWhat it doesExam reminders
Cloud services layerAuthentication, authorization, metadata, parsing, optimization, transaction managementNot the same as a virtual warehouse; some features use Snowflake-managed compute/background services
Virtual warehouseUser-managed compute for SQL queries, DML, loading, unloading, and many tasksScale up for more power per query; scale out with multi-cluster for concurrency
Storage layerCompressed, columnar data stored in Snowflake-managed storageIndependent of warehouse size; data persists when warehouses suspend
Micro-partitionsImmutable storage units with metadata used for pruningGood pruning reduces scanned data; poor clustering can increase scans
Database and schemaLogical containers for objectsWarehouses do not “contain” databases; any role with privileges can query using any usable warehouse
AccountSecurity, users, roles, warehouses, databases, integrationsMost administrative objects live at account scope
OrganizationHigher-level grouping of Snowflake accountsRelevant for cross-account governance, usage visibility, replication, and account management
Notes and examples

Object Hierarchy

LevelExamplesNotes
OrganizationAccountsManaged outside an individual database
AccountUsers, roles, warehouses, databases, integrations, network policiesAccount-level privileges matter
DatabaseSchemas, database rolesUSAGE on database is required before schema/object access
SchemaTables, views, stages, file formats, pipes, streams, tasks, functions, proceduresUSAGE on schema is required before object access
ObjectTable, view, stage, task, stream, pipeObject-specific privileges apply

Snowflake architecture: the mental model

Snowflake is built around separation of storage, compute, and cloud services. Most COF-C02 reasoning questions become easier if you first identify which layer performs the work.

LayerWhat it doesExam trap
Cloud servicesAuthentication, metadata, access control, query optimization, transaction coordination, result cache managementDo not assume every query cost is warehouse compute only; serverless/cloud-services features may also matter.
Virtual warehousesCompute clusters that execute queries, loads, transformations, and many DML operationsWarehouse size affects compute power per cluster; multi-cluster affects concurrency.
Storage layerCompressed columnar storage, micro-partitions, metadata, Time Travel dataStorage is independent of warehouses; suspending compute does not delete stored data.
MetadataObject definitions, statistics, micro-partition metadata, privilegesMetadata enables pruning, optimization, cloning, and many administrative operations.

High-yield architecture rules

  • Storage and compute are independent. You can resize or suspend a warehouse without changing stored tables.
  • Virtual warehouses consume credits while running. Auto-suspend and auto-resume are key cost controls.
  • Warehouse size is not the same as concurrency.
    • Larger warehouse: more compute for each cluster.
    • Multi-cluster warehouse: more clusters to serve concurrent workloads.
  • Snowflake automatically manages micro-partitions. Candidates often over-assume manual maintenance tasks that are not required in Snowflake.
  • Metadata is central. Cloning, pruning, Time Travel, and query optimization all rely heavily on metadata.

Account objects and object hierarchy

Understand the hierarchy because privilege questions depend on it.

LevelExamplesReview point
Organization/accountAccounts, account-level parameters, users, rolesAdministrative scope matters.
DatabaseLogical containerRequires USAGE to access contained schemas.
SchemaContainer for tables, views, stages, file formats, functionsRequires USAGE to access contained objects.
ObjectsTables, views, stages, streams, tasks, proceduresNeed object-specific privileges.
WarehouseCompute resourceSeparate from database/schema hierarchy.

Names, context, and sessions

Candidates often miss session context. Review:

  • Current role.
  • Current warehouse.
  • Current database.
  • Current schema.
  • Fully qualified object names.
  • Temporary objects shadowing permanent objects.
  • Role hierarchy and inherited privileges.

Feature Selection Matrix

ScenarioChoose / considerAvoid this trap
Run interactive SQL queriesVirtual warehouseStorage alone does not execute queries
Speed up one large resource-heavy queryLarger warehouse, query rewrite, pruning, clustering, materialized view where appropriateMulti-cluster mainly improves concurrency, not single-query speed
Reduce user queuing during BI workloadMulti-cluster warehouse, appropriate scaling policyIncreasing warehouse size may not solve concurrency
Lower idle compute costAuto-suspend, right-size warehouses, resource monitorsAuto-resume can restart spend if users/tools keep querying
Batch load staged filesCOPY INTO <table>Do not confuse with unload syntax
Near-continuous file ingestionSnowpipeSnowpipe is not the same as a user-managed warehouse load
Low-latency streaming ingestionSnowpipe StreamingDifferent pattern from file-based Snowpipe
Transform data after loadSQL, tasks, streams, dynamic tablesCOPY supports limited transformation patterns; complex ELT belongs elsewhere
Track table changesStreamA stream records change metadata; it does not execute processing
Schedule SQL or pipeline stepsTaskA task executes SQL; it does not itself detect all changes unless paired with logic such as a stream
Declarative incremental transformationDynamic tableDo not confuse with a materialized view; dynamic tables use target lag semantics
Repetitive query accelerationMaterialized view, clustering, search optimization, query designEach has maintenance/cost tradeoffs
Query external cloud files without loadingExternal table or direct stage queryExternal data often lacks the same performance characteristics as loaded Snowflake tables
Share data read-onlySecure data sharing, listing, reader accountConsumers cannot update shared provider data
Protect sensitive columnsMasking policy, tag-based governance, secure viewsGranting SELECT alone does not mask data
Restrict rows by user/role/contextRow access policy, secure viewColumn masking and row filtering solve different problems

Roles, Users, and Privileges

Snowflake uses role-based access control. Users receive roles; roles receive privileges; roles can be granted to other roles to form a hierarchy.

System and Common Role Types

Role / typeTypical purposeExam reminders
ORGADMINOrganization-level administrationUsed for organization/account management, not normal object ownership
ACCOUNTADMINTop account administrationPowerful; avoid as a daily operating role in least-privilege scenarios
SECURITYADMINRole and privilege administrationCommon role for managing grants
USERADMINUser and role creationFocused on identity objects
SYSADMINWarehouses, databases, schemas, and general object administrationOften owns non-security account objects
PUBLICAutomatically available to all usersDo not place sensitive privileges here
Custom account rolesBusiness/application accessPreferred for least privilege
Database rolesDatabase-scoped privilegesUseful for packaging database access and sharing privileges cleanly
Notes and examples

Privilege Patterns

ObjectCommon privileges to recognizeNotes
WarehouseUSAGE, OPERATE, MONITOR, MODIFY, OWNERSHIPUSAGE lets a role run queries using the warehouse
DatabaseUSAGE, CREATE SCHEMA, MONITOR, OWNERSHIPDatabase USAGE alone does not grant table access
SchemaUSAGE, object creation privileges, OWNERSHIPSchema USAGE is required before object privileges are useful
TableSELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, OWNERSHIPStandard table constraints are not generally enforced except cases such as NOT NULL
ViewSELECT, OWNERSHIPSecure views protect definition and are important in sharing scenarios
StageUSAGE, plus read/write style privileges depending on stage typeInternal and external stages differ operationally
File formatUSAGENeeded when referenced by stages or COPY
TaskOPERATE, MONITOR, OWNERSHIPOwner role needs required privileges for the task SQL
StreamSELECT, OWNERSHIPReading a stream consumes change records in transactional workflows

High-Yield RBAC Rules

RuleWhy it matters
Privileges are granted to roles, not directly to normal application logicExam scenarios usually expect role design
A user has one primary role in a session, with optional secondary rolesCreated objects are owned by the active primary role
OWNERSHIP controls an object and is required for many grant/alter operationsTransferring ownership can affect existing grants
MANAGE GRANTS can administer privileges broadlyUsually associated with security administration
Future grants automate privileges on new objectsSchema-level future grants can take precedence over database-level future grants
Managed access schemas centralize grant controlObject owners inside the schema do not freely grant access like normal schemas
USAGE is required up the hierarchyTable SELECT is not enough without database and schema USAGE
Least privilege favors custom rolesDo not use ACCOUNTADMIN just to query a table

Common Grant Pattern

USE ROLE SECURITYADMIN;

CREATE ROLE analyst_ro;

GRANT USAGE ON WAREHOUSE wh_bi TO ROLE analyst_ro;

GRANT USAGE ON DATABASE analytics TO ROLE analyst_ro;
GRANT USAGE ON SCHEMA analytics.mart TO ROLE analyst_ro;

GRANT SELECT ON ALL TABLES IN SCHEMA analytics.mart TO ROLE analyst_ro;
GRANT SELECT ON FUTURE TABLES IN SCHEMA analytics.mart TO ROLE analyst_ro;

GRANT ROLE analyst_ro TO USER j_smith;

Managed Access Schema Pattern

USE ROLE SYSADMIN;

CREATE SCHEMA analytics.secure WITH MANAGED ACCESS;

Use managed access when the scenario requires centralized privilege control within a schema.

Warehouses and Compute

A virtual warehouse is compute. It can be started, suspended, resized, and configured for concurrency.

Warehouse Decision Table

NeedBest fitKey distinction
Faster single complex queryLarger warehouse, query tuning, pruningSize up for more compute per query
More concurrent usersMulti-cluster warehouseScale out for concurrency
Avoid idle creditsAuto-suspendSuspends compute when idle
Reduce manual startupAuto-resumeConvenient, but may restart spend unexpectedly
Control spendResource monitors, right-sizing, usage reviewMonitors can notify and/or suspend depending on configuration
Isolate workloadsSeparate warehouses by workload/teamPrevents ETL from starving BI queries
Investigate queueingQuery history, warehouse load history, query profileQueueing often signals concurrency pressure
Notes and examples

Scale Up vs Scale Out

ChoiceUse whenDoes not primarily solve
Increase warehouse sizeIndividual queries need more CPU/memory/I/OHigh concurrency by itself
Multi-cluster warehouseMany queries/users run at the same timeA single query that is poorly written
Separate warehousesWorkloads need isolation, cost attribution, or different sizingPoor role design or bad SQL
Query optimizationToo much data scanned, poor joins, repeated expensive logicUser queuing caused by too few clusters

Warehouse Configuration Snippet

CREATE OR REPLACE WAREHOUSE wh_bi
  WAREHOUSE_SIZE = 'MEDIUM'
  AUTO_SUSPEND = 300
  AUTO_RESUME = TRUE
  INITIALLY_SUSPENDED = TRUE;

Resource Monitor Concept

CREATE OR REPLACE RESOURCE MONITOR rm_bi
  WITH CREDIT_QUOTA = 1000
  FREQUENCY = MONTHLY
  TRIGGERS
    ON 75 PERCENT DO NOTIFY
    ON 100 PERCENT DO SUSPEND;

For the exam, focus on what resource monitors do: track credit usage and trigger actions. Do not rely on memorizing arbitrary quotas.

Virtual warehouses and compute

Virtual warehouses are the main compute resource candidates must understand. Questions often ask whether a workload needs faster individual query execution, better concurrency handling, or lower cost.

SituationBetter responseWhy
One complex query is too slowConsider scaling warehouse size upMore compute resources per cluster can reduce runtime.
Many users are queuedConsider multi-cluster warehouse or workload isolationAdditional clusters help concurrency.
Warehouse sits idle between jobsUse auto-suspendAvoid paying for unused compute.
ETL and BI users interfere with each otherUse separate warehousesWorkload isolation improves predictability and cost attribution.
A scheduled job briefly needs high powerTemporarily resize or use task-specific computeAvoid permanently oversizing.
Cost is unexpectedly highCheck running warehouses, auto-suspend, query history, serverless features, and resource monitorsCosts may come from multiple sources.

Scale up versus scale out

Decision pointScale upScale out
Main issueQuery execution timeUser/query concurrency
FeatureLarger warehouse sizeMulti-cluster warehouse
Helps whenA query needs more compute resourcesQueries are queued or competing
Common mistakeMaking warehouses huge for a workload that is mostly waiting on concurrencyAdding clusters when a single query is underpowered

Auto-suspend and auto-resume traps

  • Auto-suspend too high: warehouses keep running after work finishes.
  • Auto-suspend too low: frequent suspend/resume may hurt interactive workloads.
  • Auto-resume disabled: users or jobs may fail when the warehouse is suspended.
  • Assuming all cost stops when a warehouse suspends: serverless features, storage, and other services may still incur cost.

Caching, Pruning, and Performance

MechanismWhat it doesExam trap
Persisted query result cacheReuses exact eligible query results when underlying data and context allowDoes not prove the warehouse/query design is efficient
Warehouse cacheLocal cache associated with an active warehouseSuspending a warehouse can reduce cache benefit
Metadata pruningUses micro-partition metadata to skip irrelevant dataFunctions on filter columns can reduce pruning effectiveness
ClusteringImproves physical organization for pruning on large tablesNot usually useful for small tables or rarely filtered data
Automatic clusteringSnowflake-managed maintenance for clusteringCan add background cost
Search optimization serviceHelps selective lookup/search patternsNot a replacement for every performance issue
Materialized viewStores precomputed results for eligible query patternsMaintenance has cost and restrictions
Query profileShows scan, joins, spills, pruning, queueingUse it to diagnose, not guess
Notes and examples

Performance Troubleshooting Checklist

  1. Check whether the query was queued.
  2. Check whether the warehouse was undersized or overloaded.
  3. Inspect bytes/partitions scanned.
  4. Look for poor filter predicates or functions blocking pruning.
  5. Check join order, join keys, and data skew.
  6. Look for local or remote disk spill.
  7. Decide whether to resize, scale out, rewrite SQL, cluster, or precompute.

Storage, Tables, and Data Protection

Table and Object Choices

Object typeUse whenKey exam distinction
Permanent tableDurable business dataSupports Time Travel and Fail-safe behavior according to configured retention/edition
Transient tableIntermediate or reproducible data where Fail-safe is not neededLower protection than permanent tables
Temporary tableSession-scoped work dataExists only for the session and can shadow same-named permanent objects in that session
External tableQuery files in external cloud storageData remains external; metadata must reflect files
Dynamic tableDeclarative transformation maintained to a target lagUseful for ELT pipelines without hand-written stream/task logic
Materialized viewPrecompute eligible query resultsPerformance feature, not a general ETL scheduler
ViewLogical query abstractionStandard view does not store data
Secure viewProtect view definition and support controlled sharingCommon for data sharing and sensitive logic
Notes and examples

Time Travel, Fail-safe, and Cloning

FeaturePurposeUser-accessible?Exam reminders
Time TravelQuery, clone, or restore historical data within retentionYesUse for accidental deletes, updates, drops, and point-in-time clone
UNDROPRestore dropped object within Time Travel retentionYesApplies only while recoverable
Fail-safeSnowflake-managed disaster recovery protectionNot directly queryable by usersNot a substitute for Time Travel or backups
Zero-copy cloneFast metadata-based copy of an object/database/schemaYesClone shares existing storage until changes diverge
Point-in-time cloneClone from historical stateYes, within Time Travel retentionUseful for investigation or rollback

Common Data Protection Traps

TrapCorrect understanding
“Fail-safe lets users run historical queries”Time Travel does that; Fail-safe is not user-queryable
“Cloning immediately doubles storage”Zero-copy cloning shares storage until changes occur
“Transient means temporary”Transient objects persist until dropped; temporary objects are session-scoped
“A dropped object is always recoverable”Recovery depends on Time Travel retention and object type
“Clone copies everything exactly”Verify privileges, policies, integrations, and supported COPY GRANTS behavior

Time Travel Query Pattern

SELECT *
FROM orders AT (OFFSET => -3600);

Clone Pattern

CREATE TABLE orders_restore
CLONE orders AT (OFFSET => -3600);

Data Loading, Unloading, and Stages

COPY INTO Direction

Command shapeMeaning
COPY INTO table FROM @stageLoad data into Snowflake
COPY INTO @stage FROM table_or_queryUnload data from Snowflake
Notes and examples

Stage Types

Stage typeReferenceUse whenNotes
User stage@~Personal ad hoc filesTied to a user
Table stage@%table_nameFiles associated with one tableConvenient for simple loads
Named internal stage@stage_nameShared managed staging areaSnowflake stores the staged files
Named external stage@stage_name with cloud URL/integrationFiles already in cloud storageUses cloud storage such as Amazon S3, Azure storage, or Google Cloud Storage

Batch Load Workflow

StepSnowflake object / command
Define file interpretationFile format
Define file locationStage
Load rowsCOPY INTO <table>
Inspect results/errorsLoad history, validation, rejected files/errors
Automate recurring loadsSnowpipe, tasks, orchestration

File Format and Load Example

CREATE OR REPLACE FILE FORMAT ff_csv
  TYPE = CSV
  SKIP_HEADER = 1
  FIELD_OPTIONALLY_ENCLOSED_BY = '"'
  NULL_IF = ('', 'NULL');

CREATE OR REPLACE STAGE stg_orders
  FILE_FORMAT = ff_csv;

COPY INTO raw.orders
FROM @stg_orders
ON_ERROR = CONTINUE;

External Stage Pattern

CREATE OR REPLACE STAGE stg_ext_orders
  URL = 's3://example-bucket/orders/'
  STORAGE_INTEGRATION = my_storage_integration
  FILE_FORMAT = ff_csv;

For exam purposes, know that external stages usually use a storage integration rather than embedding long-lived credentials.

Validation and Load Troubleshooting

COPY INTO raw.orders
FROM @stg_orders
VALIDATION_MODE = RETURN_ERRORS;
ProblemLikely causeWhat to check
No rows loadedPath/pattern mismatch, files already loaded, empty filesStage listing, load history, file names
Column mismatchWrong delimiter, header handling, file formatFile format options
Permission errorMissing stage/storage integration privilegesRole grants and cloud storage permissions
Partial loadON_ERROR behaviorCopy output and rejected rows
Duplicate dataReprocessed files or manual reloadLoad history and file naming strategy
Slow loadFile sizing, warehouse size, compression, file countUse reasonably sized files and appropriate warehouse

Unload Example

COPY INTO @exports/orders/
FROM (
  SELECT order_id, order_date, amount
  FROM mart.orders
)
FILE_FORMAT = (TYPE = CSV COMPRESSION = GZIP)
HEADER = TRUE;

Snowpipe vs COPY INTO

FeatureCOPY INTOSnowpipe
PatternBatch/manual or orchestrated loadNear-continuous file ingestion
ComputeUser-selected warehouseSnowflake-managed compute
TriggerSQL command or toolCloud notifications or REST-style ingestion pattern
Best forScheduled bulk loads, backfillsFrequent arriving files
Exam trapNot automatic unless orchestratedNot ideal for all large historical backfills

Data loading and unloading

COF-C02 candidates should know the normal ingestion path: stage files, define file formats, load with COPY INTO, then validate and handle errors.

ComponentPurposeExamples
Internal stageSnowflake-managed staging areaUser stage, table stage, named internal stage
External stageReference to cloud storage outside SnowflakeAmazon S3, Azure storage, Google Cloud storage
File formatDefines how files are parsedCSV, JSON, Parquet, Avro, ORC, XML
COPY INTO tableBulk load staged files into a tableCommon batch ingestion command
COPY INTO locationUnload table/query results to staged filesUsed for export
SnowpipeContinuous or near-continuous file ingestionCommon for event-driven loading
Validation/error handlingInspect rejected rows and load outcomesCritical for troubleshooting

Loading method review

NeedLikely choiceWhy
Batch load many filesCOPY INTOStandard bulk-loading pattern.
Ongoing file arrivalSnowpipeAutomates ingestion from staged files.
Query files without loading into Snowflake tablesExternal tableKeeps data in external storage.
Track row-level changes for downstream processingStreamsCaptures change data for a table.
Schedule transformations or maintenanceTasksRuns SQL on a schedule or dependency chain.
Declarative transformation pipelineDynamic tablesMaintains derived data based on target lag and query definition.
Export query resultsCOPY INTO external/internal locationUnloads data to files.

Common loading traps

  • A stage is not the same thing as a table.
  • A file format tells Snowflake how to parse data; it does not store the data itself.
  • COPY INTO requires correct stage references, file format settings, and target table structure.
  • Snowpipe is for ingestion automation, not a full transformation orchestration tool by itself.
  • Loading semi-structured data often uses VARIANT, but you still need to understand querying and flattening.
  • Duplicate file handling and load history matter when troubleshooting repeated loads.
  • External tables query external data; they are not equivalent to fully loaded native Snowflake tables.

SQL and Semi-Structured Data

Core SQL Concepts

ConceptExam reminders
DDLCreates/alters/drops objects, such as tables, warehouses, schemas
DMLChanges data, such as INSERT, UPDATE, DELETE, MERGE
DCLGrants/revokes privileges
TransactionsSnowflake supports ACID transactions
CREATE OR REPLACEReplaces the object; can drop existing data/metadata depending on object
ConstraintsStandard table PRIMARY KEY, UNIQUE, and FOREIGN KEY constraints are generally informational; NOT NULL is enforced
Identifier caseUnquoted identifiers are stored uppercase; quoted identifiers preserve case and require exact reference
Notes and examples

Semi-Structured Types

TypePurpose
VARIANTStores semi-structured values such as JSON
OBJECTKey-value structure
ARRAYOrdered collection
FLATTENExpands arrays/objects into rows
PARSE_JSONConverts JSON text into VARIANT
TRY_TO_* functionsConvert safely without failing the whole query on bad values

JSON Query Pattern

SELECT
  event_data:customer.id::STRING AS customer_id,
  event_data:order.amount::NUMBER AS amount
FROM raw.events;

Flatten Pattern

SELECT
  e.event_id,
  item.value:sku::STRING AS sku,
  item.value:quantity::NUMBER AS quantity
FROM raw.events e,
LATERAL FLATTEN(input => e.event_data:items) item;

Timestamp Distinctions

TypeMeaningUse when
TIMESTAMP_NTZNo time zoneLocal/business timestamp without zone conversion
TIMESTAMP_LTZStored relative to session local time zone behaviorUser-facing local time zone handling
TIMESTAMP_TZIncludes time zone offsetNeed explicit offset preservation

SQL, semi-structured data, and transformations

Snowflake supports standard SQL plus native handling for semi-structured data. Expect conceptual questions about VARIANT, path access, flattening, and transformation patterns.

ConceptReview point
VARIANTStores semi-structured values such as JSON-like data.
Dot/bracket notationAccesses fields inside semi-structured data.
FLATTENConverts arrays or nested structures into relational rows.
TRY_ functionsReturn null instead of failing when conversion is invalid.
ViewsStore query definitions; useful for abstraction and access control.
Materialized viewsPersist precomputed results for specific performance use cases.
Secure viewsLimit exposure of underlying data and logic, often relevant to sharing/governance.
StreamsTrack changes for CDC-style processing.
TasksSchedule SQL work and orchestrate task graphs.

Semi-structured data decision points

Question clueLikely concept
“JSON field inside a column”VARIANT path access
“Array elements need rows”FLATTEN
“Bad casts should not fail the query”TRY_TO_* functions
“Schema varies across records”Semi-structured storage and schema-on-read patterns
“Repeated nested transformation”Consider view, table, dynamic table, or pipeline design

Streams, Tasks, and ELT Automation

Streams and Tasks

FeatureWhat it doesKey distinction
StreamTracks change data for a table/view-like sourceA stream stores offsets/change metadata; it does not run code
Standard streamTracks inserts, deletes, and updatesUpdates can appear as delete/insert-style change records
Append-only streamTracks appended rowsUseful when only inserts matter
TaskExecutes SQL on a schedule or dependencyTask owner role must have privileges
Task graphParent/child task workflowUseful for multi-step pipelines
Dynamic tableMaintains query result based on target lagDeclarative alternative for many incremental transformation patterns
Notes and examples

Stream and Task Pattern

CREATE OR REPLACE STREAM orders_stream
ON TABLE raw.orders;

CREATE OR REPLACE TASK merge_orders_task
  WAREHOUSE = wh_etl
  SCHEDULE = 'USING CRON 0 * * * * UTC'
  WHEN SYSTEM$STREAM_HAS_DATA('orders_stream')
AS
MERGE INTO mart.orders t
USING (
  SELECT *
  FROM orders_stream
  WHERE METADATA$ACTION = 'INSERT'
) s
ON t.order_id = s.order_id
WHEN MATCHED THEN
  UPDATE SET amount = s.amount
WHEN NOT MATCHED THEN
  INSERT (order_id, amount)
  VALUES (s.order_id, s.amount);

After creating a task, remember that tasks may need to be resumed before they run.

ALTER TASK merge_orders_task RESUME;

Dynamic Table Pattern

CREATE OR REPLACE DYNAMIC TABLE mart.daily_sales
  TARGET_LAG = '1 hour'
  WAREHOUSE = wh_etl
AS
SELECT
  order_date,
  SUM(amount) AS total_amount
FROM raw.orders
GROUP BY order_date;

Automation Decision Table

RequirementPrefer
Process every change from a source tableStream plus task
Schedule a SQL statementTask
Build a task dependency chainTask graph
Maintain transformed result to freshness targetDynamic table
Load files as they arriveSnowpipe
Batch reload/backfillCOPY INTO with warehouse

Views, Sharing, and Collaboration

View and Sharing Choices

NeedUse
Reusable query abstractionView
Protect view definition or expose controlled logicSecure view
Precompute query resultsMaterialized view
Share read-only live dataSecure data sharing
Publish discoverable data productListing
Share with consumer without their own Snowflake accountReader account
Notes and examples

Secure Data Sharing Concepts

Provider doesConsumer does
Creates share/listingCreates database from share/listing
Grants privileges on selected database objectsUses own compute to query shared data
Controls exposed objectsCannot update provider’s shared objects
Can expose secure views for filtered dataSees only what provider grants

Provider Pattern

CREATE OR REPLACE SECURE VIEW share_db.public.v_sales AS
SELECT region, order_date, amount
FROM mart.sales
WHERE region IS NOT NULL;

CREATE SHARE sh_sales;

GRANT USAGE ON DATABASE share_db TO SHARE sh_sales;
GRANT USAGE ON SCHEMA share_db.public TO SHARE sh_sales;
GRANT SELECT ON VIEW share_db.public.v_sales TO SHARE sh_sales;

Exact account-identification syntax for adding consumers can vary by account naming context, but the exam concept is stable: the provider grants selected objects to a share, and the consumer creates a database from that share.

Sharing Traps

TrapCorrect understanding
“Sharing copies data into the consumer account”Direct sharing exposes live read-only data without copying table data
“Consumers pay provider warehouse cost”Consumers generally use their own compute, except reader-account-style scenarios
“A share gives all database objects automatically”Provider grants only selected objects
“Shared data can be updated by the consumer”Shares are read-only to consumers
“A normal view is always safe for sharing sensitive logic”Secure views are designed for protected definitions and controlled sharing

Governance, Security, and Compliance Controls

Security Control Matrix

RequirementSnowflake control
Centralized user authenticationSSO / federated authentication
Additional login protectionMFA
Automated user and group lifecycleSCIM integration
Service/application authenticationKey-pair authentication, OAuth, integrations
Restrict login by IP/networkNetwork policy
Private network connectivityPrivate connectivity options supported by the cloud/provider
Least privilegeCustom roles, role hierarchy, database roles
Sensitive column protectionMasking policy
Row-level filteringRow access policy
Classify or manage objects by metadataTags and governance features
Audit accessAccess history and query history
Protect shared logicSecure views / secure functions
External cloud accessStorage integrations and external access integrations where applicable
Notes and examples

Masking Policy Pattern

CREATE OR REPLACE MASKING POLICY mask_email
AS (val STRING) RETURNS STRING ->
  CASE
    WHEN CURRENT_ROLE() IN ('PII_READ') THEN val
    ELSE '***MASKED***'
  END;

ALTER TABLE customer
  MODIFY COLUMN email
  SET MASKING POLICY mask_email;

Row Access Policy Pattern

CREATE OR REPLACE ROW ACCESS POLICY region_filter
AS (region STRING) RETURNS BOOLEAN ->
  CURRENT_ROLE() = 'SALES_ADMIN'
  OR region = CURRENT_ROLE();

ALTER TABLE sales
  ADD ROW ACCESS POLICY region_filter ON (region);

Governance Traps

TrapCorrect understanding
“Masking removes data from the table”Masking changes what users see at query time
“Row access and masking are interchangeable”Row access filters rows; masking transforms column values
“A secure view replaces RBAC”Secure views complement grants; users still need privileges
“Network policy controls table access”Network policy controls connection access, not object authorization
“Tags enforce security by themselves”Tags classify/label; policies and governance logic enforce behavior

Security and access control

Snowflake access control is a frequent exam area because many questions combine roles, privileges, object hierarchy, and warehouses.

Core access model

ElementWhat it means
UserIdentity that logs in or authenticates.
RoleCollection of privileges. Users activate roles to perform work.
PrivilegePermission on an object or account-level capability.
Object ownershipPowerful control over an object, including grant management.
Role hierarchyRoles can be granted to other roles, allowing privilege inheritance.

Privilege checklist for querying a table

To query data, a user generally needs the correct active role context and required privileges, such as:

  • A role assigned to the user.
  • USAGE on the warehouse.
  • USAGE on the database.
  • USAGE on the schema.
  • SELECT on the table or view.
  • Correct role activation during the session.

Common trap: SELECT on a table alone is not enough if the role lacks usage on the parent database/schema or warehouse.

System-defined role concepts

RoleHigh-level purpose
ACCOUNTADMINBroad account-level administration. Use carefully.
SECURITYADMINSecurity and grant administration.
USERADMINUser and role management.
SYSADMINObject and warehouse administration pattern.
PUBLICAutomatically available baseline role.
ORGADMINOrganization-level administration where applicable.

Do not overuse ACCOUNTADMIN in exam scenarios. Least privilege and role separation are common correct-answer themes.

Access control traps

  • Forgetting the active role matters.
  • Granting object privilege but not parent USAGE.
  • Granting table access but not warehouse access.
  • Confusing role grants to users with privilege grants to roles.
  • Assuming privileges automatically flow down the object hierarchy.
  • Forgetting future grants can simplify access for newly created objects.
  • Missing managed access schema behavior, where grant control is centralized.

Monitoring and Metadata Reference

SourceUse forExam reminders
SHOW commandsImmediate metadata visible to current roleGood for quick object inspection
DESCRIBE commandsObject definitions and propertiesUseful for table, stage, warehouse, task inspection
INFORMATION_SCHEMADatabase-scoped metadata and history functions/viewsScope and retention differ from account-level views
SNOWFLAKE.ACCOUNT_USAGEAccount-level usage, history, governance viewsMay have latency; useful for auditing and trend analysis
ORGANIZATION_USAGEOrganization-level usage across accountsRequires appropriate organization-level access
Query historyQuery troubleshooting, user activity, warehouse useUse for performance and audit review
Load/copy historyData loading diagnosticsHelps detect loaded files and errors
Task historyTask runs and failuresCheck schedule, state, role privileges, SQL errors
Warehouse load historyQueuing and concurrencyUseful for sizing and multi-cluster decisions
Access historyObject access auditingUseful for governance and impact analysis

Common Troubleshooting Scenarios

SymptomLikely causeBest next checks
“Insufficient privileges”Missing role grant, database/schema USAGE, or object privilegeSHOW GRANTS, current role, role hierarchy
Query cannot runNo current warehouse or no warehouse USAGEUSE WAREHOUSE, warehouse grants
Query is queuedWarehouse overloaded or suspended/resumingWarehouse load history, multi-cluster settings
Query scans too much dataPoor pruning, broad filters, function-wrapped predicatesQuery profile, clustering, SQL rewrite
Unexpected result cache useSame eligible query/context and unchanged dataDisable/rewrite for testing if needed
COPY loads zero filesPath/pattern issue or files already loadedLIST @stage, copy history
Snowpipe not loadingNotification, pipe, stage, or privilege issuePipe status, cloud notification setup, load history
Task does not runTask suspended, schedule issue, missing privilegesSHOW TASKS, task history, owner role
Stream is stale/unusableChanges not consumed within retention windowStream state and table retention
Shared data not visibleConsumer database/share privileges missingProvider grants and consumer role privileges

High-Yield Distinctions

DistinctionRemember
Larger warehouse vs multi-cluster warehouseLarger helps individual query power; multi-cluster helps concurrency
Auto-suspend vs resource monitorAuto-suspend stops idle compute; resource monitor tracks credit consumption and can trigger actions
Time Travel vs Fail-safeTime Travel is user-accessible recovery; Fail-safe is Snowflake-managed recovery protection
Clone vs CTASClone is metadata-based and can be point-in-time; CTAS creates a new table from query results
Temporary vs transientTemporary is session-scoped; transient persists but lacks Fail-safe protection
Internal stage vs external stageInternal stores files in Snowflake; external references cloud storage
COPY INTO table vs COPY INTO @stageInto table loads; into stage unloads
Snowpipe vs taskSnowpipe ingests files; task runs SQL
Stream vs taskStream tracks changes; task executes processing
Dynamic table vs stream/taskDynamic table is declarative freshness-based transformation; stream/task is procedural pipeline logic
View vs materialized viewView is logical; materialized view stores maintained results
Secure view vs masking policySecure view protects logic/exposure; masking policy protects column values at query time
Database role vs account roleDatabase role is scoped to one database; account role can span account objects
Share vs replicationShare exposes read-only data; replication copies data/objects for availability or locality
External table vs loaded tableExternal table references files; loaded table stores data in Snowflake-managed storage

Exam-Day Decision Checklist

Before answering a scenario question, classify the requirement:

  1. Layer: Is the issue storage, compute, cloud services, security, or data movement?
  2. Goal: Is the priority cost, performance, recovery, governance, concurrency, or automation?
  3. Access path: Does the role have warehouse, database, schema, and object privileges?
  4. Compute ownership: Is compute user-managed, Snowflake-managed, provider-paid, or consumer-paid?
  5. Data state: Is data loaded into Snowflake, staged, external, shared, cloned, or historical?
  6. Pipeline pattern: Batch load, continuous ingestion, scheduled SQL, CDC, or declarative transformation?
  7. Protection need: Restore data, mask columns, filter rows, audit access, or restrict login?
  8. Performance signal: Queueing, scanned partitions, spills, poor pruning, or repeated computation?

Final-pass checklist

Before attempting a COF-C02 mock exam, make sure you can answer these without guessing:

  • What work is handled by cloud services, virtual warehouses, and Snowflake storage?
  • When should you scale a warehouse up versus scale out with multi-cluster warehouses?
  • What causes Snowflake to prune micro-partitions effectively?
  • How do Time Travel, Fail-safe, and zero-copy cloning differ?
  • What is required to query a table: object privileges, parent object usage, role activation, and warehouse usage?
  • When should you use COPY INTO, Snowpipe, streams/tasks, dynamic tables, or external tables?
  • What is the difference between result cache, warehouse cache, and persisted table storage?
  • How do masking policies, row access policies, tags, secure views, and shares support governance?
  • What cost controls are available, and what common actions accidentally keep credits running?

Storage, micro-partitions, and table types

Snowflake stores table data in compressed, columnar micro-partitions. Candidates should understand this conceptually rather than as manual file management.

ConceptWhat to remember
Micro-partitionsAutomatically created immutable storage units with metadata.
PruningSnowflake skips micro-partitions that cannot contain needed rows.
ClusteringHelps when large tables are not naturally ordered for common filters.
Clustering depthA measure used to understand clustering effectiveness.
Automatic clusteringServerless maintenance that can improve clustering but may add cost.
CompressionManaged by Snowflake; users do not manually compress table storage.
Notes and examples

Table type comparison

Table typeTypical useKey exam point
Permanent tableDurable production dataSupports standard recovery features such as Time Travel and Snowflake-managed recovery behavior.
Transient tableData that does not need the same recovery protection as permanent dataCan reduce storage protection overhead, but recovery characteristics differ.
Temporary tableSession-scoped working dataExists only for the session and can hide a permanent table with the same name in that session.
External tableQuery data stored outside SnowflakeUseful for external data lakes; not the same as loading data into Snowflake-managed storage.

Time Travel, Fail-safe, and cloning

FeaturePurposeCandidate mistake
Time TravelQuery, restore, or clone historical data within retentionTreating it as a long-term backup strategy.
Fail-safeSnowflake-managed recovery protection after Time Travel, not a user query featureAssuming users can directly run Time Travel queries against Fail-safe.
Zero-copy cloneCreates a metadata-based copy without duplicating unchanged dataAssuming clones are always “free” forever; changed data can increase storage.
UndropRestore dropped objects when still recoverableForgetting retention and object type matter.

Zero-copy clone decision rules

Use zero-copy cloning when you need:

  • Fast dev/test environments.
  • A safe copy before schema or data changes.
  • Point-in-time analysis.
  • Efficient experimentation without a full physical copy.

Be careful when:

  • Long-lived clones diverge heavily from the source.
  • Clones are used as a substitute for lifecycle governance.
  • You assume privileges, ownership, and object dependencies always behave exactly like the source context.

Governance, privacy, and secure sharing

Snowflake governance features often appear in scenario questions involving sensitive data, multi-tenant sharing, and compliance-style access patterns.

FeaturePurposeExam clue
Masking policyDynamically hide or transform column values“Show full value only to authorized roles.”
Row access policyFilter rows based on context or entitlement“Users should only see their region or department.”
TagsClassify objects and support governance metadata“Label PII or sensitive data.”
Object tagging and classificationHelps identify governed data“Discover or manage sensitive columns.”
Secure viewRestrict optimization visibility and protect logic/data exposure“Share data without exposing base tables.”
Secure UDFProtect function logic in sensitive contexts“Hide proprietary logic.”
Access historyAudit-oriented visibility into object access“Who accessed what?”
Notes and examples

Data sharing concepts

ConceptWhat to remember
Secure Data SharingShares live data without copying it to the consumer.
ProviderOwns and shares the data.
ConsumerCreates a database from a share and queries it with their compute.
Share objectGrants access to selected databases/schemas/objects.
Reader accountLets a provider share with users who do not have their own Snowflake account.
Listings/MarketplaceProductized or discoverable sharing mechanisms.

Sharing traps

  • Sharing is not the same as exporting files.
  • The provider does not copy physical table data into the consumer account for standard secure sharing.
  • Consumers still need appropriate roles and warehouses to query shared data.
  • Secure views are commonly used to expose only intended rows/columns.
  • Not every governance requirement is solved by sharing; masking, row access, and role design may also be needed.

Performance review

Performance questions usually ask for the best first diagnostic step or the most appropriate optimization. Start with evidence: query profile, scanned data, partitions pruned, joins, spills, queuing, and warehouse load.

SymptomLikely area to inspectPossible response
Queries queuedWarehouse concurrencyMulti-cluster warehouse or workload isolation
One query slow, no queueQuery plan and warehouse sizeTune SQL, scale up, review joins/scans
Large table filter scans too muchPruning/clusteringClustering key or query predicate improvement
Repeated identical queryCache behaviorResult cache may help if eligible
Point lookups on huge tableSelective access patternSearch optimization may help
Repeated aggregation patternPrecomputationMaterialized view or derived table
ETL interfering with BIWorkload isolationSeparate warehouses
Slow external data queriesExternal storage/layoutConsider loading, partitioning, or external table design
Notes and examples

Caching concepts

Cache/storage conceptMeaningTrap
Result cacheReuses eligible previous query resultsNot a substitute for good modeling; invalidation rules matter.
Warehouse cacheData cached on warehouse compute resourcesSuspending a warehouse can remove local cache benefits.
Remote storageDurable Snowflake table storageIndependent of a specific warehouse.
Metadata pruningUses partition metadata to skip unnecessary dataRequires predicates that help eliminate partitions.

Clustering and pruning

Strong pruning usually depends on filters that align with how data is organized in micro-partitions. Clustering can help when:

  • Tables are large.
  • Queries repeatedly filter on specific columns.
  • Natural load order does not support pruning.
  • Query profile shows excessive scanning.

Clustering may be a poor choice when:

  • Tables are small.
  • Query patterns are inconsistent.
  • Maintenance cost outweighs benefit.
  • Filters do not align with the proposed clustering key.

Cost management

COF-C02 candidates should connect technical choices to cost behavior.

Cost areaWhat drives itControl
Warehouse computeRunning virtual warehousesAuto-suspend, right-sizing, workload isolation
Serverless featuresSnowflake-managed compute for certain servicesMonitor feature usage and cost history
StorageStored table data, retained historical data, stagesRetention settings, lifecycle cleanup, table type choice
Data transferMovement across regions/clouds or external boundariesArchitecture and sharing design
Cloud servicesMetadata/optimization/service-layer activityMonitor account usage; understand workload patterns

Resource monitors

Resource monitors help track and control credit usage for warehouses or accounts, depending on configuration. Know that they are a cost governance tool, not a replacement for proper warehouse design.

Common mistakes:

  • Creating monitors but not assigning them properly.
  • Relying only on notifications when suspension is needed.
  • Forgetting serverless or non-warehouse costs may need separate monitoring.
  • Treating a monitor as a perfect hard cap for every possible charge.

High-yield scenario rules

Use these decision rules during practice questions.

If the scenario says…Think…
“Users are waiting in queue”Concurrency problem; multi-cluster or workload isolation.
“Single long-running query”Query profile, warehouse size, SQL design, pruning.
“Sensitive column visible only to finance”Masking policy or secure view depending on requirement.
“Users see only their region”Row access policy.
“Share live data with another account”Secure Data Sharing.
“Share with someone without Snowflake account”Reader account pattern.
“Fast copy for development”Zero-copy clone.
“Recover dropped table”Time Travel/undrop if within retention.
“Continuous file ingestion”Snowpipe.
“Batch load staged files”COPY INTO.
“Nested JSON array to rows”FLATTEN.
“Need to run SQL every hour”Task.
“Need change data since last processing”Stream.
“Too much warehouse spend overnight”Auto-suspend, schedules, resource monitors, running warehouses.

Common COF-C02 candidate mistakes

Architecture mistakes

  • Treating Snowflake like a traditional shared-disk database.
  • Forgetting compute and storage scale independently.
  • Confusing warehouse size with the number of clusters.
  • Assuming suspended warehouses delete cache, data, or metadata in the same way.
  • Ignoring cloud services and serverless feature costs.
Notes and examples

Security mistakes

  • Thinking a user receives privileges directly rather than through roles.
  • Forgetting USAGE on parent database and schema.
  • Forgetting USAGE on a warehouse.
  • Using ACCOUNTADMIN as the default answer.
  • Confusing masking policies with row access policies.
  • Assuming object hierarchy automatically grants access to child objects.

Data loading mistakes

  • Confusing stage, file format, and target table.
  • Using Snowpipe for every ingestion scenario, even simple batch loads.
  • Forgetting external tables query data in external storage.
  • Ignoring load validation and error handling.
  • Treating semi-structured data as automatically relational without FLATTEN or path access.

Performance and cost mistakes

  • Scaling up when the actual issue is concurrency.
  • Adding multi-cluster capacity when the issue is one inefficient query.
  • Creating clustering keys on small or rarely queried tables.
  • Forgetting that auto-clustering and other managed services can consume credits.
  • Leaving warehouses running after scheduled jobs complete.
  • Assuming result cache behavior will always save a poorly designed workload.

Quick practice plan

Use this review, then move directly into original practice questions:

  1. Architecture drill: Identify the Snowflake layer involved in each scenario.
  2. Warehouse drill: Decide scale up, scale out, isolate workload, or suspend.
  3. Security drill: Trace required privileges from user to role to warehouse/database/schema/object.
  4. Loading drill: Choose stage, file format, COPY INTO, Snowpipe, stream, task, or external table.
  5. Governance drill: Choose masking policy, row access policy, secure view, tag, or share.
  6. Performance drill: Diagnose whether the issue is pruning, SQL design, concurrency, warehouse size, or caching.
  7. Cost drill: Identify what is consuming credits or storage and how to control it.

For best results, do not only read explanations after missed questions. Rebuild the decision path: what clue pointed to the correct Snowflake feature, and what trap made the distractor attractive?

Put the review into practice