DBT-AE Practice Questions: dbt Fundamentals and Architecture Domain
Test your DBT-AE knowledge with 10 practice questions from the dbt Fundamentals and Architecture domain. Includes detailed explanations and answers.
DBT-AE Practice Questions
Master the dbt Fundamentals and Architecture Domain
Test your knowledge in the dbt Fundamentals and Architecture domain with these 10 practice questions. Each question is designed to help you prepare for the DBT-AE certification exam with detailed explanations to reinforce your learning.
Question 1
You need to ensure data quality by validating that all customer emails in the `customers` table have a valid email format. Which dbt test configuration should you use in your `schema.yml` file?
Show Answer & Explanation
Correct Answer: D
Explanation: The correct answer is D. The `dbt_utils.email_format` test checks if the values in a column match a valid email format, which is exactly what's needed in this scenario. Option A checks for non-null values, option B ensures uniqueness, and option C is incorrectly configured for checking email formats. For more on custom tests, see the [dbt-utils package documentation](https://github.com/dbt-labs/dbt-utils).
Question 2
You are setting up a CI/CD pipeline for your dbt project and want to test only the models that have been modified since the last successful run. Which dbt command should you use?
Show Answer & Explanation
Correct Answer: D
Explanation: The command `dbt test --select state:modified+` is used to run tests on models that have been modified since the last successful run, including their downstream dependencies. Option A is incorrect because it runs the models rather than testing them. Option B is partially correct, but it does not include downstream dependencies. Option C is incorrect as it selects new models, not modified ones. For more information, see [dbt's documentation on state-based selection](https://docs.getdbt.com/reference/node-selection/state-comparison).
Question 3
You are setting up a CI/CD pipeline for your dbt project and want to run tests only on models that have been modified. Which dbt CLI command should you use?
Show Answer & Explanation
Correct Answer: B
Explanation: The command `dbt test --select state:modified+` is used to run tests on models that have been modified, including their dependencies. The `state:modified+` selector identifies models that have changed since the last run. Option A runs tests on all models, not just modified ones. Option C uses an incorrect selector syntax. Option D is invalid as there is no `--state` flag for running tests.
Question 4
You need to ensure data quality for a new model in your dbt project. Which of the following `schema.yml` configurations correctly defines a custom test using `dbt-utils` to check that a column does not contain null values?
Show Answer & Explanation
Correct Answer: B
Explanation: The correct answer is B. The `not_null` test is a built-in dbt test and does not require the `dbt_utils` package. Option A is incorrect because `dbt_utils.not_null` is not a valid test; `not_null` is a core dbt test. Option C is incorrect because `dbt_utils.test_not_null` is not a recognized test name. Option D is incorrect because `unique` checks for uniqueness, not null values. For more information, see the dbt documentation on [testing](https://docs.getdbt.com/docs/building-a-dbt-project/tests).
Question 5
You are tasked with optimizing a dbt model that processes a large dataset daily. The model currently runs as a full refresh, but you want to change it to an incremental model. Given the following model configuration, what should you add to enable incremental processing? ```sql {{ config( materialized='incremental' ) }} SELECT * FROM source_table {% if is_incremental() %} WHERE last_updated > (SELECT MAX(last_updated) FROM {{ this }}) {% endif %} ``` What key component is missing from the configuration?
Show Answer & Explanation
Correct Answer: A
Explanation: To enable incremental processing in dbt, you must define a unique key in the model configuration. This key is used to identify new or updated records. The provided code snippet lacks this crucial component. A pre-hook or post-hook is not necessary for basic incremental processing. Schema tests help validate data quality but are unrelated to enabling incremental logic. For more details, refer to [dbt's documentation on incremental models](https://docs.getdbt.com/docs/building-a-dbt-project/building-models/configuring-incremental-models).
Question 6
You are working on a dbt project and need to refactor a model to improve its performance. The model currently processes a large dataset daily. Which strategy should you implement to optimize this model's performance?
Show Answer & Explanation
Correct Answer: A
Explanation: The correct answer is A. Converting a model to an incremental model using the `is_incremental()` function allows dbt to process only the new or changed data since the last run, which significantly improves performance for large datasets. Option B is incorrect because views do not inherently improve performance for large data processing tasks. Option C is incorrect because adding complexity can increase processing time. Option D is unrelated to performance optimization; `ref()` is used for dependency management. For more information, see the dbt documentation on [incremental models](https://docs.getdbt.com/docs/building-a-dbt-project/building-models/incremental-models).
Question 7
You are setting up a new dbt project. What is the correct directory structure for organizing models, and how should you configure the dbt_project.yml file to ensure models are built in the correct order?
Show Answer & Explanation
Correct Answer: A
Explanation: The best practice is to organize dbt models into directories based on their function, such as staging, intermediate, and marts. The 'models-paths' configuration in dbt_project.yml allows you to specify which directories contain models and in what order they should be processed. This helps ensure dependencies are handled correctly. Options B and D misinterpret the purpose of these configurations, and C is incorrect because 'model-order' is not a valid configuration.
Question 8
You are planning to deploy your dbt project using a CI/CD pipeline. Which of the following strategies ensures that your deployment is both efficient and safe?
Show Answer & Explanation
Correct Answer: B
Explanation: The best practice for deploying dbt projects is to first deploy to a staging environment where you can run tests and validate the transformations. This helps catch issues before they reach production. Option A is risky because it skips an important validation step. Option C is also risky, as it assumes off-peak hours mitigate deployment risk, which is not guaranteed. Option D is incorrect because testing should ideally occur before production deployment to prevent potential data issues.
Question 9
You want to ensure that your dbt project is well-documented and that all models have descriptions. Which dbt command can you use to generate documentation and check for missing descriptions?
Show Answer & Explanation
Correct Answer: C
Explanation: The `dbt docs generate` command creates documentation for your dbt project, including descriptions for models, sources, and tests. This command will highlight any missing descriptions, helping ensure comprehensive documentation. `dbt run` is used to execute models, `dbt test` runs tests, and `dbt seed` loads data from CSV files into your database. For more details, see [dbt's documentation on documentation](https://docs.getdbt.com/docs/building-a-dbt-project/documentation).
Question 10
You have a dbt model that uses Jinja to dynamically filter data based on the current month. Which Jinja statement would correctly implement this filter in your SQL model?
Show Answer & Explanation
Correct Answer: B
Explanation: The correct answer is B. The `run_started_at` Jinja variable represents the timestamp when the dbt run started, and using `strftime('%Y-%m')` formats it to the current year and month. Option A is incorrect because `current_month()` is not a valid Jinja function. Option C incorrectly formats only the month without the year, which may lead to incorrect filtering. Option D is incorrect because `current_timestamp()` is not a valid Jinja variable in dbt. For more information, see the dbt documentation on [Jinja context variables](https://docs.getdbt.com/docs/building-a-dbt-project/jinja-context/).
Ready to Accelerate Your DBT-AE Preparation?
Join thousands of professionals who are advancing their careers through expert certification preparation with FlashGenius.
- ✅ Unlimited practice questions across all DBT-AE domains
- ✅ Full-length exam simulations with real-time scoring
- ✅ AI-powered performance tracking and weak area identification
- ✅ Personalized study plans with adaptive learning
- ✅ Mobile-friendly platform for studying anywhere, anytime
- ✅ Expert explanations and study resources
Already have an account? Sign in here
About DBT-AE Certification
The DBT-AE certification validates your expertise in dbt fundamentals and architecture and other critical domains. Our comprehensive practice questions are carefully crafted to mirror the actual exam experience and help you identify knowledge gaps before test day.
Other Practice Tests:
- DBT AE Analytics Engineering Best Practices – Practice Questions & Free Mock Test (2025)
- DBT AE Deployment and Operations – Practice Questions & Free Mock Test (2025)
- DBT AE Testing and Data Quality – Practice Questions & Free Mock Test (2025)
- DBT AE Data Modeling and Transformations – Practice Questions & Free Mock Test (2025)