diff --git a/schemas/latest/dbt_yml_files-latest.json b/schemas/latest/dbt_yml_files-latest.json index 664c74a..1032fd9 100644 --- a/schemas/latest/dbt_yml_files-latest.json +++ b/schemas/latest/dbt_yml_files-latest.json @@ -112,9 +112,17 @@ "owner": { "type": "object", "anyOf": [ - {"required": ["email"]}, - {"required": ["name"]} - ], + { + "required": [ + "email" + ] + }, + { + "required": [ + "name" + ] + } + ], "properties": { "name": { "type": "string" @@ -343,6 +351,51 @@ "additionalProperties": false } }, + "saved_queries": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "description", + "label", + "query_params" + ], + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "exports": { + "type": "array", + "items": { + "$ref": "#/$defs/export" + } + }, + "label": { + "type": "string" + }, + "query_params": { + "type": "object", + "properties": { + "dimensions": { + "$ref": "#/$defs/array_of_strings" + }, + "metrics": { + "$ref": "#/$defs/array_of_strings" + }, + "where": { + "$ref": "#/$defs/array_of_strings" + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, "seeds": { "type": "array", "items": { @@ -1225,6 +1278,37 @@ }, "additionalProperties": false }, + "export": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "export_as": { + "enum": [ + "table", + "view", + "cache" + ] + }, + "schema": { + "type": "string" + } + }, + "additionalProperties": true + } + }, + "additionalProperties": false + }, "freshness_definition": { "default": { "error_after": { diff --git a/tests/latest/invalid/dbt_yml_files.yml b/tests/latest/invalid/dbt_yml_files.yml index c9d5579..309909f 100644 --- a/tests/latest/invalid/dbt_yml_files.yml +++ b/tests/latest/invalid/dbt_yml_files.yml @@ -72,4 +72,26 @@ unit_tests: expect: rows: | col_1,col_2 - val_1,val_2 \ No newline at end of file + val_1,val_2 + + +saved_queries: + - name: test_saved_query + description: + term: paper + label: Test saved query + query_params: + metrics: simple_metric + group_by: + - "Dimension('user__ds')" + where: + - "{{ Dimension('user__ds', 'DAY') }} <= now()" + - "{{ Dimension('user__ds', 'DAY') }} >= '2023-01-01'" + exports: + - name: my_export + config: + alias: my_export_alias + export_as: joel + schema: + - my_export_schema_name + - my_export_schema_name_2} \ No newline at end of file diff --git a/tests/latest/valid/dbt_yml_files.yml b/tests/latest/valid/dbt_yml_files.yml index bedadc1..c6e1815 100644 --- a/tests/latest/valid/dbt_yml_files.yml +++ b/tests/latest/valid/dbt_yml_files.yml @@ -189,4 +189,24 @@ metrics: type_params: measure: customers_with_orders filter: | - {{ Dimension('customer__customer_type') }} = 'new' \ No newline at end of file + {{ Dimension('customer__customer_type') }} = 'new' + + +saved_queries: + - name: test_saved_query + description: "{{ doc('saved_query_description') }}" + label: Test saved query + query_params: + metrics: + - simple_metric + group_by: + - "Dimension('user__ds')" + where: + - "{{ Dimension('user__ds', 'DAY') }} <= now()" + - "{{ Dimension('user__ds', 'DAY') }} >= '2023-01-01'" + exports: + - name: my_export + config: + alias: my_export_alias + export_as: table + schema: my_export_schema_name \ No newline at end of file