COF-C02 — Snowflake SnowPro Core Certification Exam Blueprint
Practical exam blueprint for the Snowflake SnowPro Core Certification (COF-C02), covering architecture, security, warehouses, data loading, performance, governance, sharing, and final-review readiness.
How to Use This Exam Blueprint
Use this independent Exam Blueprint as a practical study map for the Snowflake SnowPro Core Certification (COF-C02) from Snowflake. It is designed to help you turn broad exam areas into concrete review tasks.
For each row or checkbox, mark your status:
- Green: you can explain it, choose the right option in a scenario, and recognize the relevant Snowflake SQL or object.
- Yellow: you recognize it but still confuse edge cases or need notes.
- Red: you would likely guess under exam pressure.
Do not treat this as an exact official weighting guide. Instead, use it to check readiness across the Snowflake platform concepts, administration tasks, SQL patterns, data loading workflows, performance decisions, security controls, and governance features that a Core-level candidate should be comfortable with.
COF-C02 readiness areas at a glance
| Readiness area | What you should be able to explain | What you should be able to do | Common weak spot |
|---|---|---|---|
| Snowflake architecture | Separation of storage, compute, and cloud services | Identify which layer handles a scenario | Treating warehouses as storage |
| Object hierarchy | Organization, account, database, schema, tables, views, stages, warehouses, roles | Read fully qualified object names and dependencies | Forgetting schema-level privileges |
| Virtual warehouses | Sizing, auto-suspend, auto-resume, scaling, concurrency | Choose warehouse actions for workload symptoms | Confusing scale up with scale out |
| Security and access | Role-based access control, grants, ownership, authentication | Troubleshoot why a user cannot query or operate an object | Granting table access without database/schema usage |
| Data loading | Stages, file formats, COPY INTO, Snowpipe concepts, load history | Pick the right loading path for batch or continuous ingestion | Ignoring file format and error handling settings |
| Semi-structured data | VARIANT, OBJECT, ARRAY, path notation, FLATTEN | Query nested JSON-like data | Overusing strings instead of VARIANT |
| SQL transformations | CTAS, INSERT, MERGE, views, streams/tasks concepts | Select the right transformation artifact | Confusing streams with stored data copies |
| Performance | Query profile, pruning, clustering, caching, warehouse sizing | Diagnose slow queries from symptoms | Reaching for larger warehouses before query analysis |
| Cost and monitoring | Credit drivers, warehouse runtime, resource monitors, usage views | Identify cost levers and observability artifacts | Forgetting idle warehouses and concurrency behavior |
| Data protection | Time Travel concepts, cloning, fail-safe concept, backup/recovery posture | Choose recovery or cloning strategy | Memorizing durations instead of understanding tradeoffs |
| Governance | Masking policies, row access policies, tags, secure views | Choose controls for sensitive data scenarios | Confusing access control with data masking |
| Sharing and collaboration | Secure data sharing, providers/consumers, shares, listings concepts | Decide when sharing is better than copying | Assuming shared data is physically duplicated |
Snowflake architecture and object model
Core architecture checks
Be ready to explain Snowflake as a platform where storage, compute, and services are separated.
| Concept | Ready means you can answer |
|---|---|
| Storage layer | Where table data is persisted and managed independently from warehouses |
| Compute layer | How virtual warehouses execute queries, loads, and transformations |
| Cloud services layer | How metadata, authentication, optimization, access control, and coordination fit into the platform |
| Elasticity | Why compute can be resized or suspended without moving stored data |
| Metadata | How Snowflake uses metadata for optimization, pruning, object management, and administrative visibility |
| Caching | Difference between result reuse, warehouse-level effects, and persistent storage |
| Micro-partitions | Why Snowflake manages storage layout automatically and how pruning can improve query performance |
Object hierarchy checklist
You should be able to describe the role of each object and where it fits.
- Organization
- Account
- Database
- Schema
- Table
- View
- Materialized view, when relevant
- Stage
- File format
- Pipe
- Stream
- Task
- Warehouse
- Role
- User
- Share
- Resource monitor
- Policy objects, such as masking or row access policies
Can you do this?
- Explain why suspending a warehouse does not delete data.
- Identify when a problem is likely caused by compute, storage design, access control, or data loading configuration.
- Read a fully qualified name such as
DATABASE.SCHEMA.OBJECT. - Explain why Snowflake does not require traditional manual index management for most table access patterns.
- Distinguish cloning, sharing, replication concepts, and copying data.
- Explain why metadata and object privileges matter in troubleshooting.
Security, identity, and access control
Security questions often test whether you can reason through role inheritance, object privileges, and least-privilege access.
Access control readiness table
| Topic | What to know | Scenario cue |
|---|---|---|
| RBAC | Users receive privileges through roles | “User has access in one role but not another” |
| Role hierarchy | Roles can be granted to other roles | “Privilege should flow through a parent role” |
| Object ownership | Owners can manage object privileges | “Who can grant access to this object?” |
| USAGE privilege | Required on containers such as database/schema and warehouses | “SELECT was granted but query still fails” |
| Warehouse privileges | Required to use or operate compute | “User can see table but cannot run query” |
| Future grants | Apply privileges to objects created later | “New tables are not visible to the reporting role” |
| Managed access schemas | Centralize grant management at schema owner level | “Object owner cannot grant in this schema” |
| Network policies | Restrict access by network source | “Login allowed only from approved locations” |
| Authentication | Password, SSO, MFA, key pair, OAuth-style patterns as applicable | “Choose secure programmatic access” |
| Data policies | Masking, row access, tags | “Sensitive data must be conditionally visible” |
Grant and role pattern recognition
You do not need to memorize every privilege combination, but you should recognize common grant patterns and troubleshoot missing privileges.
USE ROLE SECURITYADMIN;
CREATE ROLE analyst_ro;
GRANT USAGE ON DATABASE analytics TO ROLE analyst_ro;
GRANT USAGE ON SCHEMA analytics.marts TO ROLE analyst_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics.marts TO ROLE analyst_ro;
GRANT ROLE analyst_ro TO USER candidate_user;
Access troubleshooting checklist
When a user cannot query data, check in this order:
- Is the correct role active?
- Is the role granted directly or through a role hierarchy?
- Does the role have
USAGEon the warehouse? - Does the role have
USAGEon the database? - Does the role have
USAGEon the schema? - Does the role have object-level access such as
SELECT? - Is access affected by a masking policy, row access policy, secure view, or tag-based policy?
- Is authentication or network policy blocking the session?
- Are future grants needed for newly created objects?
- Is ownership or managed access schema behavior relevant?
Virtual warehouses, compute, and cost control
Warehouse decision table
| If the scenario says… | Think about… | Avoid this trap |
|---|---|---|
| One large query is slow | Warehouse size, query plan, pruning, joins, spill | Assuming multi-cluster improves one query |
| Many users are queued | Concurrency, multi-cluster warehouse behavior, workload separation | Only increasing size without checking queueing |
| Cost is unexpectedly high | Auto-suspend, warehouse runtime, workload scheduling, resource monitors | Looking only at storage cost |
| Dashboard is slow after inactivity | Auto-resume delay, cache state, warehouse size | Assuming data storage is the cause |
| ETL competes with BI users | Separate warehouses by workload | Using one warehouse for all workloads |
| Warehouse is running while idle | Auto-suspend settings and session behavior | Forgetting that running compute consumes credits |
| Load job needs more throughput | Dedicated warehouse, file layout, COPY behavior | Blaming only network or stage type |
Compute cost reasoning
Be ready to reason directionally about credit consumption. If a rate table is provided in study material or a scenario, you should know how to apply it.
\[ \text{Estimated compute credits} = \text{warehouse credit rate} \times \text{active runtime} \times \text{active clusters} \]Readiness checks:
- Explain why a larger warehouse can finish work faster but may consume at a different credit rate.
- Explain why auto-suspend and auto-resume matter for interactive workloads.
- Distinguish warehouse size from multi-cluster scaling.
- Know when to isolate workloads with separate warehouses.
- Know how resource monitors help control or alert on credit usage.
- Recognize that storage, compute, and cloud services usage are separate cost considerations.
Warehouse configuration pattern
CREATE OR REPLACE WAREHOUSE wh_reporting
WAREHOUSE_SIZE = 'MEDIUM'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;
Be ready to identify what each setting is intended to influence: compute capacity, idle behavior, and automatic startup.
Data storage, table design, and semi-structured data
Table and storage concepts
| Concept | Ready understanding |
|---|---|
| Permanent tables | Default durable table type for persistent data |
| Transient tables | Useful where fail-safe-style protection is not required or is reduced by design |
| Temporary tables | Session-scoped working data |
| Clustering | Helps when natural micro-partition pruning is insufficient for selective queries |
| Clustering key | A design choice for large tables with repeatable filter patterns |
| Zero-copy clone | Creates a metadata-based copy for development, testing, or recovery workflows |
| Time Travel concept | Enables access to prior object states within configured retention behavior |
| Data retention | Depends on object type and configuration; understand conceptually rather than memorizing unsupported values |
Semi-structured data checklist
Snowflake Core candidates should be comfortable with semi-structured data at the concept and query level.
- Know when to use
VARIANT. - Distinguish
VARIANT,OBJECT, andARRAY. - Parse nested JSON-like data using path notation.
- Cast semi-structured values to expected SQL types.
- Use
FLATTENto turn arrays into rows. - Explain why schema-on-read can help with flexible ingestion.
- Identify when repeated casting or poor path filters may affect performance.
- Choose between raw landing tables and curated relational tables.
Example pattern:
SELECT
payload:event_type::string AS event_type,
payload:user:id::string AS user_id,
item.value:sku::string AS sku
FROM raw_events,
LATERAL FLATTEN(input => payload:items) item;
Data modeling readiness prompts
Can you explain the tradeoff?
| Choice | Use when… | Watch for… |
|---|---|---|
Keep raw JSON in VARIANT | Source structure changes often or raw replay is valuable | Harder downstream reporting if never curated |
| Flatten into relational columns | Stable analytics and BI access are needed | Schema changes require pipeline handling |
| Cluster a table | Large table, repeatable selective filters, poor pruning | Maintenance cost and unnecessary clustering |
| Clone data | Need fast environment copy or recovery support | Clones still depend on underlying retained data behavior |
| Create a view | Need logical abstraction without storing result | Complexity and performance of underlying query |
| Create a materialized view | Need precomputed result for suitable repeated access patterns | Maintenance cost and eligibility constraints |
Data loading, staging, and unloading
Loading workflow map
| Step | Snowflake artifact or action | Readiness question |
|---|---|---|
| Prepare source files | File format | Can you define delimiters, compression, headers, null handling, or JSON settings? |
| Make files reachable | Internal or external stage | Do you know where the files are and how Snowflake accesses them? |
| Load to table | COPY INTO <table> | Can you handle errors, column mapping, and load history? |
| Automate ingestion | Snowpipe or scheduled tasks where appropriate | Can you decide batch vs continuous loading? |
| Validate results | Query table, load metadata, rejected rows | Can you find why a file did not load? |
| Unload data | COPY INTO <location> | Can you choose file format and target stage? |
Stage and COPY pattern recognition
CREATE OR REPLACE FILE FORMAT ff_csv
TYPE = CSV
SKIP_HEADER = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '"';
CREATE OR REPLACE STAGE stg_sales
FILE_FORMAT = ff_csv;
COPY INTO sales_raw
FROM @stg_sales/inbound/
ON_ERROR = 'CONTINUE';
Be ready to interpret:
- Stage location and path.
- File format definition.
- Header handling.
- Error behavior.
- Whether files have already been loaded.
- Whether data lands in raw, staging, or production tables.
- Whether the load is manual, scheduled, or event-driven.
Data loading scenario checks
| Scenario | Best readiness response |
|---|---|
| CSV load fails on date parsing | Check file format, target column type, date format assumptions, and rejected rows |
| Some files did not load | Check path, file names, load history, prior load state, and permissions |
| Need near-continuous ingestion | Consider Snowpipe-style ingestion concepts and event notification flow |
| Need simple nightly batch load | Scheduled COPY INTO or task-driven workflow may be enough |
| Need to export query results | Use COPY INTO to stage/location with appropriate file format |
| Need to load nested JSON | Land into VARIANT, then transform or flatten as needed |
| Need to avoid bad records stopping all load | Understand validation and error handling options conceptually |
SQL transformations and data pipelines
Transformation artifacts
| Artifact or pattern | What it is used for | Exam-style decision cue |
|---|---|---|
CREATE TABLE AS SELECT | Create derived table from query result | “Build a new table from existing data” |
INSERT INTO ... SELECT | Append transformed data | “Load incremental transformed rows” |
MERGE | Upsert changed data | “Update existing rows and insert new ones” |
| View | Logical abstraction | “Expose curated query without storing result” |
| Secure view | Controlled exposure of data | “Share or protect data access logic” |
| Stream | Track change data for a table | “Process incremental changes” |
| Task | Schedule SQL work | “Run transformation on a schedule or dependency” |
| Dynamic table concept | Declarative pipeline-style transformation where applicable | “Maintain transformed data based on query definition” |
| Stored procedure | Encapsulate procedural logic | “Need multi-step programmatic workflow” |
MERGE pattern recognition
MERGE INTO dim_customer t
USING staged_customer s
ON t.customer_id = s.customer_id
WHEN MATCHED THEN UPDATE SET
t.email = s.email,
t.updated_at = s.updated_at
WHEN NOT MATCHED THEN INSERT
(customer_id, email, updated_at)
VALUES
(s.customer_id, s.email, s.updated_at);
Be ready to identify when MERGE is more appropriate than append-only insert.
Stream and task readiness
- Explain that a stream represents change tracking metadata, not a full independent copy of the table.
- Know why tasks need compute to execute.
- Recognize dependency chains between tasks.
- Understand that incremental processing requires careful handling of successful and failed runs.
- Know when a simple scheduled query is enough versus when change tracking is needed.
Performance tuning and query troubleshooting
Query diagnosis table
| Symptom | Likely areas to inspect | Possible action |
|---|---|---|
| Query scans much more data than expected | Filters, clustering, micro-partition pruning, data types | Rewrite filters, review clustering strategy |
| Query spills or joins are expensive | Join order, join keys, warehouse size, data skew | Tune SQL, adjust warehouse, reduce intermediate data |
| Dashboard slow only at start | Warehouse auto-resume, cache state | Tune warehouse behavior or dashboard pattern |
| Many queries queued | Concurrency and warehouse load | Separate workloads or use scaling strategy |
| Query fast on second run | Result cache or warehouse cache effects | Do not assume base query is optimized |
| Load transformation slow | File sizes, transformation SQL, warehouse, target table design | Isolate load compute and review COPY/SQL profile |
| Search by selective text or point lookups | Search optimization or specialized design may be relevant | Know when standard pruning may not be enough |
Slow-query decision path
flowchart TD
A[Slow query] --> B{Queued before running?}
B -->|Yes| C[Check warehouse load, concurrency, workload isolation]
B -->|No| D{Scanning too much data?}
D -->|Yes| E[Check filters, clustering, partition pruning, data types]
D -->|No| F{Expensive joins or spill?}
F -->|Yes| G[Review join logic, intermediate rows, warehouse size]
F -->|No| H{Repeated dashboard or point lookup?}
H -->|Yes| I[Consider caching behavior, materialized view, search optimization, query rewrite]
H -->|No| J[Use query profile and history views to isolate bottleneck]
Performance traps
- Assuming a bigger warehouse always fixes poor SQL.
- Assuming multi-cluster warehouses speed up one long-running query.
- Ignoring query profile evidence.
- Filtering on expressions that reduce pruning effectiveness.
- Casting data repeatedly instead of modeling curated columns.
- Letting BI dashboards run broad
SELECT *queries. - Confusing result cache speed with underlying query efficiency.
- Clustering small or unsuitable tables unnecessarily.
- Mixing heavy ETL and interactive BI on the same warehouse without reason.
Data protection, governance, and recovery concepts
Protection and recoverability checklist
| Concept | Ready means you can… |
|---|---|
| Time Travel concept | Explain recovery of prior data/object state within configured retention behavior |
| Fail-safe concept | Distinguish platform-level recovery concept from user-driven Time Travel |
| Cloning | Explain fast metadata-based copies for dev/test/recovery workflows |
| Undrop concept | Recognize recovery workflows for dropped objects when supported by retention |
| Replication/failover concepts | Understand cross-region or cross-account resiliency at a conceptual level |
| Backup posture | Explain why Snowflake recovery features are not the same as arbitrary backup design |
| Object dependencies | Consider views, grants, policies, and downstream objects during recovery |
Governance controls
| Requirement | Snowflake control to consider |
|---|---|
| Hide sensitive column values based on role | Masking policy |
| Filter rows based on user or role context | Row access policy |
| Classify or label data | Tags and classification-related workflows |
| Share data while protecting logic | Secure views or secure objects where appropriate |
| Track access patterns | Access history or usage metadata where available |
| Separate duties | Role design and ownership model |
| Enforce least privilege | Grants, role hierarchy, managed access schemas |
Governance scenario prompts
- A support analyst can query a table but should see masked customer identifiers. What control fits?
- Regional managers should see only rows for their region. What control fits?
- A data product is shared externally but should not expose underlying table details. What design choices matter?
- A new sensitive column was added. How should tags, policies, and grants be reviewed?
- A developer cloned production data into a test database. What masking or access implications should be checked?
Data sharing and collaboration
Sharing readiness table
| Topic | Ready understanding |
|---|---|
| Secure data sharing | Share governed access to data without traditional file copying |
| Provider | Account that makes data available through a share/listing-style mechanism |
| Consumer | Account that accesses shared data |
| Reader account concept | Enables access patterns for consumers without their own full Snowflake account in some scenarios |
| Secure views | Help control exposed logic and data shape |
| Marketplace/listing concepts | Ways data products may be discovered or distributed |
| Shares vs copies | Shared data is not the same as exporting and duplicating files |
| Privileges | Sharing requires correct object grants and share configuration |
Sharing decision checks
| If the requirement is… | Consider… |
|---|---|
| Give another Snowflake account live access to selected data | Secure data sharing |
| Send data to a non-Snowflake system as files | Unload to stage or external location |
| Share only aggregated results | Secure view or curated shared object |
| Let consumer join shared data with their own data | Share database access pattern |
| Prevent accidental exposure of base tables | Secure object design and least privilege |
| Maintain separate physical copy for downstream system | Export/copy pipeline rather than share |
Monitoring, metadata, and administration
Metadata and observability artifacts
Be ready to recognize what kind of question each metadata source can answer.
| Need to know… | Look for concepts such as… |
|---|---|
| What queries ran | Query history |
| Who accessed data | Access history or audit-related views where available |
| Warehouse load and queues | Warehouse load/history views |
| Credit usage | Usage and metering views |
| Load results | Copy/load history |
| Task execution status | Task history |
| Object definitions | SHOW, DESCRIBE, GET_DDL, Information Schema |
| Grants and privileges | SHOW GRANTS patterns |
| Storage consumption | Storage usage metadata |
| Failed login or session patterns | Login/session history concepts |
Administration checks
- Know which built-in roles are commonly associated with account administration, security administration, system administration, and user-level activity.
- Understand why production work should not default to the most powerful role.
- Know how to inspect grants on users, roles, and objects.
- Understand account parameters at a conceptual level.
- Know how resource monitors support cost governance.
- Remember that some account usage views may not be real-time.
- Distinguish
SHOWcommands from account usage views and information schema views. - Know when object ownership matters for administrative actions.
SQL and command readiness checklist
You should recognize the purpose of common Snowflake SQL patterns even if the exam scenario does not require writing full syntax from memory.
| Action | Command or pattern to recognize |
|---|---|
| Select active role or warehouse | USE ROLE, USE WAREHOUSE |
| Create compute | CREATE WAREHOUSE |
| Change warehouse behavior | ALTER WAREHOUSE |
| Create database or schema | CREATE DATABASE, CREATE SCHEMA |
| Create table from query | CREATE TABLE AS SELECT |
| Create external or internal staging pattern | CREATE STAGE |
| Define file parsing rules | CREATE FILE FORMAT |
| Load files into table | COPY INTO <table> |
| Unload query or table data | COPY INTO @stage |
| Grant privileges | GRANT ... TO ROLE |
| Inspect privileges | SHOW GRANTS |
| Inspect objects | SHOW, DESCRIBE, GET_DDL |
| Query semi-structured data | Path notation, casts, FLATTEN |
| Upsert data | MERGE |
| Track changes | CREATE STREAM |
| Schedule SQL | CREATE TASK |
| Create governed view | CREATE SECURE VIEW |
| Apply data governance policy | Masking or row access policy patterns |
Can you do this? Core readiness checklist
Architecture and platform
- Explain Snowflake’s separation of storage, compute, and services.
- Identify which warehouse is used for a query.
- Explain why multiple workloads may use separate warehouses against the same data.
- Distinguish database objects from compute objects.
- Explain micro-partition pruning at a high level.
- Explain how cloning differs from copying.
- Explain why Snowflake metadata is important for optimization and administration.
Security
- Build a least-privilege access path for a reporting role.
- Troubleshoot missing database, schema, table, or warehouse privileges.
- Explain role inheritance.
- Identify when future grants are needed.
- Know when managed access schemas affect grant management.
- Choose masking or row access policies for sensitive data requirements.
- Recognize authentication and network access controls.
Data loading and transformation
- Choose between batch load and continuous ingestion concepts.
- Define what a stage and file format are used for.
- Interpret a
COPY INTOcommand. - Explain load error handling at a conceptual level.
- Query data from a
VARIANTcolumn. - Use
FLATTENfor arrays. - Choose
MERGEfor upsert-style changes. - Explain streams and tasks at a Core level.
Performance and operations
- Read query symptoms and choose the next diagnostic step.
- Distinguish scale up from scale out.
- Explain why query queueing happens.
- Identify cost levers for warehouses.
- Explain auto-suspend and auto-resume.
- Know when clustering may help.
- Know when caching may mislead performance testing.
- Use history and metadata views conceptually for troubleshooting.
Governance, protection, and sharing
- Choose a recovery approach using Time Travel or cloning concepts.
- Explain the difference between sharing and copying data.
- Identify provider and consumer roles in secure data sharing.
- Select secure views or policies for controlled data exposure.
- Explain how tags support governance workflows.
- Consider grants and policies when sharing or cloning data.
Scenario and decision-point practice
Use these prompts to test whether you can reason like a Snowflake SnowPro Core candidate.
| Scenario cue | What you should check or decide |
|---|---|
User has SELECT on a table but query fails | Confirm active role, warehouse usage, database usage, schema usage, and table privilege |
| New tables are not visible to an analyst role | Review future grants or object ownership/grant process |
| A warehouse runs all weekend with no users | Review auto-suspend, sessions, tasks, and monitoring |
| A single complex query is slow | Use query profile, check scan volume, joins, spill, and warehouse size |
| Many dashboard users experience queueing | Consider concurrency, multi-cluster behavior, workload isolation |
| JSON files have changing fields | Land raw data in VARIANT, then curate stable columns |
| Some CSV rows fail to load | Review file format, rejected records, type conversions, and COPY INTO options |
| A pipeline needs incremental changes | Consider streams plus tasks or another incremental pattern |
| Sensitive salary column must be hidden from most roles | Use masking policy and role-aware access design |
| Managers should see only their region | Consider row access policy or secure view design |
| External partner needs live selected data | Consider secure data sharing instead of file exports |
| Development needs production-like data quickly | Consider zero-copy clone plus masking/access controls |
| Cost rises after a new BI rollout | Check warehouse size, runtime, auto-suspend, query frequency, and dashboard design |
| Query is fast only after first execution | Consider cache effects before declaring the query optimized |
Common weak areas and traps
Concept traps
- Confusing a warehouse with a place where data is stored.
- Treating Snowflake like a traditional indexed database in every tuning scenario.
- Assuming all performance problems are solved by increasing warehouse size.
- Forgetting that concurrency and single-query speed are different problems.
- Assuming shared data is physically copied into the consumer account.
- Confusing Time Travel concepts with long-term backup strategy.
- Treating streams as full data tables instead of change tracking metadata.
Security traps
- Granting table access but forgetting database and schema
USAGE. - Forgetting warehouse access when troubleshooting query failures.
- Using overly powerful roles for routine work.
- Ignoring role hierarchy and active role selection.
- Forgetting future grants for newly created objects.
- Overlooking masking or row access policies when query results appear incomplete.
Data loading traps
- Misconfigured file format.
- Loading the same files repeatedly or assuming files loaded when they did not.
- Ignoring rejected rows.
- Using relational columns too early when source structure is unstable.
- Not separating raw landing from curated analytics layers.
- Forgetting that loading and transformation consume compute.
Performance traps
- Relying on result cache during benchmarking.
- Filtering on transformed expressions that reduce pruning.
- Clustering without a clear access pattern.
- Mixing heavy ETL, ad hoc analytics, and BI dashboards on one warehouse without checking impact.
- Not using query history or profile information before changing configuration.
Final-week checklist
Seven-to-three days out
- Re-read your notes on architecture, warehouses, RBAC, loading, semi-structured data, and sharing.
- Build or review a small lab that creates a role, warehouse, database, schema, table, stage, and file format.
- Practice troubleshooting access failures from missing role, warehouse, database, schema, and table privileges.
- Review at least one
COPY INTOload scenario and one unload scenario. - Practice querying
VARIANTdata and usingFLATTEN. - Review slow-query decision points: queueing, pruning, joins, spill, caching, and warehouse sizing.
- Review governance controls: masking, row access, secure views, tags, and sharing.
Final two days
- Redo missed practice questions by topic, not just by score.
- For every missed question, write the decision rule you should have used.
- Explain scale up vs scale out without notes.
- Explain role hierarchy and active role behavior without notes.
- Explain stages, file formats, and
COPY INTOwithout notes. - Explain when to use a stream, task, view, materialized view, clone, or share.
- Review Snowflake SQL command patterns until you can recognize their purpose quickly.
Last review pass
- Skim this checklist and mark any remaining Yellow or Red items.
- Focus on scenario judgment, not memorizing unsupported numbers.
- Review common traps.
- Stop studying brand-new edge topics late unless they block a core concept.
- Use practice explanations to confirm why the right answer is right and why the distractors are wrong.
Practical next step
Turn each Yellow or Red item into a short practice task: explain the concept aloud, identify the relevant Snowflake object or command, and answer two or three scenario questions on that topic. Then move into mixed COF-C02 practice so you can switch between architecture, security, loading, performance, governance, and sharing decisions under exam-style pressure.