diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents.sql b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents.sql new file mode 100644 index 00000000..07398f2b --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents.sql @@ -0,0 +1,40 @@ +-- This was automatically generated by the `dbt-data-privacy` package. +{{ + config( + materialized="view", + database=var('data_analysis_layer'), + schema="dbt_data_privacy_data_analysis_layer", + alias="consents", + grant_access_to=[ + { + "project": var('restricted_layer'), + "dataset": "dbt_data_privacy_restricted_layer", + }, + ], + tags=['data_analysis', 'dbt_data_privacy'], + labels={ + "modeled_by": "dbt", + }, + persist_docs={'relation': True, 'columns': True}, + full_refresh=None, + enabled=True + ) +}} + +WITH privacy_protected_model AS ( + SELECT + SHA256(CAST(user_id AS STRING)) AS `user_id`, + STRUCT( + consent.data_analysis AS `data_analysis`, + SHA256(CAST(consent.data_sharing AS STRING)) AS `data_sharing` + ) AS `consent`, + ARRAY(SELECT SHA256(CAST(e AS STRING)) FROM UNNEST(dummy_array) AS e) AS `dummy_array`, + FROM + {{ ref('restricted_layer__dbt_data_privacy_restricted_layer__consents') }} AS __original_table + WHERE + consent.data_analysis IS TRUE +) + +SELECT + __source.*, +FROM privacy_protected_model AS __source diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/schema.yml b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/schema.yml new file mode 100644 index 00000000..53520bed --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/consents/schema.yml @@ -0,0 +1,46 @@ +--- +# This was automatically generated by the `dbt-data-privacy` package. +version: 2 + +models: + - name: data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents + description: |- + This is the truth of single source of consent agreements. + + ## NOTE + - XXX + - XXX + + tags: ['data_analysis', 'dbt_data_privacy'] + meta: + modeled_by: dbt + tests: + # The test enables us to show the schema YAML file to delete before re-generating the file. + # A schema YAML file doesn't appear by `dbt ls --output path`, when it contains no tests. + - dbt_data_privacy.dummy_test + columns: + - name: consent.data_analysis + description: |- + Consent agree of data analysis + meta: + data_privacy: + level: internal + - name: consent.data_sharing + description: |- + Consent agree of data sharing + meta: + data_privacy: + level: internal + - name: dummy_array + description: |- + Test array + meta: + data_privacy: + level: internal + - name: user_id + description: |- + User ID + meta: + data_privacy: + level: internal + diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/data_analysis_layer__dbt_data_privacy_data_analysis_layer__items.sql b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/data_analysis_layer__dbt_data_privacy_data_analysis_layer__items.sql new file mode 100644 index 00000000..5ed78688 --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/data_analysis_layer__dbt_data_privacy_data_analysis_layer__items.sql @@ -0,0 +1,34 @@ +-- This was automatically generated by the `dbt-data-privacy` package. +{{ + config( + materialized="view", + database=var('data_analysis_layer'), + schema="dbt_data_privacy_data_analysis_layer", + alias="items", + grant_access_to=[ + { + "project": var('restricted_layer'), + "dataset": "dbt_data_privacy_restricted_layer", + }, + ], + tags=['data_analysis', 'dbt_data_privacy'], + labels={ + "modeled_by": "dbt", + }, + persist_docs={'relation': True, 'columns': True}, + full_refresh=None, + enabled=True + ) +}} + +WITH privacy_protected_model AS ( + SELECT + id AS `id`, + name AS `name`, + FROM + {{ ref('restricted_layer__dbt_data_privacy_restricted_layer__items') }} AS __original_table +) + +SELECT + __source.*, +FROM privacy_protected_model AS __source diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/schema.yml b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/schema.yml new file mode 100644 index 00000000..b162b231 --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/items/schema.yml @@ -0,0 +1,34 @@ +--- +# This was automatically generated by the `dbt-data-privacy` package. +version: 2 + +models: + - name: data_analysis_layer__dbt_data_privacy_data_analysis_layer__items + description: |- + Items' table + + ## NOTE + - XXX + - XXX + + tags: ['data_analysis', 'dbt_data_privacy'] + meta: + modeled_by: dbt + tests: + # The test enables us to show the schema YAML file to delete before re-generating the file. + # A schema YAML file doesn't appear by `dbt ls --output path`, when it contains no tests. + - dbt_data_privacy.dummy_test + columns: + - name: id + description: |- + Item ID + meta: + data_privacy: + level: public + - name: name + description: |- + Item name + meta: + data_privacy: + level: public + diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/data_analysis_layer__dbt_data_privacy_data_analysis_layer__orders.sql b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/data_analysis_layer__dbt_data_privacy_data_analysis_layer__orders.sql new file mode 100644 index 00000000..3c8a688c --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/data_analysis_layer__dbt_data_privacy_data_analysis_layer__orders.sql @@ -0,0 +1,48 @@ +-- This was automatically generated by the `dbt-data-privacy` package. +{{ + config( + materialized="view", + database=var('data_analysis_layer'), + schema="dbt_data_privacy_data_analysis_layer", + alias="orders", + grant_access_to=[ + { + "project": var('restricted_layer'), + "dataset": "dbt_data_privacy_restricted_layer", + }, + ], + partition_by={ + "field": "created_at", + "data_type": "timestamp", + "granularity": "day", + }, + cluster_by=['id'], + tags=['data_analysis', 'dbt_data_privacy'], + labels={ + "modeled_by": "dbt", + }, + persist_docs={'relation': True, 'columns': True}, + full_refresh=None, + enabled=True + ) +}} + +WITH privacy_protected_model AS ( + SELECT + id AS `id`, + SHA256(CAST(user_id AS STRING)) AS `user_id`, + item_id AS `item_id`, + created_at AS `created_at`, + FROM + {{ ref('restricted_layer__dbt_data_privacy_restricted_layer__orders') }} AS __original_table +) +, __relationships_0 AS ( + SELECT * + FROM {{ ref("data_analysis_layer__dbt_data_privacy_data_analysis_layer__users") }} AS __relationships_0 +) + +SELECT + __source.*, +FROM privacy_protected_model AS __source +JOIN __relationships_0 + ON __source.user_id = __relationships_0.user_id diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/schema.yml b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/schema.yml new file mode 100644 index 00000000..980769db --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/orders/schema.yml @@ -0,0 +1,48 @@ +--- +# This was automatically generated by the `dbt-data-privacy` package. +version: 2 + +models: + - name: data_analysis_layer__dbt_data_privacy_data_analysis_layer__orders + description: |- + Orders' table + + ## NOTE + - XXX + - XXX + + tags: ['data_analysis', 'dbt_data_privacy'] + meta: + modeled_by: dbt + tests: + # The test enables us to show the schema YAML file to delete before re-generating the file. + # A schema YAML file doesn't appear by `dbt ls --output path`, when it contains no tests. + - dbt_data_privacy.dummy_test + columns: + - name: created_at + description: |- + Order timestamp + meta: + data_privacy: + level: internal + - name: id + description: |- + Order ID + meta: + data_privacy: + level: internal + - name: item_id + description: |- + Item ID + meta: + data_privacy: + level: public + - name: user_id + description: |- + User ID + meta: + data_privacy: + level: internal + tests: + - {'relationships': {'to': 'ref("data_analysis_layer__dbt_data_privacy_data_analysis_layer__users")', 'field': 'user_id'}} + diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/data_analysis_layer__dbt_data_privacy_data_analysis_layer__users.sql b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/data_analysis_layer__dbt_data_privacy_data_analysis_layer__users.sql new file mode 100644 index 00000000..ada6cef9 --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/data_analysis_layer__dbt_data_privacy_data_analysis_layer__users.sql @@ -0,0 +1,43 @@ +-- This was automatically generated by the `dbt-data-privacy` package. +{{ + config( + materialized="view", + database=var('data_analysis_layer'), + schema="dbt_data_privacy_data_analysis_layer", + alias="users", + grant_access_to=[ + { + "project": var('restricted_layer'), + "dataset": "dbt_data_privacy_restricted_layer", + }, + ], + tags=['data_analysis', 'dbt_data_privacy'], + labels={ + "modeled_by": "dbt", + }, + persist_docs={'relation': True, 'columns': True}, + full_refresh=None, + enabled=True + ) +}} + +WITH privacy_protected_model AS ( + SELECT + id AS `id`, + SHA256(CAST(user_id AS STRING)) AS `user_id`, + SHA256(CAST(age AS STRING)) AS `age`, + FROM + {{ ref('restricted_layer__dbt_data_privacy_restricted_layer__users') }} AS __original_table +) +, __relationships_0 AS ( + SELECT * + FROM {{ ref("data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents") }} AS __relationships_0 + WHERE + consent.data_analysis IS TRUE +) + +SELECT + __source.*, +FROM privacy_protected_model AS __source +JOIN __relationships_0 + ON __source.user_id = __relationships_0.user_id diff --git a/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/schema.yml b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/schema.yml new file mode 100644 index 00000000..490c3448 --- /dev/null +++ b/integration_tests/models/data_analysis_layer/dbt_data_privacy_data_analysis_layer/users/schema.yml @@ -0,0 +1,42 @@ +--- +# This was automatically generated by the `dbt-data-privacy` package. +version: 2 + +models: + - name: data_analysis_layer__dbt_data_privacy_data_analysis_layer__users + description: |- + Users' table + + ## NOTE + - XXX + - XXX + + tags: ['data_analysis', 'dbt_data_privacy'] + meta: + modeled_by: dbt + tests: + # The test enables us to show the schema YAML file to delete before re-generating the file. + # A schema YAML file doesn't appear by `dbt ls --output path`, when it contains no tests. + - dbt_data_privacy.dummy_test + columns: + - name: age + description: |- + Age + meta: + data_privacy: + level: internal + - name: id + description: |- + Raw number + meta: + data_privacy: + level: internal + - name: user_id + description: |- + User ID + meta: + data_privacy: + level: internal + tests: + - {'relationships': {'to': 'ref("data_analysis_layer__dbt_data_privacy_data_analysis_layer__consents")', 'field': 'user_id'}} +