Update more code following new deprecations

This commit is contained in:
Benoit Perigaud
2025-08-11 20:37:21 +02:00
parent f524b31f29
commit 78d73ead0b
18 changed files with 214 additions and 145 deletions

3
.gitignore vendored
View File

@@ -27,4 +27,5 @@ integration_tests/package-lock.yml
# duckdb # duckdb
*.db *.db
*.duckdb *.duckdb
dbt_internal_packages/

View File

@@ -2,7 +2,7 @@ name: 'dbt_project_evaluator'
version: '1.0.0' version: '1.0.0'
config-version: 2 config-version: 2
require-dbt-version: [">=1.9.0", "<3.0.0"] require-dbt-version: [">=1.10.6", "<3.0.0"]
model-paths: ["models"] model-paths: ["models"]
analysis-paths: ["analysis"] analysis-paths: ["analysis"]

View File

@@ -31,6 +31,7 @@ dispatch:
flags: flags:
require_nested_cumulative_type_params: True require_nested_cumulative_type_params: True
require_yaml_configuration_for_mf_time_spines: True require_yaml_configuration_for_mf_time_spines: True
require_generic_test_arguments_property: True
models: models:
dbt_project_evaluator_integration_tests: dbt_project_evaluator_integration_tests:

View File

@@ -1,7 +1,7 @@
models: models:
- name: excluded_model - name: excluded_model
access: public
config: config:
access: public
contract: contract:
enforced: true enforced: true
columns: columns:

View File

@@ -6,10 +6,11 @@ exposures:
type: dashboard type: dashboard
url: dave.com/metrics url: dave.com/metrics
maturity: low maturity: low
tags: ['proserv']
owner: owner:
name: dave's davey name: dave's davey
email: proserv@dbt.com email: proserv@dbt.com
config:
tags: ['proserv']
depends_on: depends_on:
- ref('fct_model_6') - ref('fct_model_6')

View File

@@ -1,10 +1,15 @@
version: 2 version: 2
groups:
- name: my_awesome_group
owner:
email: thegoat@jaffleshop.com
models: models:
- name: report_1 - name: report_1
description: tom cruise's minority report description: tom cruise's minority report
access: public
config: config:
access: public
materialized: table materialized: table
columns: columns:
- name: col - name: col
@@ -13,9 +18,10 @@ models:
- name: report_2 - name: report_2
description: the colbert report description: the colbert report
access: public
config: config:
access: public
materialized: table materialized: table
group: my_awesome_group
contract: contract:
enforced: true enforced: true
columns: columns:

View File

@@ -13,9 +13,10 @@ models:
- name: stg_model_3 - name: stg_model_3
data_tests: data_tests:
- dbt_utils.unique_combination_of_columns: - dbt_utils.unique_combination_of_columns:
combination_of_columns: arguments:
- id combination_of_columns:
- color - id
- color
- name: stg_model_2 - name: stg_model_2
columns: columns:
- name: id - name: id

View File

@@ -8,8 +8,9 @@ models:
- unique - unique
- not_null - not_null
- relationships: - relationships:
to: ref('stg_model_2') arguments:
field: id to: ref('stg_model_2')
field: id
- name: "concat(coalesce('fake_column', ' '),'for_testing')" - name: "concat(coalesce('fake_column', ' '),'for_testing')"
data_tests: data_tests:
- not_null - not_null

View File

@@ -4,100 +4,122 @@ seeds:
- name: test_fct_multiple_sources_joined - name: test_fct_multiple_sources_joined
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_multiple_sources_joined config:
compare_model: ref('fct_multiple_sources_joined') name: equality_fct_multiple_sources_joined
compare_columns: arguments:
- child compare_model: ref('fct_multiple_sources_joined')
- "{{ 'source_parents' if target.type != 'databricks' else 'child' }}" compare_columns:
- child
- "{{ 'source_parents' if target.type != 'databricks' else 'child' }}"
- name: test_fct_direct_join_to_source - name: test_fct_direct_join_to_source
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_direct_join_to_source config:
compare_model: ref('fct_direct_join_to_source') name: equality_fct_direct_join_to_source
compare_columns: arguments:
- parent compare_model: ref('fct_direct_join_to_source')
- parent_resource_type compare_columns:
- child - parent
- child_resource_type - parent_resource_type
- distance - child
- child_resource_type
- distance
- name: test_fct_duplicate_sources - name: test_fct_duplicate_sources
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_duplicate_sources config:
compare_model: ref('fct_duplicate_sources') name: equality_fct_duplicate_sources
compare_columns: arguments:
- source_names compare_model: ref('fct_duplicate_sources')
compare_columns:
- source_names
- name: test_fct_root_models - name: test_fct_root_models
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_root_models config:
compare_model: ref('fct_root_models') name: equality_fct_root_models
arguments:
compare_model: ref('fct_root_models')
- name: test_fct_unused_sources - name: test_fct_unused_sources
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_unused_sources config:
compare_model: ref('fct_unused_sources') name: equality_fct_unused_sources
arguments:
compare_model: ref('fct_unused_sources')
- name: test_fct_source_fanout - name: test_fct_source_fanout
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_source_fanout config:
compare_model: ref('fct_source_fanout') name: equality_fct_source_fanout
compare_columns: arguments:
- parent compare_model: ref('fct_source_fanout')
- "{{ 'model_children' if target.type != 'databricks' else 'parent' }}" compare_columns:
- parent
- "{{ 'model_children' if target.type != 'databricks' else 'parent' }}"
- name: test_fct_model_fanout - name: test_fct_model_fanout
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_model_fanout config:
compare_model: ref('fct_model_fanout') name: equality_fct_model_fanout
compare_columns: arguments:
- parent compare_model: ref('fct_model_fanout')
- parent_model_type compare_columns:
- "{{ 'leaf_children' if target.type != 'databricks' else 'parent_model_type' }}" - parent
- parent_model_type
- "{{ 'leaf_children' if target.type != 'databricks' else 'parent_model_type' }}"
- name: test_fct_staging_dependent_on_staging - name: test_fct_staging_dependent_on_staging
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_staging_dependent_on_staging config:
compare_model: ref('fct_staging_dependent_on_staging') name: equality_fct_staging_dependent_on_staging
compare_columns: arguments:
- parent compare_model: ref('fct_staging_dependent_on_staging')
- parent_model_type compare_columns:
- child - parent
- child_model_type - parent_model_type
- child
- child_model_type
- name: test_fct_rejoining_of_upstream_concepts - name: test_fct_rejoining_of_upstream_concepts
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_rejoining_of_upstream_concepts config:
compare_model: ref('fct_rejoining_of_upstream_concepts') name: equality_fct_rejoining_of_upstream_concepts
compare_columns: arguments:
- parent compare_model: ref('fct_rejoining_of_upstream_concepts')
- child compare_columns:
- parent_and_child - parent
- is_loop_independent - child
- parent_and_child
- is_loop_independent
- name: test_fct_hard_coded_references - name: test_fct_hard_coded_references
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_hard_coded_references config:
compare_model: ref('fct_hard_coded_references') name: equality_fct_hard_coded_references
compare_columns: arguments:
- model compare_model: ref('fct_hard_coded_references')
- hard_coded_references compare_columns:
- model
- hard_coded_references
- name: test_fct_too_many_joins - name: test_fct_too_many_joins
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_too_many_joins config:
compare_model: ref('fct_too_many_joins') name: equality_fct_too_many_joins
compare_columns: arguments:
- resource_name compare_model: ref('fct_too_many_joins')
- file_path compare_columns:
- join_count - resource_name
- file_path
- join_count

View File

@@ -7,8 +7,10 @@ seeds:
- docs - docs
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_undocumented_models config:
compare_model: ref('fct_undocumented_models') name: equality_fct_undocumented_models
arguments:
compare_model: ref('fct_undocumented_models')
- name: test_fct_documentation_coverage - name: test_fct_documentation_coverage
config: config:
@@ -21,16 +23,18 @@ seeds:
- docs - docs
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_documentation_coverage config:
compare_model: ref('fct_documentation_coverage') name: equality_fct_documentation_coverage
compare_columns: arguments:
- total_models compare_model: ref('fct_documentation_coverage')
- documented_models compare_columns:
- documentation_coverage_pct - total_models
- staging_documentation_coverage_pct - documented_models
- intermediate_documentation_coverage_pct - documentation_coverage_pct
- marts_documentation_coverage_pct - staging_documentation_coverage_pct
- other_documentation_coverage_pct - intermediate_documentation_coverage_pct
- marts_documentation_coverage_pct
- other_documentation_coverage_pct
- name: test_fct_undocumented_source_tables - name: test_fct_undocumented_source_tables
config: config:
@@ -38,8 +42,10 @@ seeds:
- docs - docs
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_undocumented_source_tables config:
compare_model: ref('fct_undocumented_source_tables') name: equality_fct_undocumented_source_tables
arguments:
compare_model: ref('fct_undocumented_source_tables')
- name: test_fct_undocumented_sources - name: test_fct_undocumented_sources
config: config:
@@ -47,5 +53,7 @@ seeds:
- docs - docs
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_undocumented_sources config:
compare_model: ref('fct_undocumented_sources') name: equality_fct_undocumented_sources
arguments:
compare_model: ref('fct_undocumented_sources')

View File

@@ -4,14 +4,19 @@ seeds:
- name: test_fct_public_models_without_contract - name: test_fct_public_models_without_contract
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
compare_model: ref('fct_public_models_without_contract') arguments:
compare_model: ref('fct_public_models_without_contract')
- name: test_fct_undocumented_public_models - name: test_fct_undocumented_public_models
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
compare_model: ref('fct_undocumented_public_models') config:
name: equality_fct_undocumented_public_models
arguments:
compare_model: ref('fct_undocumented_public_models')
- name: test_fct_exposures_dependent_on_private_models - name: test_fct_exposures_dependent_on_private_models
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
compare_model: ref('fct_exposures_dependent_on_private_models') arguments:
compare_model: ref('fct_exposures_dependent_on_private_models')

View File

@@ -4,14 +4,17 @@ seeds:
- name: test_fct_chained_views_dependencies - name: test_fct_chained_views_dependencies
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_chained_views_dependencies config:
compare_model: ref('fct_chained_views_dependencies') name: equality_fct_chained_views_dependencies
compare_columns: arguments:
- parent compare_model: ref('fct_chained_views_dependencies')
- child compare_columns:
- distance - parent
- child
- distance
- name: test_fct_exposure_parents_materializations - name: test_fct_exposure_parents_materializations
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
compare_model: ref('fct_exposure_parents_materializations') arguments:
compare_model: ref('fct_exposure_parents_materializations')

View File

@@ -4,37 +4,45 @@ seeds:
- name: test_fct_model_directories - name: test_fct_model_directories
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_model_directories config:
compare_model: ref('fct_model_directories') name: equality_fct_model_directories
compare_columns: arguments:
- resource_name compare_model: ref('fct_model_directories')
- current_file_path compare_columns:
- change_file_path_to - resource_name
- current_file_path
- change_file_path_to
- name: test_fct_model_naming_conventions - name: test_fct_model_naming_conventions
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_model_naming_conventions config:
compare_model: ref('fct_model_naming_conventions') name: equality_fct_model_naming_conventions
compare_columns: arguments:
- resource_name compare_model: ref('fct_model_naming_conventions')
- model_type compare_columns:
- "{{ 'appropriate_prefixes' if target.type != 'databricks' else 'model_type' }}" - resource_name
- model_type
- "{{ 'appropriate_prefixes' if target.type != 'databricks' else 'model_type' }}"
- name: test_fct_source_directories - name: test_fct_source_directories
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_source_directories config:
compare_model: ref('fct_source_directories') name: equality_fct_source_directories
compare_columns: arguments:
- resource_name compare_model: ref('fct_source_directories')
- current_file_path compare_columns:
- change_file_path_to - resource_name
- current_file_path
- change_file_path_to
- name: test_fct_test_directories - name: test_fct_test_directories
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_test_directories config:
compare_model: ref('fct_test_directories') name: equality_fct_test_directories
compare_columns: arguments:
- test_name compare_model: ref('fct_test_directories')
- model_name compare_columns:
- current_test_directory - test_name
- change_test_directory_to - model_name
- current_test_directory
- change_test_directory_to

View File

@@ -4,11 +4,13 @@ seeds:
- name: test_fct_missing_primary_key_tests - name: test_fct_missing_primary_key_tests
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_missing_primary_key_tests config:
compare_model: ref('fct_missing_primary_key_tests') name: equality_fct_missing_primary_key_tests
exclude_columns: arguments:
- resource_type compare_model: ref('fct_missing_primary_key_tests')
- model_type exclude_columns:
- resource_type
- model_type
- name: test_fct_test_coverage - name: test_fct_test_coverage
config: config:
@@ -20,21 +22,25 @@ seeds:
other_test_coverage_pct: *float other_test_coverage_pct: *float
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_test_coverage config:
compare_model: ref('fct_test_coverage') name: equality_fct_test_coverage
compare_columns: arguments:
- total_models compare_model: ref('fct_test_coverage')
- total_tests compare_columns:
- tested_models - total_models
- "{{ 'test_coverage_pct' if not target.name in ['duckdb', 'databricks', 'trino'] else 'tested_models' }}" - total_tests
- test_to_model_ratio - tested_models
- staging_test_coverage_pct - "{{ 'test_coverage_pct' if not target.name in ['duckdb', 'databricks', 'trino'] else 'tested_models' }}"
- intermediate_test_coverage_pct - test_to_model_ratio
- marts_test_coverage_pct - staging_test_coverage_pct
- other_test_coverage_pct - intermediate_test_coverage_pct
- marts_test_coverage_pct
- other_test_coverage_pct
- name: test_fct_sources_without_freshness - name: test_fct_sources_without_freshness
data_tests: data_tests:
- dbt_utils.equality: - dbt_utils.equality:
name: equality_fct_sources_without_freshness config:
compare_model: ref('fct_sources_without_freshness') name: equality_fct_sources_without_freshness
arguments:
compare_model: ref('fct_sources_without_freshness')

View File

@@ -33,6 +33,7 @@ on-run-end: "{{ dbt_project_evaluator.print_dbt_project_evaluator_issues() }}"
flags: flags:
require_nested_cumulative_type_params: True require_nested_cumulative_type_params: True
require_yaml_configuration_for_mf_time_spines: True require_yaml_configuration_for_mf_time_spines: True
require_generic_test_arguments_property: True
models: models:
dbt_project_evaluator_integration_tests_2: dbt_project_evaluator_integration_tests_2:

View File

@@ -10,9 +10,11 @@ models:
description: the number of models in the project with a description divided by the total number of models in the project description: the number of models in the project with a description divided by the total number of models in the project
data_tests: data_tests:
- dbt_utils.accepted_range: - dbt_utils.accepted_range:
name: valid_documentation_coverage config:
min_value: "{{ var('documentation_coverage_target') }}" name: valid_documentation_coverage
severity: warn severity: warn
arguments:
min_value: "{{ var('documentation_coverage_target') }}"
- name: fct_undocumented_models - name: fct_undocumented_models
description: > description: >
This model contains all models that do not have a description configured in a YML file. This model contains all models that do not have a description configured in a YML file.

View File

@@ -8,4 +8,5 @@ models:
the chain to table or incremental. the chain to table or incremental.
data_tests: data_tests:
- is_empty: - is_empty:
severity: warn config:
severity: warn

View File

@@ -14,9 +14,11 @@ models:
description: the number of models in the project with at least one test configured divided by the total number of models in the project description: the number of models in the project with at least one test configured divided by the total number of models in the project
data_tests: data_tests:
- dbt_utils.accepted_range: - dbt_utils.accepted_range:
name: valid_test_coverage config:
min_value: "{{ var('test_coverage_target') }}" name: valid_test_coverage
severity: warn severity: warn
arguments:
min_value: "{{ var('test_coverage_target') }}"
- name: fct_missing_primary_key_tests - name: fct_missing_primary_key_tests
description: this model has one record for every model without unique and not null tests configured on a single column description: this model has one record for every model without unique and not null tests configured on a single column
data_tests: data_tests: