Snowflake · DSA-C03
The SnowPro Advanced: Data Scientist certification validates advanced skills in applying data science principles, machine learning, and GenAI/LLM capabilities within the Snowflake AI Data Cloud. It targets experienced data scientists with 2+ years of hands-on Snowflake production experience.
Practice Questions
600
≈ 6 practice exams
Duration
115 minutes
Passing Score
750/1000
Difficulty
ProfessionalLast Updated
Jun 2026
Use this DSA-C03 practice exam to prepare for SnowPro® Advanced: Data Scientist (DSA-C03) with realistic questions, detailed explanations, and focused study modes. The practice bank includes 600 questions for Snowflake DSA-C03, so you can review the exam steadily instead of relying on one long cram session.
As you practice, pay extra attention to recurring topics such as Data Science Concepts, Data Preparation and Feature Engineering, Model Development, and Model Deployment. Start with short sessions to identify weak areas, then move into timed quizzes once your accuracy is consistent.
The explanations are especially useful when you want to connect exam wording to the responsibilities and scenarios described in the official certification guidance. Use the free preview first, then unlock the full question bank when you are ready to build a complete study routine.
The SnowPro® Advanced: Data Scientist (DSA-C03) certification, released on March 3, 2025, validates advanced proficiency in applying data science principles, machine learning workflows, and generative AI capabilities within the Snowflake AI Data Cloud. The exam tests end-to-end data science competency — from exploratory data analysis and feature engineering through model training, validation, and production deployment — using Snowflake-native tooling such as Snowpark, Snowpark ML, Snowflake Cortex, Snowflake Model Registry, Snowpark Container Services, and the Snowpark Feature Store.
This certification replaced the previous DSA-C02 version and consolidates coverage into four streamlined domains, with new emphasis on GenAI and large language model (LLM) capabilities including vector embeddings, prompt engineering, and fine-tuning via Snowflake Cortex. Candidates are also expected to demonstrate fluency in statistical foundations, Python-based ML development (including Pandas and PySpark), and Snowflake best practices for scalable, production-grade model operationalization.
This certification is designed for experienced data scientists who work with Snowflake in production environments and have at least two years of hands-on experience on the platform. Ideal candidates hold roles such as Data Scientist, ML Engineer, or AI Engineer and are responsible for the full ML lifecycle — from raw data ingestion and feature engineering to model training, evaluation, and deployment.
Candidates should be comfortable working with one or more programming languages including Python, R, SQL, or PySpark, and should have practical experience building models within Snowflake's ecosystem rather than solely on external platforms. Those looking to validate their ability to leverage Snowflake's native AI features — including Cortex LLM functions and the Model Registry — will find this certification particularly relevant.
Snowflake does not enforce formal prerequisites for the DSA-C03 exam, but strongly recommends that candidates have a minimum of two years of hands-on Snowflake experience in a production data science capacity before attempting it. Familiarity with core Snowflake concepts (covered by the SnowPro Core certification) is assumed, though Core certification is not required.
Candidates should have working knowledge of supervised and unsupervised machine learning algorithms, statistical methods (hypothesis testing, confidence intervals, bootstrapping), and data manipulation techniques using Snowpark and Pandas. Practical experience with model validation approaches such as ROC curves, confusion matrices, cross-validation, and hyperparameter tuning is also expected. Prior exposure to generative AI concepts — including prompt engineering and vector embeddings — is increasingly important given the exam's GenAI/LLM domain coverage.
The DSA-C03 exam consists of 65 total questions delivered over 115 minutes, with results provided immediately upon completion (no beta delay). Questions are drawn from four weighted domains, and the exam is administered via a proctored online delivery channel through Snowflake's authorized testing partner. The exam costs $375 USD per attempt.
Scoring is on a scaled range of 0–1000, with a passing threshold of 750. The scaled scoring means raw correct-answer counts are adjusted to account for question difficulty variation across exam versions. There is also a recertification exam (DSA-R03) available for candidates who have already passed DSA-C02 and wish to transition to the new version.
Earning the SnowPro Advanced: Data Scientist certification signals to employers that a candidate can operationalize machine learning at scale on one of the most widely adopted cloud data platforms. Snowflake is used across financial services, healthcare, retail, and technology sectors, making this credential broadly applicable for roles such as Senior Data Scientist, ML Engineer, AI Engineer, and Data Science Lead. The certification is particularly valuable as organizations accelerate adoption of Snowflake Cortex for GenAI workloads, creating demand for professionals who can build and govern AI pipelines natively in the platform.
Data scientists with Snowflake certifications and demonstrated ML engineering skills typically command salaries in the $130,000–$180,000+ range in the U.S. market, depending on seniority and region. Compared to vendor-neutral ML certifications, the SnowPro Advanced: Data Scientist is differentiated by its depth in Snowflake-native tooling — making it a strong complement to broader ML credentials (such as AWS ML Specialty or Google Professional ML Engineer) for professionals whose organizations are standardized on Snowflake.
5 sample questions with answers and explanations. The full bank has 600 questions, enough for 6 full-length practice exams.
Preview — answers shown1. A data engineer at Fabrikam Retail is cleaning a CLICKSTREAM table that contains duplicate events caused by a logging bug. Each row has columns USER_ID, SESSION_ID, EVENT_TIMESTAMP, and PAGE_URL. The requirement is to retain only the most recent event per user per session and discard all older duplicate rows. Which Snowflake SQL query correctly implements this deduplication? (Select one!)
Explanation
The QUALIFY clause is a Snowflake-specific SQL extension that filters rows based on the output of window functions, operating similarly to how HAVING filters aggregate function results. Using QUALIFY ROW_NUMBER() OVER (PARTITION BY USER_ID, SESSION_ID ORDER BY EVENT_TIMESTAMP DESC) = 1 assigns rank 1 to the most recent event per user-session combination and retains only those rows, cleanly removing all older duplicates in a single query pass. Placing ROW_NUMBER() directly in the WHERE clause without QUALIFY is a SQL syntax error because window functions are not permitted in WHERE clauses and this query would fail at parse time. The SELECT DISTINCT with GROUP BY approach also groups by PAGE_URL, meaning rows with different page URLs but the same user-session pair would not be collapsed, and this query does not reliably isolate the single most recent event per session. The correlated subquery is logically valid but returns multiple rows whenever two events in the same session share the identical maximum timestamp, and it is significantly less efficient than the QUALIFY approach on large tables.
2. A data engineering team at Fabrikam Logistics is processing a PRODUCTS table in Snowflake. Some rows have NULL values in the DISCOUNT_PRICE column. A junior analyst writes the following query to handle nulls: SELECT NVL(DISCOUNT_PRICE, calculate_list_price(PRODUCT_ID)) AS effective_price FROM PRODUCTS; The calculate_list_price() function is an expensive user-defined function. The analyst expects that for rows where DISCOUNT_PRICE is not NULL, the UDF will be skipped entirely. What issue exists with this approach, and which function should replace NVL? (Select one!)
Explanation
NVL evaluates both of its arguments regardless of whether the first is NULL, meaning the expensive calculate_list_price() UDF executes for every single row in the table even when DISCOUNT_PRICE already contains a value. COALESCE short-circuits evaluation: it returns the first non-null value it encounters and stops evaluating remaining arguments. For rows where DISCOUNT_PRICE is not NULL, COALESCE will never invoke the UDF, dramatically reducing unnecessary compute. NULLIF is not a null-replacement function — it returns NULL only when its two arguments are equal to each other, which is unrelated to this scenario. IFF is a Snowflake conditional expression useful for simple branching but does not provide short-circuit semantics for UDF invocations. TRY_CAST handles type conversion failures on dirty data and has no bearing on whether a UDF is called or skipped.
3. A data science team at Contoso AI has developed a custom PyTorch deep learning model for product recommendations that requires GPU acceleration to meet a sub-100ms inference latency target. The model must be callable from Snowflake SQL by analysts who do not write Python. The team must use only Snowflake-native infrastructure and avoid managing external cloud resources. Which deployment approach meets all requirements? (Select one!)
Explanation
Snowpark Container Services with GPU-enabled compute pools is the only Snowflake-native option that supports GPU-accelerated containerized inference. By integrating the containerized service with the Snowflake Model Registry, the model becomes accessible via SQL using registered model function syntax, satisfying the requirement that analysts invoke inference without writing Python. Scalar Python UDFs execute on Snowflake virtual warehouse nodes, which use only CPU compute, and are not designed for the heavy matrix operations required by deep learning models operating under strict latency constraints. Vectorized Python UDFs also execute on Snowflake virtual warehouse CPU compute using pandas batch semantics and similarly cannot leverage GPU hardware regardless of batch size. External functions using AWS Lambda introduce external cloud infrastructure dependencies that violate the Snowflake-native requirement and add network round-trip latency that directly conflicts with the sub-100ms inference target.
4. A machine learning team at Tailspin Analytics has deployed a Python UDF that calls a trained sklearn model to score individual rows in a large transaction table. During production testing, they observe extremely high per-row invocation overhead and inference throughput well below the required SLA. The model natively accepts a pandas DataFrame as input and can score multiple rows in a single call. Which change should the team make to improve throughput most directly? (Select one!)
Explanation
Vectorized Python UDFs accept a pandas DataFrame or pandas Series batch instead of being invoked once per row. This eliminates the per-row Python function call overhead by processing an entire batch of rows in a single invocation, which directly addresses the identified bottleneck. Since the model already accepts a pandas DataFrame natively, converting to a vectorized UDF requires minimal code changes and provides immediate throughput gains. Rewriting as a stored procedure using Snowpark DataFrames requires significant architectural refactoring and stored procedures are designed for procedural workflows, not row-level model scoring. Migrating to Snowpark Container Services is appropriate for GPU-intensive deep learning workloads or long-running serving endpoints, but introduces infrastructure complexity that is not justified when the same model can be optimized with a vectorized UDF running on existing warehouse compute. Increasing the warehouse to X-Large adds more parallel worker threads but does not eliminate the root cause, which is per-row Python invocation overhead rather than a lack of compute capacity.
5. A data science team at Proseware Analytics has trained an XGBoost churn prediction model inside a Snowflake Notebook. They need to register the trained model in the Snowflake Model Registry under the name churn_model with version label v2.1, and then retrieve that exact version later to perform batch inference on a Snowpark DataFrame named CUSTOMER_FEATURES. Which two operations correctly accomplish registration and inference retrieval using the Snowpark ML Registry API? (Select two!)
Multiple correct answersExplanation
The Snowpark ML Model Registry uses registry.log_model() as the primary method to register a trained model object. The model_name parameter sets the logical model name and version_name specifies the version label—this call serializes the model artifact, stores it in the registry, and creates the versioned entry. To retrieve a specific version for inference, registry.get_model('model_name') returns a model reference and .version('version_name') selects the exact version; mv.run(snowpark_dataframe, function_name='predict') then invokes the model's predict method against the Snowpark DataFrame and returns predictions as a new DataFrame. registry.create_model() is not the correct API method for initial model registration—the registry API uses log_model for this purpose. The registry.load_model() method with '@' version notation does not match the actual Snowpark ML Registry API surface. SQL CALL with the bang-notation (model_name!method) is valid for models that have been explicitly deployed as Snowpark Container Services endpoints, not for models that are simply logged to the registry.
SnowPro Advanced: Architect (ARA-C01)
ARA-C01 · 592 questions
SnowPro Advanced: Data Analyst (DAA-C01)
DAA-C01 · 600 questions
SnowPro Advanced: Data Engineer (DEA-C02)
DEA-C02 · 597 questions
SnowPro Advanced: Security Engineer (SEA-C01)
SEA-C01 · 550 questions
SnowPro Core Certification (COF-C03)
COF-C03 · 592 questions
SnowPro Specialty: Gen AI (GES-C01)
GES-C01 · 600 questions
$17.99
One-time access to this exam