{ "title": "dbt_yml_files", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "version": { "type": "number", "const": 2 }, "analyses": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "columns": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "data_type": { "type": "string" } }, "additionalProperties": false } }, "config": { "type": "object", "properties": { "tags": { "$ref": "#/$defs/string_or_array_of_strings" } }, "additionalProperties": false }, "description": { "type": "string" }, "docs": { "$ref": "#/$defs/docs_config" }, "group": { "$ref": "#/$defs/group" } } } }, "exposures": { "type": "array", "items": { "type": "object", "required": ["depends_on", "name", "owner", "type"], "$comment": "NB: depends_on is not strictly required, but is _expected_ according to the documentation", "properties": { "name": { "type": "string" }, "label": { "type": "string", "$comment": "Added in dbt Core v1.3" }, "type": { "type": "string", "enum": ["dashboard", "notebook", "analysis", "ml", "application"] }, "depends_on": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "maturity": { "type": "string", "enum": ["high", "medium", "low"] }, "meta": { "type": "object" }, "owner": { "type": "object", "anyOf": [ {"required": ["email"]}, {"required": ["name"]} ], "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "additionalProperties": false }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "url": { "type": "string" } } } }, "groups": { "type": "array", "items": { "type": "object", "required": ["name", "owner"], "properties": { "name": { "type": "string" }, "owner": { "type": "object", "minProperties": 1, "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "additionalProperties": true } }, "additionalProperties": false } }, "macros": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "arguments": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": false } }, "description": { "type": "string" }, "docs": { "$ref": "#/$defs/docs_config" } }, "additionalProperties": false } }, "metrics": { "type": "array", "items": { "type": "object", "required": ["name", "label", "type", "type_params"], "properties": { "description": { "type": "string" }, "filter": { "type": "string" }, "group": { "$ref": "#/$defs/group" }, "label": { "type": "string" }, "name": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "type": { "enum": [ "SIMPLE", "RATIO", "CUMULATIVE", "DERIVED", "simple", "ratio", "cumulative", "derived" ] }, "type_params": { "$ref": "#/$defs/metric_type_params" } }, "additionalProperties": false } }, "models": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "access": { "type": "string", "enum": ["private", "protected", "public"] }, "columns": { "type": "array", "items": { "$ref": "#/$defs/column_properties" } }, "config": { "$ref": "#/$defs/model_configs" }, "constraints": { "$ref": "#/$defs/constraints" }, "description": { "type": "string" }, "deprecation_date": { "type": "string" }, "docs": { "$ref": "#/$defs/docs_config" }, "group": { "$ref": "#/$defs/group" }, "latest_version": { "type": "number" }, "meta": { "type": "object" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } }, "versions": { "type": "array", "items": { "type": "object", "required": ["v"], "properties": { "v": { "type": "number" }, "config": { "$ref": "#/$defs/model_configs" }, "columns": { "type": "array", "items": { "anyOf": [ { "$ref": "#/$defs/include_exclude" }, { "$ref": "#/$defs/column_properties" } ] } } } } } }, "additionalProperties": false } }, "seeds": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "columns": { "type": "array", "items": { "$ref": "#/$defs/column_properties" } }, "config": { "type": "object", "properties": { "column_types": { "type": "object" }, "copy_grants": { "$ref": "#/$defs/boolean_or_jinja_string" }, "database": { "type": "string" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "grants": { "$ref": "#/$defs/grants" }, "quote_columns": { "$ref": "#/$defs/boolean_or_jinja_string" }, "schema": { "type": "string" } } }, "description": { "type": "string" }, "docs": { "$ref": "#/$defs/docs_config" }, "group": { "$ref": "#/$defs/group" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } } }, "additionalProperties": false } }, "semantic_models": { "type": "array", "items": { "type": "object", "required": ["name", "model"], "properties": { "defaults": { "type": "object", "properties": { "agg_time_dimension": { "type": "string" } }, "additionalProperties": false }, "description": { "type": "string" }, "dimensions": { "type": "array", "items": { "$ref": "#/$defs/dimension" } }, "entities": { "type": "array", "items": { "$ref": "#/$defs/entity" } }, "measures": { "type": "array", "items": { "$ref": "#/$defs/measure" } }, "model": { "type": "string", "default": "ref('')" }, "name": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "primary_entity": { "type": "string" } }, "additionalProperties": false } }, "snapshots": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "columns": { "type": "array", "items": { "$ref": "#/$defs/column_properties" } }, "config": { "type": "object", "properties": { "alias": { "type": "string" }, "check_cols": { "$ref": "#/$defs/string_or_array_of_strings" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "grants": { "$ref": "#/$defs/grants" }, "persist_docs": { "$ref": "#/$defs/persist_docs_config" }, "post-hook": { "$ref": "#/$defs/array_of_strings" }, "pre-hook": { "$ref": "#/$defs/array_of_strings" }, "quote_columns": { "$ref": "#/$defs/boolean_or_jinja_string" }, "strategy": { "type": "string" }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "target_database": { "type": "string" }, "target_schema": { "type": "string" }, "unique_key": { "$ref": "#/$defs/string_or_array_of_strings" }, "updated_at": { "type": "string" } } }, "description": { "type": "string" }, "docs": { "$ref": "#/$defs/docs_config" }, "group": { "$ref": "#/$defs/group" }, "meta": { "type": "object" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } } }, "additionalProperties": false } }, "sources": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "How you will identify the schema in {{ source() }} calls. Unless `schema` is also set, this will be the name of the schema in the database." }, "config": { "type": "object" }, "database": { "type": "string" }, "description": { "type": "string" }, "freshness": { "$ref": "#/$defs/freshness_definition" }, "loaded_at_field": { "type": "string" }, "loader": { "type": "string" }, "meta": { "type": "object" }, "overrides": { "title": "Package to Override", "type": "string", "description": "The name of another package installed in your project. If that package has a source with the same name as this one, its properties will be applied on top of the base properties of the overridden source. https://docs.getdbt.com/reference/resource-properties/overrides" }, "quoting": { "type": "object", "properties": { "database": { "$ref": "#/$defs/boolean_or_jinja_string" }, "identifier": { "$ref": "#/$defs/boolean_or_jinja_string" }, "schema": { "$ref": "#/$defs/boolean_or_jinja_string" } }, "additionalProperties": false }, "schema": { "type": "string", "description": "The schema name as stored in the database. Only needed if you want to use a different `name` than what exists in the database (otherwise `name` is used by default)" }, "tables": { "type": "array", "items": { "type": "object", "required": ["name"], "properties": { "name": { "title": "Name", "type": "string", "description": "How you will identify the table in {{ source() }} calls. Unless `identifier` is also set, this will be the name of the table in the database." }, "columns": { "type": "array", "items": { "$ref": "#/$defs/column_properties" } }, "description": { "type": "string" }, "external": { "type": "object" }, "freshness": { "$ref": "#/$defs/freshness_definition" }, "identifier": { "title": "Identifier", "type": "string", "description": "The table name as stored in the database. Only needed if you want to give the source a different name than what exists in the database (otherwise `name` is used by default)" }, "loaded_at_field": { "type": "string", "description": "Which column to check during data freshness tests. Only needed if the table has a different loaded_at_field to the one defined on the source overall." }, "loader": { "type": "string" }, "meta": { "type": "object" }, "quoting": { "type": "object", "properties": { "database": { "$ref": "#/$defs/boolean_or_jinja_string" }, "identifier": { "$ref": "#/$defs/boolean_or_jinja_string" }, "schema": { "$ref": "#/$defs/boolean_or_jinja_string" } }, "additionalProperties": false }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } } }, "additionalProperties": false } }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } } } } } }, "additionalProperties": false, "$defs": { "aggregation_type_params": { "type": "object", "properties": { "percentile": { "type": "number" }, "use_approximate_percentile": { "type": "boolean" }, "use_discrete_percentile": { "type": "boolean" } }, "additionalProperties": false }, "array_of_strings": { "type": "array", "items": { "type": "string" } }, "boolean_or_jinja_string": { "oneOf": [ { "$ref": "#/$defs/jinja_string" }, { "type": "boolean" } ], "additionalProperties": false }, "column_properties": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "constraints": { "$ref": "#/$defs/constraints" }, "data_type": { "type": "string" }, "description": { "type": "string" }, "meta": { "type": "object" }, "policy_tags": { "title": "Policy tags", "type": "array", "description": "Configurations, specific to BigQuery adapter, used to set policy tags on specific columns, enabling column-level security. Only relevant when `persist_docs.columns` is true.", "items": { "type": "string" } }, "quote": { "$ref": "#/$defs/boolean_or_jinja_string" }, "tests": { "type": "array", "items": { "$ref": "#/$defs/tests" } }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" } }, "additionalProperties": false, "uniqueItems": true }, "constraints": { "type": "array", "items": { "type": "object", "required": ["type"], "properties": { "columns": { "$ref": "#/$defs/string_or_array_of_strings" }, "expression": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "warn_unenforced": { "$ref": "#/$defs/boolean_or_jinja_string" }, "warn_unsupported": { "$ref": "#/$defs/boolean_or_jinja_string" } } } }, "dimension": { "type": "object", "required": ["name", "type"], "anyOf": [ { "not": { "$ref": "#/$defs/is-time-dimension" } }, { "required": ["type_params"] } ], "properties": { "description": { "type": "string" }, "expr": { "type": ["string", "boolean"] }, "is_partition": { "type": "boolean" }, "name": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "type": { "enum": ["CATEGORICAL", "TIME", "categorical", "time"] }, "type_params": { "$ref": "#/$defs/dimension_type_params" } }, "additionalProperties": false }, "dimension_type_params": { "type": "object", "required": ["time_granularity"], "properties": { "time_granularity": { "enum": [ "DAY", "WEEK", "MONTH", "QUARTER", "YEAR", "day", "week", "month", "quarter", "year" ] }, "validity_params": { "$ref": "#/$defs/validity_params" } }, "additionalProperties": false }, "docs_config": { "title": "Docs config", "type": "object", "description": "Configurations for the appearance of nodes in the dbt documentation.", "properties": { "node_color": { "type": "string", "description": "The color of the node on the DAG in the documentation. It must be an Hex code or a valid CSS color name.", "pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|[^#][a-zA-Z]*)$" }, "show": { "type": "boolean", "default": true } }, "additionalProperties": false }, "entity": { "required": ["name", "type"], "type": "object", "properties": { "entity": { "type": "string" }, "expr": { "type": ["string", "boolean"] }, "name": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "role": { "type": "string" }, "type": { "enum": [ "PRIMARY", "UNIQUE", "FOREIGN", "NATURAL", "primary", "unique", "foreign", "natural" ] } }, "additionalProperties": false }, "freshness_definition": { "default": { "warn_after": { "count": 1, "period": "day" }, "error_after": { "count": 2, "period": "day" } }, "oneOf": [ { "type": "object", "properties": { "error_after": { "$ref": "#/$defs/freshness_rules" }, "filter": { "type": "string" }, "warn_after": { "$ref": "#/$defs/freshness_rules" } }, "additionalProperties": false }, { "const": null } ] }, "freshness_rules": { "type": "object", "required": ["count", "period"], "properties": { "count": { "$ref": "#/$defs/number_or_jinja_string" }, "period": { "type": "string", "enum": ["minute", "hour", "day"] } }, "additionalProperties": false }, "grants": { "type": "object", "description": "grant config. each key is a database permission and the value is the grantee of that permission", "patternProperties": { ".*": { "$ref": "#/$defs/string_or_array_of_strings" } }, "additionalProperties": false }, "group": { "type": "string" }, "include_exclude": { "type": "object", "properties": { "include": { "$ref": "#/$defs/string_or_array_of_strings" }, "exclude": { "$ref": "#/$defs/string_or_array_of_strings" } } }, "is-time-dimension": { "properties": { "type": { "enum": ["TIME", "time"] } }, "required": ["type"] }, "jinja_string": { "type": "string", "pattern": "\\{\\{.*\\}\\}" }, "measure": { "required": ["name", "agg"], "type": "object", "properties": { "agg": { "enum": [ "SUM", "MIN", "MAX", "AVERAGE", "COUNT_DISTINCT", "SUM_BOOLEAN", "COUNT", "PERCENTILE", "MEDIAN", "sum", "min", "max", "average", "count_distinct", "sum_boolean", "count", "percentile", "median" ] }, "agg_params": { "$ref": "#/$defs/aggregation_type_params" }, "agg_time_dimension": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "create_metric": { "type": "boolean" }, "create_metric_display_name": { "type": "string" }, "description": { "type": "string" }, "expr": { "type": ["string", "integer", "boolean"] }, "name": { "pattern": "(?!.*__).*^[a-z][a-z0-9_]*[a-z0-9]$", "type": "string" }, "non_additive_dimension": { "$ref": "#/$defs/non_additive_dimension" } }, "additionalProperties": false }, "metric_input_measure": { "oneOf": [ { "type": "string" }, { "additionalProperties": false, "properties": { "alias": { "type": "string" }, "filter": { "type": "string" }, "name": { "type": "string" } }, "type": "object" } ] }, "metric_input_schema": { "type": "object", "properties": { "alias": { "type": "string" }, "filter": { "type": "string" }, "name": { "type": "string" }, "offset_to_grain": { "type": "string" }, "offset_window": { "type": "string" } }, "additionalProperties": false }, "metric_type_params": { "type": "object", "properties": { "denominator": { "$ref": "#/$defs/metric_input_measure" }, "expr": { "type": ["string", "boolean"] }, "grain_to_date": { "type": "string" }, "measure": { "$ref": "#/$defs/metric_input_measure" }, "metrics": { "items": { "$ref": "#/$defs/metric_input_schema" }, "type": "array" }, "numerator": { "$ref": "#/$defs/metric_input_measure" }, "window": { "type": "string" } }, "additionalProperties": false }, "model_configs": { "type": "object", "properties": { "auto_refresh": { "$ref": "#/$defs/boolean_or_jinja_string" }, "backup": { "$ref": "#/$defs/boolean_or_jinja_string" }, "contract": { "type": "object", "properties": { "enforced": { "$ref": "#/$defs/boolean_or_jinja_string" } } }, "file_format": { "type": "string" }, "grant_access_to": { "title": "Authorized views", "type": "array", "description": "Configuration, specific to BigQuery adapter, used to setup authorized views.", "items": { "type": "object", "required": ["database", "project"], "properties": { "database": { "type": "string" }, "project": { "type": "string" } }, "additionalProperties": false } }, "grants": { "$ref": "#/$defs/grants" }, "hours_to_expiration": { "type": "number", "description": "Configuration specific to BigQuery adapter used to set an expiration delay (in hours) to a table." }, "kms_key_name": { "type": "string", "description": "Configuration of the KMS key name, specific to BigQuery adapter.", "pattern": "projects/[a-zA-Z0-9_-]*/locations/[a-zA-Z0-9_-]*/keyRings/.*/cryptoKeys/.*" }, "labels": { "title": "Label configs", "type": "object", "description": "Configuration specific to BigQuery adapter used to add labels and tags to tables/views created by dbt.", "patternProperties": { "^[a-z][a-z0-9_-]{0,62}$": { "type": "string", "pattern": "^[a-z0-9_-]{0,63}$" } }, "additionalProperties": false }, "location": { "type": "string" }, "materialized": { "type": "string" }, "on_configuration_change": { "type": "string", "enum": ["apply", "continue", "fail"] }, "on_schema_change": { "type": "string", "enum": ["append_new_columns", "fail", "ignore", "sync_all_columns"] }, "sql_header": { "type": "string" }, "snowflake_warehouse":{ "type": "string" }, "target_lag":{ "type": "string", "pattern": "^(?:downstream|\\d+\\s*(?:seconds|minutes|hours|days))$" } } }, "non_additive_dimension": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "window_choice": { "enum": ["MIN", "MAX", "min", "max"] }, "window_groupings": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false }, "number_or_jinja_string": { "oneOf": [ { "$ref": "#/$defs/jinja_string" }, { "type": "number" } ], "additionalProperties": false }, "persist_docs_config": { "title": "Persist docs config", "type": "object", "description": "Configurations for the persistence of the dbt documentation.", "properties": { "columns": { "$ref": "#/$defs/boolean_or_jinja_string", "default": true }, "relation": { "$ref": "#/$defs/boolean_or_jinja_string", "default": true } }, "additionalProperties": false }, "string_or_array_of_strings": { "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/array_of_strings" } ] }, "test_configs": { "title": "Test configs", "type": "object", "description": "Configurations set here will override configs set in dbt_project.yml.", "properties": { "alias": { "type": "string", "description": "Only relevant when `store_failures` is true" }, "database": { "type": "string", "description": "Only relevant when `store_failures` is true" }, "enabled": { "$ref": "#/$defs/boolean_or_jinja_string" }, "error_if": { "type": "string" }, "fail_calc": { "type": "string" }, "limit": { "type": "number" }, "schema": { "type": "string", "description": "Only relevant when `store_failures` is true" }, "severity": { "oneOf": [ { "$ref": "#/$defs/jinja_string" }, { "type": "string", "enum": ["warn", "error"] } ] }, "store_failures": { "$ref": "#/$defs/boolean_or_jinja_string" }, "tags": { "$ref": "#/$defs/string_or_array_of_strings" }, "warn_if": { "type": "string" } } }, "tests": { "anyOf": [ { "type": "string" }, { "title": "Relationships Test", "type": "object", "properties": { "relationships": { "type": "object", "required": ["to", "field"], "properties": { "name": { "type": "string" }, "config": { "$ref": "#/$defs/test_configs" }, "field": { "title": "Relationships: Field", "type": "string", "default": "", "description": "The foreign key column" }, "to": { "type": "string", "default": "ref('')", "examples": [ "ref('parent_model')", "source('parent_schema', 'parent_table')" ] }, "where": { "type": "string" } } } } }, { "title": "Accepted Values Test", "type": "object", "properties": { "accepted_values": { "type": "object", "required": ["values"], "properties": { "name": { "type": "string" }, "config": { "$ref": "#/$defs/test_configs" }, "quote": { "type": "boolean" }, "values": { "type": "array", "items": { "type": "string" } }, "where": { "type": "string" } } } } }, { "title": "Not Null Test", "type": "object", "properties": { "not_null": { "type": "object", "properties": { "name": { "type": "string" }, "config": { "$ref": "#/$defs/test_configs" }, "where": { "type": "string" } } } } }, { "title": "Unique Test", "type": "object", "properties": { "unique": { "type": "object", "properties": { "name": { "type": "string" }, "config": { "$ref": "#/$defs/test_configs" }, "where": { "type": "string" } } } } } ] }, "validity_params": { "type": "object", "properties": { "is_end": { "type": "boolean" }, "is_start": { "type": "boolean" } }, "additionalProperties": false } } }