CDW 110v Caboodle Data Model
Fundamentals – Complete Q&A
2026 -2027
Question 1
Which of the following is NOT a best practice for writing performant
Caboodle queries?
A. Use *Current views for Type 2 data
B. Use specific column names instead of SELECT *
C. Add NOLOCK to queries that do not require transactional consistency
D. Join tables using surrogate keys instead of durable keys
*Correct Answer: D. *
Rationale: For Type 2 tables, you should join using durable keys and filter to
the current row. Surrogate keys in snapshot tables point to the row that was
current at the time the data was loaded and may represent stale data. The
other options are all performance best practices.
Question 2
What is the recommended approach when joining to Type 2 tables for
current data?
A. Join directly to the dbo table and use a WHERE clause for IsCurrent = 1
B. Join to the _Current view
C. Join using the surrogate key
D. Join using the business key
,*Correct Answer: B. *
Rationale: The recommended approach for joining to Type 2 tables for
current data is to join to the _Current view. This view is optimized to return
only the most recent version of each entity and simplifies query writing.
Question 3
What is the effect of adding NOLOCK to a Caboodle query?
A. It improves performance by allowing dirty reads
B. It ensures transactional consistency
C. It locks the table to prevent other users from reading it
D. It prevents the query from running
*Correct Answer: A. *
Rationale: Adding NOLOCK to a query improves performance by
allowing dirty reads (reading uncommitted data). This is acceptable for
reporting queries that do not require absolute transactional consistency.
However, it should be used with caution and understanding of the trade-offs.
Question 4
Which of the following should be avoided in Caboodle queries for
performance reasons?
A. Using specific column names
B. Using SELECT *
C. Filtering on indexed columns
D. Using WHERE clauses
*Correct Answer: B. *
,*Rationale: Using *SELECT *** should be avoided in Caboodle queries for
performance reasons. It returns all columns, many of which may not be
needed, increasing I/O and network traffic. Always specify only the columns
you need.
Question 5
When querying Caboodle, what is the recommended approach for date
filtering on snapshot tables?
A. Use the StartDate and EndDate columns to filter based on the date range
of interest
B. Use only the IsCurrent flag
C. Use only the date the data was loaded
D. Use only the date the data was extracted
*Correct Answer: A. *
Rationale: When querying snapshot tables, use the StartDate and EndDate
columns to filter based on the date range of interest. This allows you to
retrieve data that was active during a specific period, supporting historical
reporting.
Question 6
What is the purpose of indexing in Caboodle?
A. To improve query performance by allowing faster data retrieval
B. To store data more efficiently
C. To enforce referential integrity
D. To track data lineage
*Correct Answer: A. *
, Rationale: Indexing improves query performance by allowing faster data
retrieval. Caboodle tables are indexed on commonly used columns such as
primary keys, foreign keys, and date columns to optimize report performance.
Question 7
What is the FullAccess schema in Caboodle?
A. A schema that contains only Type 1 tables
B. A schema that contains almost everything in the dbo schema plus
additional columns in some tables
C. A schema that contains only Type 2 tables
D. A schema that contains only non-Epic data
*Correct Answer: B. *
Rationale: The FullAccess schema contains almost everything in the dbo
schema (minus a few metadata columns) plus additional columns in some
tables. It is designed for reporting users and includes the _Current views.
Question 8
What is the difference between the dbo schema and the FullAccess
schema?
A. The dbo schema contains additional columns not in FullAccess
B. The FullAccess schema contains almost everything in dbo plus additional
columns in some tables
C. They are identical
D. The FullAccess schema contains only metadata
*Correct Answer: B. *
Fundamentals – Complete Q&A
2026 -2027
Question 1
Which of the following is NOT a best practice for writing performant
Caboodle queries?
A. Use *Current views for Type 2 data
B. Use specific column names instead of SELECT *
C. Add NOLOCK to queries that do not require transactional consistency
D. Join tables using surrogate keys instead of durable keys
*Correct Answer: D. *
Rationale: For Type 2 tables, you should join using durable keys and filter to
the current row. Surrogate keys in snapshot tables point to the row that was
current at the time the data was loaded and may represent stale data. The
other options are all performance best practices.
Question 2
What is the recommended approach when joining to Type 2 tables for
current data?
A. Join directly to the dbo table and use a WHERE clause for IsCurrent = 1
B. Join to the _Current view
C. Join using the surrogate key
D. Join using the business key
,*Correct Answer: B. *
Rationale: The recommended approach for joining to Type 2 tables for
current data is to join to the _Current view. This view is optimized to return
only the most recent version of each entity and simplifies query writing.
Question 3
What is the effect of adding NOLOCK to a Caboodle query?
A. It improves performance by allowing dirty reads
B. It ensures transactional consistency
C. It locks the table to prevent other users from reading it
D. It prevents the query from running
*Correct Answer: A. *
Rationale: Adding NOLOCK to a query improves performance by
allowing dirty reads (reading uncommitted data). This is acceptable for
reporting queries that do not require absolute transactional consistency.
However, it should be used with caution and understanding of the trade-offs.
Question 4
Which of the following should be avoided in Caboodle queries for
performance reasons?
A. Using specific column names
B. Using SELECT *
C. Filtering on indexed columns
D. Using WHERE clauses
*Correct Answer: B. *
,*Rationale: Using *SELECT *** should be avoided in Caboodle queries for
performance reasons. It returns all columns, many of which may not be
needed, increasing I/O and network traffic. Always specify only the columns
you need.
Question 5
When querying Caboodle, what is the recommended approach for date
filtering on snapshot tables?
A. Use the StartDate and EndDate columns to filter based on the date range
of interest
B. Use only the IsCurrent flag
C. Use only the date the data was loaded
D. Use only the date the data was extracted
*Correct Answer: A. *
Rationale: When querying snapshot tables, use the StartDate and EndDate
columns to filter based on the date range of interest. This allows you to
retrieve data that was active during a specific period, supporting historical
reporting.
Question 6
What is the purpose of indexing in Caboodle?
A. To improve query performance by allowing faster data retrieval
B. To store data more efficiently
C. To enforce referential integrity
D. To track data lineage
*Correct Answer: A. *
, Rationale: Indexing improves query performance by allowing faster data
retrieval. Caboodle tables are indexed on commonly used columns such as
primary keys, foreign keys, and date columns to optimize report performance.
Question 7
What is the FullAccess schema in Caboodle?
A. A schema that contains only Type 1 tables
B. A schema that contains almost everything in the dbo schema plus
additional columns in some tables
C. A schema that contains only Type 2 tables
D. A schema that contains only non-Epic data
*Correct Answer: B. *
Rationale: The FullAccess schema contains almost everything in the dbo
schema (minus a few metadata columns) plus additional columns in some
tables. It is designed for reporting users and includes the _Current views.
Question 8
What is the difference between the dbo schema and the FullAccess
schema?
A. The dbo schema contains additional columns not in FullAccess
B. The FullAccess schema contains almost everything in dbo plus additional
columns in some tables
C. They are identical
D. The FullAccess schema contains only metadata
*Correct Answer: B. *