diff --git a/website/dbt-versions.js b/website/dbt-versions.js
index 3eff99e7f98..8689547fd67 100644
--- a/website/dbt-versions.js
+++ b/website/dbt-versions.js
@@ -27,6 +27,10 @@ exports.versions = [
]
exports.versionedPages = [
+ {
+ "page": "reference/resource-configs/store_failures_as",
+ "firstVersion": "1.7",
+ },
{
"page": "docs/build/build-metrics-intro",
"firstVersion": "1.6",
diff --git a/website/docs/docs/build/metricflow-time-spine.md b/website/docs/docs/build/metricflow-time-spine.md
index 254fa3cc5f0..997d85e38a8 100644
--- a/website/docs/docs/build/metricflow-time-spine.md
+++ b/website/docs/docs/build/metricflow-time-spine.md
@@ -12,6 +12,8 @@ To create this table, you need to create a model in your dbt project called `met
+
+
```sql
{{
config(
@@ -38,8 +40,44 @@ final as (
select * from final
```
+
+
+
+
+
+```sql
+{{
+ config(
+ materialized = 'table',
+ )
+}}
+
+with days as (
+
+ {{
+ dbt.date_spine(
+ 'day',
+ "to_date('01/01/2000','mm/dd/yyyy')",
+ "to_date('01/01/2027','mm/dd/yyyy')"
+ )
+ }}
+
+),
+
+final as (
+ select cast(date_day as date) as date_day
+ from days
+)
+
+select * from final
+```
+
+
+
+
+
```sql
-- filename: metricflow_time_spine.sql
-- BigQuery supports DATE() instead of TO_DATE(). Use this model if you're using BigQuery
@@ -61,4 +99,33 @@ final as (
select *
from final
```
+
+
+
+
+
+```sql
+-- filename: metricflow_time_spine.sql
+-- BigQuery supports DATE() instead of TO_DATE(). Use this model if you're using BigQuery
+{{config(materialized='table')}}
+with days as (
+ {{dbt.date_spine(
+ 'day',
+ "DATE(2000,01,01)",
+ "DATE(2030,01,01)"
+ )
+ }}
+),
+
+final as (
+ select cast(date_day as date) as date_day
+ from days
+)
+
+select *
+from final
+```
+
+
+
You only need to include the `date_day` column in the table. MetricFlow can handle broader levels of detail, but it doesn't currently support finer grains.
diff --git a/website/docs/docs/build/tests.md b/website/docs/docs/build/tests.md
index fa78d0df905..75ee5992a76 100644
--- a/website/docs/docs/build/tests.md
+++ b/website/docs/docs/build/tests.md
@@ -241,7 +241,7 @@ where {{ column_name }} is null
## Storing test failures
-Normally, a test query will calculate failures as part of its execution. If you set the optional `--store-failures` flag or [`store_failures` config](/reference/resource-configs/store_failures), dbt will first save the results of a test query to a table in the database, and then query that table to calculate the number of failures.
+Normally, a test query will calculate failures as part of its execution. If you set the optional `--store-failures` flag, the [`store_failures`](/reference/resource-configs/store_failures), or the [`store_failures_as`](/reference/resource-configs/store_failures_as) configs, dbt will first save the results of a test query to a table in the database, and then query that table to calculate the number of failures.
This workflow allows you to query and examine failing records much more quickly in development:
diff --git a/website/docs/reference/resource-configs/store_failures.md b/website/docs/reference/resource-configs/store_failures.md
index 3c965179211..6c71cdb9296 100644
--- a/website/docs/reference/resource-configs/store_failures.md
+++ b/website/docs/reference/resource-configs/store_failures.md
@@ -3,7 +3,7 @@ resource_types: [tests]
datatype: boolean
---
-The configured test(s) will store their failures when `dbt test --store-failures` is invoked.
+The configured test(s) will store their failures when `dbt test --store-failures` is invoked. If you set this configuration as `false` but [`store_failures_as`](/reference/resource-configs/store_failures_as) is configured, it will be overriden.
## Description
Optionally set a test to always or never store its failures in the database.
diff --git a/website/docs/reference/resource-configs/store_failures_as.md b/website/docs/reference/resource-configs/store_failures_as.md
new file mode 100644
index 00000000000..a9149360089
--- /dev/null
+++ b/website/docs/reference/resource-configs/store_failures_as.md
@@ -0,0 +1,76 @@
+---
+resource_types: [tests]
+id: "store_failures_as"
+---
+
+For the `test` resource type, `store_failures_as` is an optional config that specifies how test failures should be stored in the database. If [`store_failures`](/reference/resource-configs/store_failures) is also configured, `store_failures_as` takes precedence.
+
+The three supported values are:
+
+- `ephemeral` — nothing stored in the database (default)
+- `table` — test failures stored as a database table
+- `view` — test failures stored as a database view
+
+You can configure it in all the same places as `store_failures`, including singular tests (.sql files), generic tests (.yml files), and dbt_project.yml.
+
+### Examples
+
+#### Singular test
+
+[Singular test](https://docs.getdbt.com/docs/build/tests#singular-tests) in `tests/singular/check_something.sql` file
+
+```sql
+{{ config(store_failures_as="table") }}
+
+-- custom singular test
+select 1 as id
+where 1=0
+```
+
+#### Generic test
+
+[Generic tests](https://docs.getdbt.com/docs/build/tests#generic-tests) in `models/_models.yml` file
+
+```yaml
+models:
+ - name: my_model
+ columns:
+ - name: id
+ tests:
+ - not_null:
+ config:
+ store_failures_as: view
+ - unique:
+ config:
+ store_failures_as: ephemeral
+```
+
+#### Project level
+
+Config in `dbt_project.yml`
+
+```yaml
+name: "my_project"
+version: "1.0.0"
+config-version: 2
+profile: "sandcastle"
+
+tests:
+ my_project:
+ +store_failures_as: table
+ my_subfolder_1:
+ +store_failures_as: view
+ my_subfolder_2:
+ +store_failures_as: ephemeral
+```
+
+### "Clobbering" configs
+
+As with most other configurations, `store_failures_as` is "clobbered" when applied hierarchically. Whenever a more specific value is available, it will completely replace the less specific value.
+
+Additional resources:
+
+- [Test configurations](/reference/test-configs#related-documentation)
+- [Test-specific configurations](/reference/test-configs#test-specific-configurations)
+- [Configuring directories of models in dbt_project.yml](/reference/model-configs#configuring-directories-of-models-in-dbt_projectyml)
+- [Config inheritance](/reference/configs-and-properties#config-inheritance)
\ No newline at end of file
diff --git a/website/sidebars.js b/website/sidebars.js
index d70b8c1c4fe..6bd82610367 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -721,6 +721,7 @@ const sidebarSettings = {
"reference/resource-configs/limit",
"reference/resource-configs/severity",
"reference/resource-configs/store_failures",
+ "reference/resource-configs/store_failures_as",
"reference/resource-configs/where",
],
},