-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into fixArtifactsImport
- Loading branch information
Showing
9 changed files
with
154 additions
and
1,218 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
kind: Under the Hood | ||
body: Allow version to be specified in either __version__.py or __about__.py | ||
time: 2024-01-23T12:12:20.529147-05:00 | ||
custom: | ||
Author: mikealfare | ||
Issue: "44" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
dbt/include/global_project/macros/materializations/tests/unit.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
{%- materialization unit, default -%} | ||
|
||
{% set relations = [] %} | ||
|
||
{% set expected_rows = config.get('expected_rows') %} | ||
{% set tested_expected_column_names = expected_rows[0].keys() if (expected_rows | length ) > 0 else get_columns_in_query(sql) %} %} | ||
|
||
{%- set target_relation = this.incorporate(type='table') -%} | ||
{%- set temp_relation = make_temp_relation(target_relation)-%} | ||
{% do run_query(get_create_table_as_sql(True, temp_relation, get_empty_subquery_sql(sql))) %} | ||
{%- set columns_in_relation = adapter.get_columns_in_relation(temp_relation) -%} | ||
{%- set column_name_to_data_types = {} -%} | ||
{%- for column in columns_in_relation -%} | ||
{%- do column_name_to_data_types.update({column.name: column.dtype}) -%} | ||
{%- endfor -%} | ||
|
||
{% set unit_test_sql = get_unit_test_sql(sql, get_expected_sql(expected_rows, column_name_to_data_types), tested_expected_column_names) %} | ||
|
||
{% call statement('main', fetch_result=True) -%} | ||
|
||
{{ unit_test_sql }} | ||
|
||
{%- endcall %} | ||
|
||
{% do adapter.drop_relation(temp_relation) %} | ||
|
||
{{ return({'relations': relations}) }} | ||
|
||
{%- endmaterialization -%} |
76 changes: 76 additions & 0 deletions
76
dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
{% macro get_fixture_sql(rows, column_name_to_data_types) %} | ||
-- Fixture for {{ model.name }} | ||
{% set default_row = {} %} | ||
|
||
{%- if not column_name_to_data_types -%} | ||
{%- set columns_in_relation = adapter.get_columns_in_relation(this) -%} | ||
{%- set column_name_to_data_types = {} -%} | ||
{%- for column in columns_in_relation -%} | ||
{%- do column_name_to_data_types.update({column.name: column.dtype}) -%} | ||
{%- endfor -%} | ||
{%- endif -%} | ||
|
||
{%- if not column_name_to_data_types -%} | ||
{{ exceptions.raise_compiler_error("Not able to get columns for unit test '" ~ model.name ~ "' from relation " ~ this) }} | ||
{%- endif -%} | ||
|
||
{%- for column_name, column_type in column_name_to_data_types.items() -%} | ||
{%- do default_row.update({column_name: (safe_cast("null", column_type) | trim )}) -%} | ||
{%- endfor -%} | ||
|
||
{%- for row in rows -%} | ||
{%- do format_row(row, column_name_to_data_types) -%} | ||
{%- set default_row_copy = default_row.copy() -%} | ||
{%- do default_row_copy.update(row) -%} | ||
select | ||
{%- for column_name, column_value in default_row_copy.items() %} {{ column_value }} AS {{ column_name }}{% if not loop.last -%}, {%- endif %} | ||
{%- endfor %} | ||
{%- if not loop.last %} | ||
union all | ||
{% endif %} | ||
{%- endfor -%} | ||
|
||
{%- if (rows | length) == 0 -%} | ||
select | ||
{%- for column_name, column_value in default_row.items() %} {{ column_value }} AS {{ column_name }}{% if not loop.last -%},{%- endif %} | ||
{%- endfor %} | ||
limit 0 | ||
{%- endif -%} | ||
{% endmacro %} | ||
|
||
|
||
{% macro get_expected_sql(rows, column_name_to_data_types) %} | ||
|
||
{%- if (rows | length) == 0 -%} | ||
select * FROM dbt_internal_unit_test_actual | ||
limit 0 | ||
{%- else -%} | ||
{%- for row in rows -%} | ||
{%- do format_row(row, column_name_to_data_types) -%} | ||
select | ||
{%- for column_name, column_value in row.items() %} {{ column_value }} AS {{ column_name }}{% if not loop.last -%}, {%- endif %} | ||
{%- endfor %} | ||
{%- if not loop.last %} | ||
union all | ||
{% endif %} | ||
{%- endfor -%} | ||
{%- endif -%} | ||
|
||
{% endmacro %} | ||
|
||
{%- macro format_row(row, column_name_to_data_types) -%} | ||
|
||
{#-- wrap yaml strings in quotes, apply cast --#} | ||
{%- for column_name, column_value in row.items() -%} | ||
{% set row_update = {column_name: column_value} %} | ||
{%- if column_value is string -%} | ||
{%- set row_update = {column_name: safe_cast(dbt.string_literal(column_value), column_name_to_data_types[column_name]) } -%} | ||
{%- elif column_value is none -%} | ||
{%- set row_update = {column_name: safe_cast('null', column_name_to_data_types[column_name]) } -%} | ||
{%- else -%} | ||
{%- set row_update = {column_name: safe_cast(column_value, column_name_to_data_types[column_name]) } -%} | ||
{%- endif -%} | ||
{%- do row.update(row_update) -%} | ||
{%- endfor -%} | ||
|
||
{%- endmacro -%} |
Empty file.
Oops, something went wrong.