Target exam: SnowPro® Advanced: Data Engineer DEA-C02 Purpose: A compressed, scenario-driven course built from the supplied 1,050-question bank, with duplicated ideas merged into reusable decision rules. Use this file with hands-on practice: read each domain, implement the core patterns in a Snowflake sandbox, then use the question bank to test whether you can select the best architecture under realistic constraints.
1. Exam Overview
1.1 What the certification validates
SnowPro Advanced: Data Engineer validates advanced Snowflake data-engineering judgment. The exam is not only about SQL syntax. Most scenarios test whether you can choose the capability whose tradeoff matches the requirement:
Source data from cloud storage, APIs, Kafka-like streams, and on-premises systems.
Design batch, event-driven, and near-real-time ingestion.
Transform and apply change data safely and repeatably.
Troubleshoot query performance using evidence rather than guesses.
Select scalable compute patterns for engineering workloads.
Protect data with appropriate recovery, continuity, and governance controls.
Share or replicate data across accounts, regions, and clouds without choosing an unnecessarily expensive or fragile pattern.
The active English exam is DEA-C02. Snowflake states that DEA-C02 contains 65 questions and can include multiple-choice, multiple-select, and interactive question types such as matching and drag-and-drop. The official exam page recommends production experience as a data engineer.
1.2 Domain emphasis
The supplied bank follows this DEA-C02 domain allocation:
Domain
Weight
Study priority
Main question style
Domain 1.0: Data Movement
26%
Very high
Select the correct ingestion, export, sharing, or replication pattern
Domain 2.0: Performance Optimization
21%
High
Diagnose the bottleneck before selecting compute or storage optimization
Domain 3.0: Storage and Data Protection
14%
Medium
Distinguish historical recovery, continuity, persistence, and cost tradeoffs
Domain 4.0: Data Governance
14%
Medium
Choose the policy, role, metadata, or sharing control that directly enforces the requirement
Domain 5.0: Data Transformation
25%
Very high
Choose declarative versus imperative processing and apply CDC safely
1.3 How to think during the exam
For each scenario, reduce the wording to four facts:
What is moving or changing? Files, rows, DML changes, semi-structured payloads, or shared objects.
What matters most? Latency, idempotency, cost, recoverability, least privilege, or maintainability.
Where should the work happen? Client, cloud storage, Snowflake-managed service, virtual warehouse, or consumer account.
What evidence is available? Query profile, history views, stream state, load history, policy references, or access history.
The best answer normally solves the exact bottleneck with the smallest safe architectural change. Avoid answers that introduce a different service merely because it is a real Snowflake feature.
1.4 Current-platform awareness
Snowflake evolves continuously. DEA-C02 was introduced in 2025, while current documentation also describes newer capabilities such as Snowpipe Streaming high-performance architecture and additional dynamic-table refresh modes. Know the modern terminology, but keep the exam decision model stable:
You should be able to design reliable movement into, within, and out of Snowflake.
Key areas:
Internal and external stages
Storage integrations and least-privilege cloud access
File formats and load options
COPY INTO <table> and COPY INTO <location>
Validation, load history, and error handling
Snowpipe auto-ingest
Snowpipe Streaming
Kafka connector use cases
External tables and metadata refresh
Directory tables
Iceberg-table decision context
API ingestion landing patterns
Secure Data Sharing and reader accounts
Replication and failover groups
Cross-cloud and cross-region movement
Idempotency and retry safety
Domain 2.0: Performance Optimization
You should be able to diagnose first and optimize second.
Key areas:
Query Profile and operator-level analysis
Query history and workload-level evidence
Warehouse sizing, auto-suspend, and auto-resume
Scale up versus scale out
Multi-cluster warehouses for concurrency
Workload isolation with separate warehouses
Micro-partition pruning
Clustering keys and Automatic Clustering
Search Optimization Service
Materialized views
Query Acceleration Service
Persisted query results and warehouse cache
Spilling, exploding joins, queueing, and skew
Resource monitors and cost controls
Domain 3.0: Storage and Data Protection
You should be able to map a business-protection requirement to the correct Snowflake mechanism.
Key areas:
Micro-partition storage fundamentals
Permanent, transient, and temporary tables
Time Travel
Fail-safe
UNDROP
Zero-copy cloning
Replication and failover groups
Continuity versus backup semantics
Encryption and governed external-storage identities
Internal stages and external stages
Non-production data protection after cloning
Domain 4.0: Data Governance
You should be able to enforce least privilege, policy-driven access, and auditability.
Key areas:
Account roles and database roles
Least privilege and separation of duties
Managed access schemas
Future grants
Dynamic masking policies
Row access policies
Secure views
Tags and tag-based masking
Policy-reference metadata
ACCESS_HISTORY
Data-quality monitoring and Data Metric Functions
Secure Data Sharing governance
Non-production access controls
Domain 5.0: Data Transformation
You should be able to build maintainable pipelines with explicit correctness guarantees.
Key areas:
Standard streams and append-only streams
Stream offsets and staleness
Scheduled tasks, triggered tasks, serverless tasks, and warehouse-managed tasks
Task graphs
Dynamic tables and target lag
Incremental versus full refresh tradeoffs
MERGE
Transactions and atomicity
Idempotency
Deduplication and deterministic winner selection
Late-arriving data
Quarantine paths
Schema evolution
Semi-structured data with VARIANT and FLATTEN
UDFs, UDTFs, stored procedures, and Snowpark
Slowly changing dimensions, especially Type 2
3. Start-to-Finish Study Path
Phase 1: Build the Snowflake mental model
Start with the separation of storage, compute, and cloud services.
Layer
What it does
Exam implication
Storage
Stores table data in compressed micro-partitions and maintains metadata
Do not propose manual partition management like a traditional database
Compute
Virtual warehouses execute queries and DML
Resize for compute or memory pressure; use multi-cluster for concurrency
Cloud services
Coordinates metadata, authentication, optimization, and management operations
Many management features are not solved by making a warehouse larger
Practice: create tables, inspect query history, suspend and resume warehouses, and observe how independent warehouses query the same data.
Phase 2: Master batch and streaming ingestion
Build these patterns in order:
External stage + storage integration + file format
Manual COPY INTO <table>
Validation and load-history troubleshooting
Snowpipe auto-ingest for new staged files
Snowpipe Streaming for row-based low-latency ingestion
External table and directory-table metadata workflows
API landing pattern with retryable extraction
Practice: intentionally load a malformed file, test ON_ERROR, inspect history, and design a retry-safe correction.
Phase 3: Master CDC and transformations
Build a small raw-to-curated pipeline:
Raw landing table
Standard stream for general DML changes
Append-only stream for insert-only events
Triggered task or scheduled task
Idempotent MERGE
Transaction boundary for related DML
Quarantine table for invalid records
Dynamic-table alternative for a declarative freshness-managed version
Practice: simulate a retry, duplicate event, update, delete, and late-arriving record.
Phase 4: Tune with evidence
For each slow-query scenario:
Check whether the issue is queueing, spilling, poor pruning, a bad join, or a repeated expensive pattern.
Use Query Profile, query-history functions, and operator statistics.
Apply the smallest targeted change.
Re-measure cost and latency.
Practice: run a selective lookup, a scan-heavy aggregation, a join with a missing predicate, and concurrent queries from multiple sessions.
Phase 5: Add protection and governance
Practice:
Time Travel query and UNDROP
Clone a production-like table and restrict access to the clone
Compare permanent, transient, and temporary table behavior
Create masking and row access policies
Attach tags and inspect policy associations
Design a secure-share consumer pattern
Design a replication or failover-group continuity pattern
Phase 6: Mixed-scenario revision
Use the question bank in mixed batches. For every incorrect answer, record:
The requirement you overlooked
The feature you chose
The feature that directly solves the requirement
The clue that should eliminate your wrong option next time
4. Core Concepts by Domain
4.1 Domain 1.0: Data Movement
Stages, integrations, and file formats
A stage is a Snowflake object or location used to access files for loading or unloading.
Choice
Use it when
Do not confuse it with
Named external stage
Reuse cloud-storage location, file-format settings, and governed access
A storage integration, which provides the cloud identity and access boundary
Named internal stage
Snowflake should manage the staged-file location
A table stage or user stage when the location must be shared and managed explicitly
Storage integration
Separate cloud credentials from SQL and use a Snowflake-managed cloud identity
Hard-coded secrets in SQL
File format object
Reuse parsing options across loads
A stage; the format controls parsing, not storage access
Decision rule: use a storage integration for governed cloud access, a named stage for reusable location metadata, and a file format for reusable parsing behavior.
COPY INTO <table>: controlled batch ingestion
Use COPY INTO <table> when files already exist in a stage and you need an explicit batch load.
Core reasoning:
Snowflake tracks file-loading metadata for a target table.
Retry safety still requires deliberate design: use stable filenames, inspect history, and avoid careless forced reloads.
ON_ERROR should match the SLA. Skipping a file or continuing may be correct for a tolerant batch, but not when completeness is mandatory.
VALIDATION_MODE checks staged data without loading it.
VALIDATE examines errors produced by a previous COPY INTO operation.
MATCH_BY_COLUMN_NAME maps source fields to target columns by name when schema ordering can vary.
INFER_SCHEMA plus CREATE TABLE USING TEMPLATE can accelerate supported schema-on-load workflows.
Exam trap: choosing a warehouse resize when the real problem is malformed files, naming, metadata, or load semantics.
File sizing
Extremely small files increase metadata and scheduling overhead. Extremely large files can reduce parallelism and increase retry impact.
Decision rule: prefer reasonably sized files that allow parallelism without creating a small-file explosion. When a question highlights thousands of tiny files, address file sizing before warehouse size.
Snowpipe auto-ingest versus Snowpipe Streaming
Requirement
Best fit
Why
New files arrive in cloud storage and should load automatically
Snowpipe auto-ingest
Event-driven ingestion of staged files
Rows should be available within seconds without staging files
Snowpipe Streaming
Direct row-based streaming ingestion
Kafka topics should load into Snowflake
Snowflake Kafka connector with streaming ingestion
Connector handles Kafka consumption and Snowflake ingestion
Periodic controlled batch window
COPY INTO <table>
Explicit load orchestration is sufficient
Eliminate bad options: a materialized view, clustering key, or secure share cannot ingest data.
Snowpipe Streaming current-platform note
Current Snowflake documentation describes Snowpipe Streaming as the real-time ingestion service built on a high-performance architecture. Applications load rows directly into Snowflake tables without staging files or managing intermediate storage. For DEA-C02 scenarios, focus on the stable distinction: row-based low latency versus file-based auto-ingest.
API extraction pattern
Snowflake capabilities do not turn an analytical query or row access policy into a robust external-API client.
Use a controlled pattern:
Extract from the API with an orchestrated client or integration layer.
Land the response in a controlled stage or raw landing table.
Store a source key, extraction timestamp, and request or batch identifier.
Apply an idempotent load and transformation path.
Retry extraction separately from transformation.
Exam trap: calling an external API during every analytical query. This couples query latency and availability to an external system and undermines reliability.
External tables, directory tables, and Iceberg tables
Capability
What it represents
Typical scenario
External table
Queryable metadata and schema over data stored outside Snowflake
Query files in external storage without fully loading them
Directory table
Metadata about files in a stage
File discovery, processing workflow, and metadata-driven orchestration
Iceberg table
Open-table-format use case backed by cloud storage
Interoperability with an external lakehouse ecosystem
Decision rule: external table for query access to external files; directory table for file metadata; Iceberg table when open-format interoperability is an explicit requirement.
Exam trap: assuming new external files always become visible automatically. Refresh metadata or configure supported automation.
Unloading
Use COPY INTO <location> to export table or query results to staged files.
Think about:
Output stage
File format
Partitioning or file-size requirements
Encryption and cloud permissions
Retry and downstream-consumer behavior
Exam trap: choosing COPY INTO <table> when the requirement is export.
Secure sharing, reader accounts, replication, and failover
Requirement
Best fit
Key property
Consumer with a Snowflake account needs governed read access
Secure Data Sharing
Provider shares objects without copying data
Consumer lacks a Snowflake account
Reader account
Provider-managed consumer access and compute
Objects must be synchronized across accounts, regions, or clouds
Replication group
Copies supported objects for continuity or distribution
Secondary must be promotable during a continuity event
Failover group
Adds promotion capability to replication
Decision rule: sharing is for governed consumption; replication is for synchronized copies; failover is for continuity and promotion.
4.2 Domain 2.0: Performance Optimization
Diagnose before tuning
Use this order:
Identify the slow or expensive workload.
Check query history and trend evidence.
Open Query Profile or operator statistics.
Classify the bottleneck.
Apply the smallest targeted fix.
Re-measure latency and credit use.
Symptom
Likely category
First action
Queries wait before executing
Queueing or concurrency
Inspect warehouse load and concurrency; consider isolation or multi-cluster
Large local or remote spill
Memory pressure or inefficient intermediate results
Inspect operators; rewrite or test larger warehouse
Huge intermediate join row count
Join logic or cardinality explosion
Fix predicate, join key, or pre-aggregation
Large fraction of micro-partitions scanned for selective filters
Poor pruning
Evaluate filter design and clustering
Repeated selective point lookups
Search pattern
Evaluate Search Optimization Service
Repeated expensive aggregation or projection
Precomputation opportunity
Evaluate materialized view
Occasional eligible outlier query
Acceleration opportunity
Evaluate Query Acceleration Service
Scale up versus scale out
Action
Use it when
Wrong reason to use it
Resize warehouse
A query needs more compute or memory, or spill is significant
Many independent queries are queued
Multi-cluster warehouse
Concurrent queries exceed available execution capacity
A single bad join creates huge intermediates
Separate warehouses
ETL, BI, and ad hoc workloads need isolation and independent scaling
A parsing error occurs during COPY
Auto-suspend and auto-resume
Reduce idle cost while balancing restart frequency
Fix a query-logic problem
Resource monitor
Control or alert on credit consumption
Improve pruning or ingestion semantics
Memory rule:one query too heavy → scale up or rewrite; many queries waiting → scale out or isolate.
Micro-partitions and pruning
Snowflake automatically stores data in micro-partitions and maintains metadata. Query pruning occurs when metadata allows Snowflake to skip partitions.
Clustering can help when:
The table is large.
Filters repeatedly target selective ranges or dimensions.
Clustering is not automatically correct for every table. Automatic Clustering is managed but consumes serverless resources.
Exam trap: clustering a small table, a rarely queried table, or a workload whose real problem is a bad join.
Performance feature selection
Capability
Best use
Main cost or limitation
Search Optimization Service
Supported selective point lookups and similar selective access patterns
Maintenance cost; not a generic replacement for clustering
Materialized view
Repeated expensive query pattern that can benefit from maintained precomputation
Storage and maintenance compute
Clustering key / Automatic Clustering
Improve pruning for recurring filters on suitable large tables
Ongoing maintenance cost
Query Acceleration Service
Accelerate eligible portions of outlier or scan-heavy queries
Additional service cost; workload dependent
Persisted query result reuse
Reuse an identical eligible result without recomputation
Reuse conditions must be met
Warehouse-local cache
Benefit repeated scans while warehouse remains available
Cache benefit can disappear after suspension
Elimination technique: identify whether the scenario is about lookup, precomputation, pruning, outlier acceleration, or cache reuse. Then select only the feature that matches that category.
Query evidence tools
Tool or surface
Use
Query Profile
Visualize operators, time distribution, joins, scans, spilling, and bottlenecks
QUERY_HISTORY family
Analyze completed-query behavior by relevant dimensions
Do not treat caching as a guaranteed design substitute for optimization.
Persisted results can avoid recomputation when reuse requirements are met.
Warehouse-local cache can benefit repeated scans while the warehouse remains available.
Suspending a warehouse may reduce local-cache reuse, but leaving it running costs credits.
Decision rule: evaluate the workload pattern and total cost. Do not disable cost controls solely to preserve cache unless measured value justifies it.
4.3 Domain 3.0: Storage and Data Protection
Permanent, transient, and temporary tables
Table type
Persistence
Fail-safe
Typical use
Permanent
Persists until dropped
Included according to Snowflake behavior
Business-critical durable tables
Transient
Persists until dropped
Omitted
Rebuildable intermediate or staging data where reduced protection is acceptable
Temporary
Session scoped
Not for durable storage
Session-specific intermediate results
Decision rule: choose table type from recovery requirements, not only from cost.
Exam trap: using transient tables for business-critical data merely to reduce storage cost.
Time Travel, Fail-safe, and UNDROP
Capability
Use
Not for
Time Travel
User-accessible historical queries and recovery within configured retention
Permanent archival backup
UNDROP
Restore a dropped supported object while recoverable through Time Travel
Restore after the recoverability window has passed
Fail-safe
Last-resort recovery process after Time Travel
Normal user-queryable historical access
Memory rule:Time Travel is your recovery window; Fail-safe is not your everyday restore tool.
Zero-copy cloning
A clone is a metadata-based copy that initially shares unchanged underlying storage. As source and clone diverge, additional storage is consumed for changed data.
Use clones for:
Fast development or testing copies
Safe experimentation
Point-in-time development workflows
Controlled non-production environments
Do not assume clones remove governance requirements. A clone can preserve sensitive values.
Exam trap: cloning production data and granting broad non-production access without masking or access controls.
Replication and failover groups
Use replication groups when selected objects need synchronization across accounts or regions. Use failover groups when promotion is part of the continuity design.
Clarify the requirement:
Read-only governed consumption → secure sharing
Synchronized copy → replication
Promotable secondary for business continuity → failover group
Historical query or accidental-drop recovery → Time Travel
External-storage protection
Use governed identities and least-privilege cloud permissions:
Storage integration rather than embedded credentials
Narrow cloud-storage paths
Appropriate encryption
Separation between load, unload, and administrative privileges
Monitoring of data movement and access
4.4 Domain 4.0: Data Governance
Role model and least privilege
Snowflake governance questions reward direct privilege design.
Mechanism
Use
Account role
Organize account-level and cross-database access patterns
Database role
Package privileges scoped to a database and grant them to account roles
Managed access schema
Centralize grant management instead of allowing each object owner to grant independently
Future grants
Apply defined access rules to newly created objects
Separation of duties
Reduce blast radius and improve auditability
Exam trap: granting a powerful account role because it is convenient. Prefer the minimum privilege needed.
Masking, row access, secure views, and tags
Requirement
Best fit
Why
Hide or transform sensitive column values dynamically
Masking policy
Column-level query-time behavior
Filter which rows a user can see
Row access policy
Row-level query-time filtering
Expose a governed projection, especially for sharing
Secure view
Controlled exposure without revealing unnecessary internals
Tags alone do not enforce access. They become powerful when connected to policy behavior and governance workflows.
Access history and policy references
Need
Use
Investigate accessed objects and columns or lineage-style governance evidence
ACCESS_HISTORY
Identify policy associations
Policy-reference metadata
Monitor quality measures
Data Metric Functions and associated monitoring workflow
Exam trap: using query performance views when the question asks who accessed data, or using access history when the question asks which policy is attached.
Sharing governance
Secure Data Sharing exposes selected objects without copying data into the consumer account. Design the share around minimum required objects.
Use secure views where a curated governed surface is appropriate.
Do not expose raw sensitive objects unnecessarily.
Consumers typically use their own compute.
Reader-account scenarios shift resource management to the provider.
4.5 Domain 5.0: Data Transformation
Streams: CDC semantics
A stream records change data for a source object and maintains an offset.
Stream type
Use
Standard stream
General CDC where inserts, updates, and deletes matter
Append-only stream
Insert-only workload where optimized append processing is appropriate
A stream advances when its change records are consumed by committed DML. Design stream consumption transactionally when multiple related writes must succeed together.
Stream staleness
A stream becomes stale when its offset falls outside the source retention period. Unconsumed changes are then no longer available through that stream, and the stream must be recreated.
Prevent staleness by:
Consuming streams within retention
Monitoring stream state
Setting appropriate processing schedules
Avoiding task failures that remain unnoticed
Exam trap: assuming an unused stream keeps CDC forever.
Tasks
Task choice
Use
Scheduled task
Work should run on a defined cadence
Triggered task
Work should run when a stream has new data
Warehouse-managed task
You need explicit warehouse sizing and operational control
Serverless task
Snowflake should manage task compute sizing
Triggered tasks reduce polling when arrivals are unpredictable and can reduce latency because work runs when stream data changes.
Task graphs
Use root and child tasks to express dependent steps. Keep task responsibilities clear:
Ingest or detect new data
Validate
Transform
Apply DML
Publish
Record audit state or alert on failure
Avoid tightly coupled designs that mix extraction, transformation, and publication into one opaque operation.
Dynamic tables
Dynamic tables let you define a desired result with a query and allow Snowflake to manage refresh behavior.
Use dynamic tables when:
The transformation can be expressed declaratively.
Freshness is the main contract.
You want less imperative orchestration code.
The supported refresh behavior matches the query.
Use streams and tasks when:
You need explicit imperative DML control.
You require procedural branching.
You need a specific transaction boundary.
You generate surrogate keys or use unsupported incremental constructs.
You need exact orchestration semantics beyond a declarative result.
Target lag
Target lag is a freshness target, not a guaranteed refresh interval.
Example:
CREATE OR REPLACE DYNAMIC TABLE curated_orders
TARGET_LAG = '10 minutes'
WAREHOUSE = transform_wh
REFRESH_MODE = INCREMENTAL
AS
SELECT ...
FROM raw_orders;
Interpretation: Snowflake should aim to keep the dynamic table no more than approximately ten minutes behind its base data. The setting does not mean “run exactly every ten minutes.”
Dynamic-table refresh modes: current docs note
Current Snowflake documentation describes multiple refresh modes, including incremental, full, auto, adaptive, and custom incremental approaches. For exam reasoning:
Prefer incremental behavior when supported and efficient.
Use full refresh when the definition or change pattern makes incremental refresh unsuitable.
Monitor refresh status, cost, and actual lag.
Do not assume incremental refresh automatically becomes optimal for every workload.
Keep newer refresh-mode details secondary unless the scenario explicitly asks about them.
MERGE, idempotency, and deterministic winner selection
Use MERGE when conditionally applying source changes to a target.
Typical structure:
MERGE INTO curated_customer t
USING staged_customer s
ON t.customer_id = s.customer_id
WHEN MATCHED THEN
UPDATE SET ...
WHEN NOT MATCHED THEN
INSERT (...);
A robust pipeline also defines:
Stable business or event keys
Duplicate handling
Ordering rule for multiple changes to the same key
Late-arriving-data behavior
Retry behavior
Audit columns
Quarantine handling
Exam trap: using ingestion timestamp alone when event-time semantics matter.
Late-arriving data
Do not assume arrival order equals business order.
Define:
Event timestamp
Source sequence or version where available
Deterministic tie-breaker
Whether older events can correct history
Whether downstream logic needs Type 2 history
Whether invalid or ambiguous records go to quarantine
Slowly changing dimensions
For Type 2 history:
Store multiple versions
Track effective start and end times
Mark the current row
Close the previous version when a new version arrives
Apply deterministic ordering for late events
Semi-structured transformations
Need
Use
Store JSON-like nested payloads natively
VARIANT
Expand nested arrays or objects into rows
FLATTEN
Query a nested attribute
Path expressions
Preserve malformed records for remediation
Quarantine raw payload and error detail
Exam trap: storing every payload only as opaque VARCHAR and parsing externally for every use.
UDFs, UDTFs, stored procedures, and Snowpark
Capability
Use
UDF
Reusable computation that returns a scalar value within queries
UDTF
Reusable function that returns tabular results
Stored procedure
Procedural logic, control flow, or multi-step operations
Snowpark
Push supported application-style transformations into Snowflake and reduce unnecessary data movement
Decision rule: use the simplest construct that expresses the requirement. Do not choose a stored procedure for a simple reusable expression or a UDF for a multi-step orchestration workflow.
Schema evolution and quarantine
Schema evolution can help supported ingestion workflows adapt to source changes, but governance still matters.
Use a controlled approach:
Detect the change
Decide whether it is compatible
Permit supported evolution where appropriate
Quarantine incompatible records
Alert or audit
Update downstream contracts deliberately
5. Service Selection Guide
5.1 Ingestion and movement
Scenario clue
Select
Reject
Explicit batch load from staged files
COPY INTO <table>
Snowpipe Streaming
Validate files before ingestion
VALIDATION_MODE
Warehouse resize
Investigate previous COPY errors
VALIDATE or relevant load history
Search Optimization Service
New files arrive and should load automatically
Snowpipe auto-ingest
Scheduled polling unless required by constraints
Rows should arrive within seconds without staged files
Snowpipe Streaming
COPY INTO <table> batch loop
Reusable cloud location with governed access
Named external stage + storage integration
Embedded cloud secret
Query external files without fully loading them
External table
Directory table alone
Query file metadata in a stage
Directory table
External table as the only answer
Export query results
COPY INTO <location>
COPY INTO <table>
Consumer reads governed provider objects without copying
Secure Data Sharing
Replication
Consumer lacks Snowflake account
Reader account
Standard share alone
Cross-region synchronized copy
Replication group
Secure view alone
Promotable secondary
Failover group
Time Travel
5.2 Performance
Scenario clue
Select
Reject
Single query spills heavily
Rewrite or test larger warehouse
Multi-cluster as the first fix
Many queries queue concurrently
Multi-cluster or workload isolation
Clustering key as the first fix
Repeated selective point lookup
Search Optimization Service
Materialized view by default
Repeated expensive aggregation
Materialized view where suitable
Auto-suspend change
Broad scan with poor pruning on a large table
Evaluate clustering
Reader account
Occasional eligible outlier query
Query Acceleration Service
Hard-coded result table by default
Idle warehouse cost
Auto-suspend / resume tuning
Resource monitor as a latency fix
Budget guardrail
Resource monitor
Clustering key
5.3 Storage, protection, and governance
Scenario clue
Select
Reject
Historical recovery within retention
Time Travel
Fail-safe as the normal self-service path
Restore recently dropped object
UNDROP
Clone as the first response
Fast writable development copy
Zero-copy clone
Full unload and reload
Rebuildable durable intermediate table
Transient table
Temporary table
Session-only intermediate data
Temporary table
Permanent table
Column redaction
Masking policy
Row access policy
Row-level filtering
Row access policy
Masking policy
Database-scoped privilege package
Database role
Tag
Centralized schema grant management
Managed access schema
Object-owner grants everywhere
Newly created objects should inherit grants
Future grants
Repeated manual grants
Investigate object and column access
ACCESS_HISTORY
Query Profile
Identify attached policies
Policy-reference metadata
Load history
5.4 Transformation
Scenario clue
Select
Reject
General CDC changes
Standard stream
Append-only stream
Insert-only event processing
Append-only stream
Standard stream when no update/delete semantics are needed
Run when stream has data
Triggered task
Frequent polling schedule
Fixed cadence transformation
Scheduled task
Triggered task without an event requirement
Explicit conditional upsert
MERGE
Append-only insert
Declarative maintained result with freshness target
Dynamic table
Procedure-heavy orchestration
Procedural multi-step logic
Stored procedure
Scalar UDF
Reusable scalar calculation
UDF
Stored procedure
Reusable tabular result function
UDTF
Masking policy
Native JSON-like storage
VARIANT
Opaque VARCHAR only
Expand nested elements
FLATTEN
Clustering
Push supported code-based processing into Snowflake
Snowpark
Extracting all data to an external application
6. Architecture Patterns
Pattern A: Reliable staged batch ingestion
Cloud storage
→ storage integration
→ named external stage
→ file format
→ validation
→ COPY INTO raw table
→ load-history inspection
→ transform
→ quarantine invalid records
External API
→ orchestrated extractor
→ controlled raw landing area
→ request and batch metadata
→ idempotent load
→ validation and quarantine
→ curated model
Use when:
External availability and retry behavior must be isolated from analytical workloads.
Transformation should be rerunnable without recalling the API unnecessarily.
Pattern E: Explicit CDC with streams and tasks
Raw table
→ stream
→ triggered or scheduled task
→ transactional MERGE
→ curated table
→ audit state
Use when:
You need explicit DML behavior.
Deletes and updates matter.
Retry, ordering, and transaction boundaries must be controlled.
Pattern F: Declarative freshness pipeline
Raw tables
→ dynamic table: cleaned layer
→ dynamic table: business layer
→ dynamic table: serving layer
Use when:
Transformations are naturally expressed as queries.
Freshness targets are more important than exact orchestration steps.
Reduced imperative pipeline code is valuable.
Avoid when:
The workflow relies on unsupported incremental constructs.
You need exact procedural branching or explicit multi-table DML control.
Pattern G: Workload isolation
Shared governed storage
├─ ETL warehouse
├─ BI warehouse
└─ ad hoc warehouse
Use when:
ETL competes with dashboards or analyst queries.
Teams need independent scaling, suspend settings, and budget controls.
The provider must expose only minimum required data.
Copying data is unnecessary.
Consumer access should remain governed.
Pattern I: Business continuity
Primary account / region
→ replication or failover group
→ secondary account / region
→ controlled promotion process
Use when:
The requirement is continuity, synchronization, and possible promotion.
Time Travel alone does not meet the regional or account-level requirement.
7. Exam Traps
7.1 Choosing a real feature that solves the wrong problem
Snowflake exams often present several valid capabilities. Select the one that directly addresses the bottleneck.
Requirement
Tempting but wrong
Why it fails
File ingestion latency
Materialized view
Improves suitable query patterns, not file arrival
Join explosion
Larger warehouse only
May hide symptoms but does not fix cardinality logic
Queueing
Clustering key
Queueing is primarily a concurrency or isolation problem
Column redaction
Row access policy
Filters rows rather than masking a value
Row filtering
Masking policy
Changes column display rather than row visibility
Cross-region recovery
Secure sharing
Sharing is not a promotable synchronized secondary
Recover dropped table
Fail-safe
Normal user recovery should use Time Travel and UNDROP when available
Export results
COPY INTO <table>
Loads into a table rather than unloading to files
Low-latency rows
Snowpipe auto-ingest
File event ingestion is not direct row ingestion
File metadata inventory
External table only
Directory table is purpose-built for stage-file metadata
7.2 Overengineering
Prefer the smallest safe solution.
Examples:
Do not introduce external orchestration when a triggered task directly fits.
Do not build a custom CDC framework when streams and MERGE meet the requirement.
Do not replicate data when secure sharing is enough.
Do not use a procedure when a declarative dynamic table or SQL query is sufficient.
7.3 Ignoring idempotency
Retries are normal. A design is incomplete when rerunning it duplicates or corrupts results.
Look for:
Stable keys
Batch or request identifiers
Source version or event time
Transaction boundaries
Deterministic winner selection
MERGE semantics
Quarantine for ambiguous records
7.4 Confusing freshness with scheduling
A dynamic-table target lag is a freshness target, not a precise cron interval.
A scheduled task is cadence-driven.
A triggered task is change-driven.
Snowpipe auto-ingest is file-arrival-driven.
7.5 Treating tags as enforcement by themselves
Tags classify and organize metadata. They become an enforcement strategy when paired with policies, especially tag-based masking. A tag alone does not redact or filter data.
7.6 Treating clones as safe anonymized copies
A clone can preserve the original sensitive values. Apply non-production controls, masking, or restricted access.
7.7 Tuning without evidence
Do not choose a larger warehouse automatically. First classify:
I can distinguish DEA-C02 ingestion choices without guessing.
I can explain how retries remain idempotent.
I can classify a performance bottleneck before tuning.
I know when to resize, use multi-cluster, isolate workloads, or change query logic.
I can separate lookup, pruning, precomputation, caching, and query-acceleration scenarios.
I can distinguish Time Travel, Fail-safe, cloning, replication, and failover groups.
I can choose masking, row access, tags, secure views, roles, and managed access schemas correctly.
I understand stream offsets, committed consumption, and staleness.
I can choose scheduled tasks, triggered tasks, serverless tasks, and warehouse-managed tasks.
I can decide between dynamic tables and streams-and-tasks pipelines.
I can design a safe MERGE with deterministic deduplication and late-arriving-data rules.
I know when to use VARIANT, FLATTEN, UDFs, UDTFs, stored procedures, and Snowpark.
During the exam:
Read the requirement before the implementation details.
Identify whether the question is about latency, reliability, cost, recovery, governance, or maintainability.
Eliminate answers that solve a different layer.
Prefer the smallest native Snowflake capability that directly addresses the requirement.
For performance questions, diagnose before scaling.
For recovery questions, separate historical access from regional continuity.
For CDC questions, check update/delete requirements, ordering, idempotency, and transaction boundaries.
For governance questions, match the policy to the enforcement level: column, row, view, role, or metadata.
For multiple-select questions, validate every selected option independently.
Review answers that rely on absolute words such as “always,” “never,” or “guaranteed.” Snowflake tradeoffs are usually workload-dependent.
Final memory line: Move data with the correct latency pattern, transform it idempotently, tune from evidence, protect it according to the recovery requirement, and enforce governance at the correct layer.
lock_open
Unlock the full course
All 15 modules with detailed explanations, code examples, and exam tips.
[Easy] The media-streaming company is reviewing data-lake files that should remain in external storage. The priority is to support a production-grade design. A pull request uses a plausible but incorrect alternative. Which design is the best fit?