ARA-C01 Question 12
Single answerObject parametersA Snowflake architect is standardizing Time Travel retention across environments. The security team set DATA_RETENTION_TIME_IN_DAYS = 1 at the account level to minimize storage costs. For a finance database named FIN_DB, the architect sets DATA_RETENTION_TIME_IN_DAYS = 7 at the database level because finance tables require a longer recovery window. Later, a critical table FIN_DB.ACCOUNTING.LEDGER is created without explicitly setting any retention parameter. The team wants to know which retention period applies to the new table and how future changes should be managed.
Which statement is correct?
- A
The LEDGER table inherits DATA_RETENTION_TIME_IN_DAYS = 7 from FIN_DB unless the table or schema explicitly overrides it.
- B
The LEDGER table uses the account-level value of 1 because account parameters take precedence over database parameters for tables.
- C
The LEDGER table defaults to Snowflake's system default retention period, because object parameters are not inherited by newly created child objects.
- D
The LEDGER table cannot use the database-level setting because DATA_RETENTION_TIME_IN_DAYS must be defined individually on each permanent table.
Show answer and explanation
Correct answer: A
Explanation
Snowflake object parameters are hierarchical. When a parameter such as DATA_RETENTION_TIME_IN_DAYS is set at the account level, it establishes a default. More specific levels, such as database, schema, and object, can override that default. In this case, the database-level setting on FIN_DB supersedes the account-level setting for objects created within that database, unless a schema or table override exists. This is a common design pattern for architects: set broad defaults centrally, then apply stricter or more permissive values only where business requirements justify an exception. Snowflake documentation on parameters and object parameter inheritance describes this precedence model and recommends using higher-level settings to reduce administrative overhead while preserving flexibility for specific workloads.
- A. Correct.
Correct. DATA_RETENTION_TIME_IN_DAYS is an object parameter that can be set at multiple levels, including account, database, schema, and table. For child objects, Snowflake uses the closest applicable setting in the hierarchy. Since the table was created in FIN_DB and no explicit schema- or table-level override was provided, the table inherits the effective retention setting from its parent context, which in this scenario is the database-level value of 7.
- B. Incorrect.
Incorrect. This reflects a common misconception that account-level settings always win. In Snowflake, object parameters follow hierarchical inheritance, where a more specific setting overrides a broader one. A database-level parameter overrides the account-level parameter for objects within that database unless an even more specific value is set at the schema or table level.
- C. Incorrect.
Incorrect. Newly created child objects can inherit object parameter values from higher levels in the hierarchy. Snowflake does not ignore parent-level object parameters when a child object is created. The system default only matters when no explicit value is set at any applicable higher level.
- D. Incorrect.
Incorrect. DATA_RETENTION_TIME_IN_DAYS does not need to be set individually on every permanent table. It can be managed centrally through hierarchical object parameters at the account, database, or schema level, with table-level overrides used only when exceptions are required.