Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
**/venv/
**/test.env
integration_tests/vars.env
dbt_internal_packages/
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@ sources:
data_type: varchar(64)
tests: &equal-to-the-people
- dbt_external_tables_integration_tests.tsql_equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

# TODO: JSON IS NOT SUPPORTED BY SYNAPSE ATM

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ sources:
data_type: string
tests: &equal-to-the-people
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_csv_partitioned
external:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ sources:
data_type: varchar(64)
tests: &equal-to-the-people
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_csv_partitioned
external:
Expand Down
80 changes: 45 additions & 35 deletions integration_tests/models/plugins/snowflake/snowflake_external.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@ sources:
data_type: varchar(64)
tests: &equal-to-the-people
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_csv_partitioned
external:
Expand Down Expand Up @@ -77,7 +78,8 @@ sources:
external: *csv-people
tests: &same-rowcount
- dbt_utils.equal_rowcount:
compare_model: ref('people')
arguments:
compare_model: ref('people')

- name: people_csv_partitioned_no_columns
external:
Expand Down Expand Up @@ -163,16 +165,19 @@ sources:
- name: last_name
data_type: varchar(64)
- name: email
alias: email_alias
data_type: varchar(64)
config:
meta:
alias: email_alias
tests:
- dbt_utils.equality:
compare_model: ref('people_alias')
compare_columns:
- id
- first_name
- last_name
- email_alias
arguments:
compare_model: ref('people_alias')
compare_columns:
- id
- first_name
- last_name
- email_alias

# test for column expression
- name: people_json_expression
Expand All @@ -188,18 +193,21 @@ sources:
data_type: varchar(64)
- name: email_domain
data_type: varchar(64)
alias: EMAIL_DOMAIN
quote: true
expression: split_part(value:email::VARCHAR, '@', 2)
config:
meta:
alias: EMAIL_DOMAIN
expression: split_part(value:email::VARCHAR, '@', 2)
tests:
- dbt_utils.equality:
compare_model: ref('people_expression')
compare_columns:
- id
- first_name
- last_name
- email
- email_domain
arguments:
compare_model: ref('people_expression')
compare_columns:
- id
- first_name
- last_name
- email
- email_domain


- name: people_parquet_infer_schema_ignore_case_unpartitioned
Expand All @@ -210,12 +218,13 @@ sources:
ignore_case: true
tests:
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_parquet_column_list_ignore_case_partitioned
external:
Expand All @@ -226,12 +235,13 @@ sources:
columns: *cols-of-the-people
tests:
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
# temporarily disabled until we can properly address Iceberg tables
# - name: people_iceberg_no_optional_configs
# external: &iceberg-people
Expand Down
13 changes: 7 additions & 6 deletions integration_tests/models/plugins/spark/spark_external.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@ sources:
data_type: string
tests: &equal-to-the-people
- dbt_utils.equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_csv_partitioned_using
external:
Expand Down
13 changes: 7 additions & 6 deletions integration_tests/models/plugins/synapse/synapse_external.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,13 @@ sources:
data_type: varchar(64)
tests: &equal-to-the-people
- dbt_external_tables_integration_tests.tsql_equality:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email
arguments:
compare_model: ref('people')
compare_columns:
- id
- first_name
- last_name
- email

- name: people_csv_partitioned
external:
Expand Down
8 changes: 5 additions & 3 deletions integration_tests/package-lock.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
packages:
- local: ../
- package: dbt-labs/dbt_utils
version: 1.3.0
- local: ../
name: dbt_external_tables
- package: dbt-labs/dbt_utils
name: dbt_utils
version: 1.3.0
sha1_hash: d412a8f2761befedebc730e6d5197956aec4fc9b
12 changes: 6 additions & 6 deletions macros/plugins/snowflake/create_external_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@
{%- for column in columns %}
{%- set column_quoted = adapter.quote(column.name) if column.quote else column.name %}
{%- set column_alias -%}
{%- if 'alias' in column and column.quote -%}
{{adapter.quote(column.alias)}}
{%- elif 'alias' in column -%}
{{column.alias}}
{%- if 'alias' in column.config.meta and column.quote -%}
{{adapter.quote(column.meta.alias)}}
{%- elif 'alias' in column.config.meta -%}
{{column.meta.alias}}
{%- else -%}
{{column_quoted}}
{%- endif -%}
{%- endset %}
{%- set col_expression -%}
{%- if column.expression -%}
{{column.expression}}
{%- if column.meta.expression -%}
{{column.meta.expression}}
{%- else -%}
{%- if ignore_case -%}
{%- set col_id = 'value:c' ~ loop.index if is_csv else 'GET_IGNORE_CASE($1, ' ~ "'"~ column_quoted ~"'"~ ')' -%}
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"dbt-adapters>=1.16.7",
"dbt-bigquery>=1.9.0",
"dbt-core>=1.9.1",
"dbt-redshift>=1.9.0",
Expand Down
Loading
Loading