Compare commits
12 Commits
add-social
...
master
Author | SHA1 | Date |
---|---|---|
Ubuntu | 4b86cd5551 | |
Ubuntu | c5c4d4cfcc | |
Ubuntu | 25bf52e4c0 | |
Ubuntu | a27c99cf15 | |
Ubuntu | f6af10b64d | |
Ubuntu | c92bdc7cb4 | |
Ubuntu | 9b3f73cec2 | |
Ubuntu | a2286f7773 | |
Ubuntu | eef556e75c | |
Ubuntu | e305bb2baa | |
Ubuntu | 947967b851 | |
Ubuntu | a3b4501fa9 |
2
Makefile
2
Makefile
|
@ -6,5 +6,5 @@ push:
|
||||||
run:
|
run:
|
||||||
dbt deps --profiles-dir=. --project-dir=.
|
dbt deps --profiles-dir=. --project-dir=.
|
||||||
#dbt run --profiles-dir=. --project-dir=. --full-refresh
|
#dbt run --profiles-dir=. --project-dir=. --full-refresh
|
||||||
dbt run --profiles-dir=. --project-dir=. --full-refresh --select tracking_product_shares
|
dbt run --profiles-dir=. --project-dir=. --full-refresh --select user_give_gift
|
||||||
|
|
||||||
|
|
232
dbt_project.yml
232
dbt_project.yml
|
@ -1,45 +1,29 @@
|
||||||
# This file is necessary to install dbt-utils with dbt deps
|
name: airbyte_utils
|
||||||
# the content will be overwritten by the transform function
|
version: '1.0'
|
||||||
|
|
||||||
# Name your package! Package names should contain only lowercase characters
|
|
||||||
# and underscores. A good package name should reflect your organization's
|
|
||||||
# name or the intended use of these models
|
|
||||||
name: "airbyte_utils"
|
|
||||||
version: "1.0"
|
|
||||||
config-version: 2
|
config-version: 2
|
||||||
|
profile: normalize
|
||||||
# This setting configures which "profile" dbt uses for this project. Profiles contain
|
model-paths:
|
||||||
# database connection information, and should be configured in the ~/.dbt/profiles.yml file
|
- models
|
||||||
profile: "normalize"
|
docs-paths:
|
||||||
|
- docs
|
||||||
# These configurations specify where dbt should look for different types of files.
|
analysis-paths:
|
||||||
# The `model-paths` config, for example, states that source models can be found
|
- analysis
|
||||||
# in the "models/" directory. You probably won't need to change these!
|
test-paths:
|
||||||
model-paths: ["models"]
|
- tests
|
||||||
docs-paths: ["docs"]
|
seed-paths:
|
||||||
analysis-paths: ["analysis"]
|
- data
|
||||||
test-paths: ["tests"]
|
macro-paths:
|
||||||
seed-paths: ["data"]
|
- macros
|
||||||
macro-paths: ["macros"]
|
target-path: ../build
|
||||||
|
log-path: ../logs
|
||||||
target-path: "../build" # directory which will store compiled SQL files
|
packages-install-path: ../dbt
|
||||||
log-path: "../logs" # directory which will store DBT logs
|
clean-targets:
|
||||||
packages-install-path: "../dbt" # directory which will store external DBT dependencies
|
- build
|
||||||
|
- dbt_modules
|
||||||
clean-targets: # directories to be removed by `dbt clean`
|
|
||||||
- "build"
|
|
||||||
- "dbt_modules"
|
|
||||||
|
|
||||||
quoting:
|
quoting:
|
||||||
database: true
|
database: true
|
||||||
# Temporarily disabling the behavior of the ExtendedNameTransformer on table/schema names, see (issue #1785)
|
|
||||||
# all schemas should be unquoted
|
|
||||||
schema: false
|
schema: false
|
||||||
identifier: true
|
identifier: true
|
||||||
|
|
||||||
# You can define configurations for models in the `model-paths` directory here.
|
|
||||||
# Using these configurations, you can enable or disable models, change how they
|
|
||||||
# are materialized, and more!
|
|
||||||
models:
|
models:
|
||||||
airbyte_utils:
|
airbyte_utils:
|
||||||
+materialized: table
|
+materialized: table
|
||||||
|
@ -57,7 +41,175 @@ models:
|
||||||
airbyte_views:
|
airbyte_views:
|
||||||
+tags: airbyte_internal_views
|
+tags: airbyte_internal_views
|
||||||
+materialized: view
|
+materialized: view
|
||||||
|
|
||||||
dispatch:
|
dispatch:
|
||||||
- macro_namespace: dbt_utils
|
- macro_namespace: dbt_utils
|
||||||
search_order: ["airbyte_utils", "dbt_utils"]
|
search_order:
|
||||||
|
- airbyte_utils
|
||||||
|
- dbt_utils
|
||||||
|
vars:
|
||||||
|
json_column: _airbyte_data
|
||||||
|
models_to_source:
|
||||||
|
admin_tags_ab1: unibag._airbyte_raw_admin_tags
|
||||||
|
admin_tags_ab2: unibag._airbyte_raw_admin_tags
|
||||||
|
admin_tags_ab3: unibag._airbyte_raw_admin_tags
|
||||||
|
admin_tags: unibag._airbyte_raw_admin_tags
|
||||||
|
brands_ab1: unibag._airbyte_raw_brands
|
||||||
|
brands_ab2: unibag._airbyte_raw_brands
|
||||||
|
brands_ab3: unibag._airbyte_raw_brands
|
||||||
|
brands: unibag._airbyte_raw_brands
|
||||||
|
cash_flows_ab1: unibag._airbyte_raw_cash_flows
|
||||||
|
cash_flows_ab2: unibag._airbyte_raw_cash_flows
|
||||||
|
cash_flows_ab3: unibag._airbyte_raw_cash_flows
|
||||||
|
cash_flows: unibag._airbyte_raw_cash_flows
|
||||||
|
cities_ab1: unibag._airbyte_raw_cities
|
||||||
|
cities_ab2: unibag._airbyte_raw_cities
|
||||||
|
cities_ab3: unibag._airbyte_raw_cities
|
||||||
|
cities: unibag._airbyte_raw_cities
|
||||||
|
customers_ab1: unibag._airbyte_raw_customers
|
||||||
|
customers_ab2: unibag._airbyte_raw_customers
|
||||||
|
customers_ab3: unibag._airbyte_raw_customers
|
||||||
|
customers: unibag._airbyte_raw_customers
|
||||||
|
districts_ab1: unibag._airbyte_raw_districts
|
||||||
|
districts_ab2: unibag._airbyte_raw_districts
|
||||||
|
districts_ab3: unibag._airbyte_raw_districts
|
||||||
|
districts: unibag._airbyte_raw_districts
|
||||||
|
event_rewards_ab1: unibag._airbyte_raw_event_rewards
|
||||||
|
event_rewards_ab2: unibag._airbyte_raw_event_rewards
|
||||||
|
event_rewards_ab3: unibag._airbyte_raw_event_rewards
|
||||||
|
event_rewards: unibag._airbyte_raw_event_rewards
|
||||||
|
events_ab1: unibag._airbyte_raw_events
|
||||||
|
events_ab2: unibag._airbyte_raw_events
|
||||||
|
events_ab3: unibag._airbyte_raw_events
|
||||||
|
events: unibag._airbyte_raw_events
|
||||||
|
give_gifts_ab1: unibag._airbyte_raw_give_gifts
|
||||||
|
give_gifts_ab2: unibag._airbyte_raw_give_gifts
|
||||||
|
give_gifts_ab3: unibag._airbyte_raw_give_gifts
|
||||||
|
give_gifts: unibag._airbyte_raw_give_gifts
|
||||||
|
inventories_ab1: unibag._airbyte_raw_inventories
|
||||||
|
inventories_ab2: unibag._airbyte_raw_inventories
|
||||||
|
inventories_ab3: unibag._airbyte_raw_inventories
|
||||||
|
inventories: unibag._airbyte_raw_inventories
|
||||||
|
membership_ab1: unibag._airbyte_raw_membership
|
||||||
|
membership_ab2: unibag._airbyte_raw_membership
|
||||||
|
membership_ab3: unibag._airbyte_raw_membership
|
||||||
|
membership: unibag._airbyte_raw_membership
|
||||||
|
membership_histories_ab1: unibag._airbyte_raw_membership_histories
|
||||||
|
membership_histories_ab2: unibag._airbyte_raw_membership_histories
|
||||||
|
membership_histories_ab3: unibag._airbyte_raw_membership_histories
|
||||||
|
membership_histories: unibag._airbyte_raw_membership_histories
|
||||||
|
membership_orders_ab1: unibag._airbyte_raw_membership_orders
|
||||||
|
membership_orders_ab2: unibag._airbyte_raw_membership_orders
|
||||||
|
membership_orders_ab3: unibag._airbyte_raw_membership_orders
|
||||||
|
membership_orders: unibag._airbyte_raw_membership_orders
|
||||||
|
order_deliveries_ab1: unibag._airbyte_raw_order_deliveries
|
||||||
|
order_deliveries_ab2: unibag._airbyte_raw_order_deliveries
|
||||||
|
order_deliveries_ab3: unibag._airbyte_raw_order_deliveries
|
||||||
|
order_deliveries: unibag._airbyte_raw_order_deliveries
|
||||||
|
order_histories_ab1: unibag._airbyte_raw_order_histories
|
||||||
|
order_histories_ab2: unibag._airbyte_raw_order_histories
|
||||||
|
order_histories_ab3: unibag._airbyte_raw_order_histories
|
||||||
|
order_histories: unibag._airbyte_raw_order_histories
|
||||||
|
order_items_ab1: unibag._airbyte_raw_order_items
|
||||||
|
order_items_ab2: unibag._airbyte_raw_order_items
|
||||||
|
order_items_ab3: unibag._airbyte_raw_order_items
|
||||||
|
order_items: unibag._airbyte_raw_order_items
|
||||||
|
orders_ab1: unibag._airbyte_raw_orders
|
||||||
|
orders_ab2: unibag._airbyte_raw_orders
|
||||||
|
orders_ab3: unibag._airbyte_raw_orders
|
||||||
|
orders: unibag._airbyte_raw_orders
|
||||||
|
product_categories_ab1: unibag._airbyte_raw_product_categories
|
||||||
|
product_categories_ab2: unibag._airbyte_raw_product_categories
|
||||||
|
product_categories_ab3: unibag._airbyte_raw_product_categories
|
||||||
|
product_categories: unibag._airbyte_raw_product_categories
|
||||||
|
product_sku_ab1: unibag._airbyte_raw_product_sku
|
||||||
|
product_sku_ab2: unibag._airbyte_raw_product_sku
|
||||||
|
product_sku_ab3: unibag._airbyte_raw_product_sku
|
||||||
|
product_sku: unibag._airbyte_raw_product_sku
|
||||||
|
product_sku_versions_ab1: unibag._airbyte_raw_product_sku_versions
|
||||||
|
product_sku_versions_ab2: unibag._airbyte_raw_product_sku_versions
|
||||||
|
product_sku_versions_ab3: unibag._airbyte_raw_product_sku_versions
|
||||||
|
product_sku_versions: unibag._airbyte_raw_product_sku_versions
|
||||||
|
product_sub_categories_ab1: unibag._airbyte_raw_product_sub_categories
|
||||||
|
product_sub_categories_ab2: unibag._airbyte_raw_product_sub_categories
|
||||||
|
product_sub_categories_ab3: unibag._airbyte_raw_product_sub_categories
|
||||||
|
product_sub_categories: unibag._airbyte_raw_product_sub_categories
|
||||||
|
products_ab1: unibag._airbyte_raw_products
|
||||||
|
products_ab2: unibag._airbyte_raw_products
|
||||||
|
products_ab3: unibag._airbyte_raw_products
|
||||||
|
products: unibag._airbyte_raw_products
|
||||||
|
promotion_orders_ab1: unibag._airbyte_raw_promotion_orders
|
||||||
|
promotion_orders_ab2: unibag._airbyte_raw_promotion_orders
|
||||||
|
promotion_orders_ab3: unibag._airbyte_raw_promotion_orders
|
||||||
|
promotion_orders: unibag._airbyte_raw_promotion_orders
|
||||||
|
promotions_ab1: unibag._airbyte_raw_promotions
|
||||||
|
promotions_ab2: unibag._airbyte_raw_promotions
|
||||||
|
promotions_ab3: unibag._airbyte_raw_promotions
|
||||||
|
promotions: unibag._airbyte_raw_promotions
|
||||||
|
referrals_ab1: unibag._airbyte_raw_referrals
|
||||||
|
referrals_ab2: unibag._airbyte_raw_referrals
|
||||||
|
referrals_ab3: unibag._airbyte_raw_referrals
|
||||||
|
referrals: unibag._airbyte_raw_referrals
|
||||||
|
session_deliveries_ab1: unibag._airbyte_raw_session_deliveries
|
||||||
|
session_deliveries_ab2: unibag._airbyte_raw_session_deliveries
|
||||||
|
session_deliveries_ab3: unibag._airbyte_raw_session_deliveries
|
||||||
|
session_deliveries: unibag._airbyte_raw_session_deliveries
|
||||||
|
social_post_views_ab1: unibag._airbyte_raw_social_post_views
|
||||||
|
social_post_views_ab2: unibag._airbyte_raw_social_post_views
|
||||||
|
social_post_views_ab3: unibag._airbyte_raw_social_post_views
|
||||||
|
social_post_views: unibag._airbyte_raw_social_post_views
|
||||||
|
social_posts_ab1: unibag._airbyte_raw_social_posts
|
||||||
|
social_posts_ab2: unibag._airbyte_raw_social_posts
|
||||||
|
social_posts_ab3: unibag._airbyte_raw_social_posts
|
||||||
|
social_posts: unibag._airbyte_raw_social_posts
|
||||||
|
suppliers_ab1: unibag._airbyte_raw_suppliers
|
||||||
|
suppliers_ab2: unibag._airbyte_raw_suppliers
|
||||||
|
suppliers_ab3: unibag._airbyte_raw_suppliers
|
||||||
|
suppliers: unibag._airbyte_raw_suppliers
|
||||||
|
team_activities_ab1: unibag._airbyte_raw_team_activities
|
||||||
|
team_activities_ab2: unibag._airbyte_raw_team_activities
|
||||||
|
team_activities_ab3: unibag._airbyte_raw_team_activities
|
||||||
|
team_activities: unibag._airbyte_raw_team_activities
|
||||||
|
team_bonus_ab1: unibag._airbyte_raw_team_bonus
|
||||||
|
team_bonus_ab2: unibag._airbyte_raw_team_bonus
|
||||||
|
team_bonus_ab3: unibag._airbyte_raw_team_bonus
|
||||||
|
team_bonus: unibag._airbyte_raw_team_bonus
|
||||||
|
team_histories_ab1: unibag._airbyte_raw_team_histories
|
||||||
|
team_histories_ab2: unibag._airbyte_raw_team_histories
|
||||||
|
team_histories_ab3: unibag._airbyte_raw_team_histories
|
||||||
|
team_histories: unibag._airbyte_raw_team_histories
|
||||||
|
team_members_ab1: unibag._airbyte_raw_team_members
|
||||||
|
team_members_ab2: unibag._airbyte_raw_team_members
|
||||||
|
team_members_ab3: unibag._airbyte_raw_team_members
|
||||||
|
team_members: unibag._airbyte_raw_team_members
|
||||||
|
teams_ab1: unibag._airbyte_raw_teams
|
||||||
|
teams_ab2: unibag._airbyte_raw_teams
|
||||||
|
teams_ab3: unibag._airbyte_raw_teams
|
||||||
|
teams: unibag._airbyte_raw_teams
|
||||||
|
user_courses_ab1: unibag._airbyte_raw_user_courses
|
||||||
|
user_courses_ab2: unibag._airbyte_raw_user_courses
|
||||||
|
user_courses_ab3: unibag._airbyte_raw_user_courses
|
||||||
|
user_courses: unibag._airbyte_raw_user_courses
|
||||||
|
user_give_gift_ab1: unibag._airbyte_raw_user_give_gift
|
||||||
|
user_give_gift_ab2: unibag._airbyte_raw_user_give_gift
|
||||||
|
user_give_gift_ab3: unibag._airbyte_raw_user_give_gift
|
||||||
|
user_give_gift: unibag._airbyte_raw_user_give_gift
|
||||||
|
user_identifications_ab1: unibag._airbyte_raw_user_identifications
|
||||||
|
user_identifications_ab2: unibag._airbyte_raw_user_identifications
|
||||||
|
user_identifications_ab3: unibag._airbyte_raw_user_identifications
|
||||||
|
user_identifications: unibag._airbyte_raw_user_identifications
|
||||||
|
users_ab1: unibag._airbyte_raw_users
|
||||||
|
users_ab2: unibag._airbyte_raw_users
|
||||||
|
users_ab3: unibag._airbyte_raw_users
|
||||||
|
users: unibag._airbyte_raw_users
|
||||||
|
voucher_bonus_ab1: unibag._airbyte_raw_voucher_bonus
|
||||||
|
voucher_bonus_ab2: unibag._airbyte_raw_voucher_bonus
|
||||||
|
voucher_bonus_ab3: unibag._airbyte_raw_voucher_bonus
|
||||||
|
voucher_bonus: unibag._airbyte_raw_voucher_bonus
|
||||||
|
vouchers_ab1: unibag._airbyte_raw_vouchers
|
||||||
|
vouchers_ab2: unibag._airbyte_raw_vouchers
|
||||||
|
vouchers_ab3: unibag._airbyte_raw_vouchers
|
||||||
|
vouchers: unibag._airbyte_raw_vouchers
|
||||||
|
wards_ab1: unibag._airbyte_raw_wards
|
||||||
|
wards_ab2: unibag._airbyte_raw_wards
|
||||||
|
wards_ab3: unibag._airbyte_raw_wards
|
||||||
|
wards: unibag._airbyte_raw_wards
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,14 @@
|
||||||
|
{%- macro redshift_super_type() -%}
|
||||||
|
{%- if not execute -%}
|
||||||
|
{{ return("") }}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{%- set table_schema, _, table_name = var("models_to_source")[this.identifier].partition(".") -%}
|
||||||
|
|
||||||
|
{%- call statement("get_column_type", fetch_result=True) -%}
|
||||||
|
select data_type from SVV_COLUMNS where table_name = '{{ table_name }}' and column_name = '{{ var("json_column") }}' and table_schema = '{{ table_schema }}';
|
||||||
|
{%- endcall -%}
|
||||||
|
|
||||||
|
{%- set column_type = load_result("get_column_type")["data"][0][0] -%}
|
||||||
|
{{ return(column_type == "super") }}
|
||||||
|
{%- endmacro -%}
|
|
@ -104,8 +104,19 @@
|
||||||
|
|
||||||
{% macro default__unnest_cte(from_table, stream_name, column_col) -%}{%- endmacro %}
|
{% macro default__unnest_cte(from_table, stream_name, column_col) -%}{%- endmacro %}
|
||||||
|
|
||||||
{# -- based on https://blog.getdbt.com/how-to-unnest-arrays-in-redshift/ #}
|
|
||||||
{% macro redshift__unnest_cte(from_table, stream_name, column_col) -%}
|
{% macro redshift__unnest_cte(from_table, stream_name, column_col) -%}
|
||||||
|
|
||||||
|
{# -- based on https://docs.aws.amazon.com/redshift/latest/dg/query-super.html #}
|
||||||
|
{% if redshift_super_type() -%}
|
||||||
|
with joined as (
|
||||||
|
select
|
||||||
|
table_alias._airbyte_{{ stream_name }}_hashid as _airbyte_hashid,
|
||||||
|
_airbyte_nested_data
|
||||||
|
from {{ from_table }} as table_alias, table_alias.{{ column_col }} as _airbyte_nested_data
|
||||||
|
)
|
||||||
|
{%- else -%}
|
||||||
|
|
||||||
|
{# -- based on https://blog.getdbt.com/how-to-unnest-arrays-in-redshift/ #}
|
||||||
{%- if not execute -%}
|
{%- if not execute -%}
|
||||||
{{ return('') }}
|
{{ return('') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -134,6 +145,7 @@ joined as (
|
||||||
-- to the number of items in {{ from_table }}.{{ column_col }}
|
-- to the number of items in {{ from_table }}.{{ column_col }}
|
||||||
where numbers.generated_number <= json_array_length({{ column_col }}, true)
|
where numbers.generated_number <= json_array_length({{ column_col }}, true)
|
||||||
)
|
)
|
||||||
|
{%- endif %}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro mysql__unnest_cte(from_table, stream_name, column_col) -%}
|
{% macro mysql__unnest_cte(from_table, stream_name, column_col) -%}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% macro redshift__alter_column_type(relation, column_name, new_column_type) -%}
|
||||||
|
|
||||||
|
{%- set tmp_column = column_name + "__dbt_alter" -%}
|
||||||
|
|
||||||
|
{% call statement('alter_column_type') %}
|
||||||
|
alter table {{ relation }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};
|
||||||
|
{% if new_column_type.lower() == "super" %}
|
||||||
|
update {{ relation }} set {{ adapter.quote(tmp_column) }} = JSON_PARSE({{ adapter.quote(column_name) }});
|
||||||
|
{% else %}
|
||||||
|
update {{ relation }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};
|
||||||
|
{% endif %}
|
||||||
|
alter table {{ relation }} drop column {{ adapter.quote(column_name) }} cascade;
|
||||||
|
alter table {{ relation }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
|
{% endmacro %}
|
|
@ -9,7 +9,11 @@
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{%- macro redshift__type_json() -%}
|
{%- macro redshift__type_json() -%}
|
||||||
|
{%- if redshift_super_type() -%}
|
||||||
|
super
|
||||||
|
{%- else -%}
|
||||||
varchar
|
varchar
|
||||||
|
{%- endif -%}
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{% macro postgres__type_json() %}
|
{% macro postgres__type_json() %}
|
||||||
|
@ -29,7 +33,7 @@
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{%- macro sqlserver__type_json() -%}
|
{%- macro sqlserver__type_json() -%}
|
||||||
VARCHAR(max)
|
NVARCHAR(max)
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{% macro clickhouse__type_json() %}
|
{% macro clickhouse__type_json() %}
|
||||||
|
@ -48,7 +52,7 @@
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{% macro sqlserver__type_string() %}
|
{% macro sqlserver__type_string() %}
|
||||||
VARCHAR(max)
|
NVARCHAR(max)
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{%- macro clickhouse__type_string() -%}
|
{%- macro clickhouse__type_string() -%}
|
||||||
|
@ -150,7 +154,7 @@
|
||||||
{%- macro sqlserver__type_timestamp_with_timezone() -%}
|
{%- macro sqlserver__type_timestamp_with_timezone() -%}
|
||||||
{#-- in TSQL timestamp is really datetime or datetime2 --#}
|
{#-- in TSQL timestamp is really datetime or datetime2 --#}
|
||||||
{#-- https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15#DateandTimeDataTypes --#}
|
{#-- https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15#DateandTimeDataTypes --#}
|
||||||
datetime
|
datetime2
|
||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{% macro clickhouse__type_timestamp_with_timezone() %}
|
{% macro clickhouse__type_timestamp_with_timezone() %}
|
||||||
|
|
|
@ -43,11 +43,12 @@
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro redshift__format_json_path(json_path_list) -%}
|
{% macro redshift__format_json_path(json_path_list) -%}
|
||||||
|
{%- set quote = '"' if redshift_super_type() else "'" -%}
|
||||||
{%- set str_list = [] -%}
|
{%- set str_list = [] -%}
|
||||||
{%- for json_path in json_path_list -%}
|
{%- for json_path in json_path_list -%}
|
||||||
{%- if str_list.append(json_path.replace("'", "''")) -%} {%- endif -%}
|
{%- if str_list.append(json_path.replace(quote, quote + quote)) -%} {%- endif -%}
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
{{ "'" ~ str_list|join("','") ~ "'" }}
|
{{ quote ~ str_list|join(quote + "," + quote) ~ quote }}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro snowflake__format_json_path(json_path_list) -%}
|
{% macro snowflake__format_json_path(json_path_list) -%}
|
||||||
|
@ -114,11 +115,14 @@
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro redshift__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
|
{% macro redshift__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
|
||||||
{%- if from_table|string() == '' %}
|
{%- if from_table|string() != '' -%}
|
||||||
|
{%- set json_column = from_table|string() + "." + json_column|string() -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- if redshift_super_type() -%}
|
||||||
|
case when {{ json_column }}.{{ format_json_path(json_path_list) }} != '' then {{ json_column }}.{{ format_json_path(json_path_list) }} end
|
||||||
|
{%- else -%}
|
||||||
case when json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) != '' then json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) end
|
case when json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) != '' then json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) end
|
||||||
{% else %}
|
{%- endif -%}
|
||||||
case when json_extract_path_text({{ from_table }}.{{ json_column }}, {{ format_json_path(json_path_list) }}, true) != '' then json_extract_path_text({{ from_table }}.{{ json_column }}, {{ format_json_path(json_path_list) }}, true) end
|
|
||||||
{% endif -%}
|
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro snowflake__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
|
{% macro snowflake__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
|
||||||
|
@ -168,7 +172,11 @@
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro redshift__json_extract_scalar(json_column, json_path_list, normalized_json_path) -%}
|
{% macro redshift__json_extract_scalar(json_column, json_path_list, normalized_json_path) -%}
|
||||||
|
{%- if redshift_super_type() -%}
|
||||||
|
case when {{ json_column }}.{{ format_json_path(json_path_list) }} != '' then {{ json_column }}.{{ format_json_path(json_path_list) }} end
|
||||||
|
{%- else -%}
|
||||||
case when json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) != '' then json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) end
|
case when json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) != '' then json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true) end
|
||||||
|
{%- endif -%}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro snowflake__json_extract_scalar(json_column, json_path_list, normalized_json_path) -%}
|
{% macro snowflake__json_extract_scalar(json_column, json_path_list, normalized_json_path) -%}
|
||||||
|
@ -210,7 +218,11 @@
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro redshift__json_extract_array(json_column, json_path_list, normalized_json_path) -%}
|
{% macro redshift__json_extract_array(json_column, json_path_list, normalized_json_path) -%}
|
||||||
|
{%- if redshift_super_type() -%}
|
||||||
|
{{ json_column }}.{{ format_json_path(json_path_list) }}
|
||||||
|
{%- else -%}
|
||||||
json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true)
|
json_extract_path_text({{ json_column }}, {{ format_json_path(json_path_list) }}, true)
|
||||||
|
{%- endif -%}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{% macro snowflake__json_extract_array(json_column, json_path_list, normalized_json_path) -%}
|
{% macro snowflake__json_extract_array(json_column, json_path_list, normalized_json_path) -%}
|
||||||
|
|
|
@ -33,6 +33,31 @@
|
||||||
cast({{ array_column }} as {{dbt_utils.type_string()}})
|
cast({{ array_column }} as {{dbt_utils.type_string()}})
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro redshift__array_to_string(array_column) -%}
|
||||||
|
{% if redshift_super_type() -%}
|
||||||
|
json_serialize({{array_column}})
|
||||||
|
{%- else -%}
|
||||||
|
{{ array_column }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{# object_to_string ------------------------------------------------- #}
|
||||||
|
{% macro object_to_string(object_column) -%}
|
||||||
|
{{ adapter.dispatch('object_to_string')(object_column) }}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro default__object_to_string(object_column) -%}
|
||||||
|
{{ object_column }}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro redshift__object_to_string(object_column) -%}
|
||||||
|
{% if redshift_super_type() -%}
|
||||||
|
json_serialize({{object_column}})
|
||||||
|
{%- else -%}
|
||||||
|
{{ object_column }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
{# cast_to_boolean ------------------------------------------------- #}
|
{# cast_to_boolean ------------------------------------------------- #}
|
||||||
{% macro cast_to_boolean(field) -%}
|
{% macro cast_to_boolean(field) -%}
|
||||||
{{ adapter.dispatch('cast_to_boolean')(field) }}
|
{{ adapter.dispatch('cast_to_boolean')(field) }}
|
||||||
|
@ -49,7 +74,11 @@
|
||||||
|
|
||||||
{# -- Redshift does not support converting string directly to boolean, it must go through int first #}
|
{# -- Redshift does not support converting string directly to boolean, it must go through int first #}
|
||||||
{% macro redshift__cast_to_boolean(field) -%}
|
{% macro redshift__cast_to_boolean(field) -%}
|
||||||
|
{% if redshift_super_type() -%}
|
||||||
|
cast({{ field }} as boolean)
|
||||||
|
{%- else -%}
|
||||||
cast(decode({{ field }}, 'true', '1', 'false', '0')::integer as boolean)
|
cast(decode({{ field }}, 'true', '1', 'false', '0')::integer as boolean)
|
||||||
|
{%- endif %}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
{# -- MS SQL Server does not support converting string directly to boolean, it must be casted as bit #}
|
{# -- MS SQL Server does not support converting string directly to boolean, it must be casted as bit #}
|
||||||
|
@ -70,3 +99,7 @@
|
||||||
{%- macro default__empty_string_to_null(field) -%}
|
{%- macro default__empty_string_to_null(field) -%}
|
||||||
nullif({{ field }}, '')
|
nullif({{ field }}, '')
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro redshift__empty_string_to_null(field) -%}
|
||||||
|
nullif({{ field }}::varchar, '')
|
||||||
|
{%- endmacro %}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_brands') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['desc'], ['desc']) }} as {{ adapter.quote('desc') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['logo'], ['logo']) }} as logo,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['name'], ['name']) }} as {{ adapter.quote('name') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['slug'], ['slug']) }} as slug,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['active'], ['active']) }} as active,
|
||||||
|
{{ json_extract_array('_airbyte_data', ['photos'], ['photos']) }} as photos,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['country'], ['country']) }} as country,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['searchString'], ['searchString']) }} as searchstring,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['totalProduct'], ['totalProduct']) }} as totalproduct,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_brands') }} as table_alias
|
||||||
|
-- brands
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('brands_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast({{ adapter.quote('desc') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('desc') }},
|
||||||
|
cast(logo as {{ dbt_utils.type_string() }}) as logo,
|
||||||
|
cast({{ adapter.quote('name') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('name') }},
|
||||||
|
cast(slug as {{ dbt_utils.type_string() }}) as slug,
|
||||||
|
{{ cast_to_boolean('active') }} as active,
|
||||||
|
photos,
|
||||||
|
cast(country as {{ dbt_utils.type_string() }}) as country,
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
cast(searchstring as {{ dbt_utils.type_string() }}) as searchstring,
|
||||||
|
cast(totalproduct as {{ dbt_utils.type_float() }}) as totalproduct,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('brands_ab1') }}
|
||||||
|
-- brands
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('brands_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
adapter.quote('desc'),
|
||||||
|
'logo',
|
||||||
|
adapter.quote('name'),
|
||||||
|
'slug',
|
||||||
|
boolean_to_string('active'),
|
||||||
|
array_to_string('photos'),
|
||||||
|
'country',
|
||||||
|
'createdat',
|
||||||
|
'updatedat',
|
||||||
|
'searchstring',
|
||||||
|
'totalproduct',
|
||||||
|
]) }} as _airbyte_brands_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('brands_ab2') }} tmp
|
||||||
|
-- brands
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_give_gifts') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['title'], ['title']) }} as title,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['status'], ['status']) }} as status,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['content'], ['content']) }} as {{ adapter.quote('content') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdBy'], ['createdBy']) }} as createdby,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['searchString'], ['searchString']) }} as searchstring,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['lastChangeUsersAt'], ['lastChangeUsersAt']) }} as lastchangeusersat,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_give_gifts') }} as table_alias
|
||||||
|
-- give_gifts
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('give_gifts_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast(title as {{ dbt_utils.type_string() }}) as title,
|
||||||
|
cast(status as {{ dbt_utils.type_string() }}) as status,
|
||||||
|
cast({{ adapter.quote('content') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('content') }},
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(createdby as {{ dbt_utils.type_string() }}) as createdby,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
cast(searchstring as {{ dbt_utils.type_string() }}) as searchstring,
|
||||||
|
cast(lastchangeusersat as {{ dbt_utils.type_string() }}) as lastchangeusersat,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('give_gifts_ab1') }}
|
||||||
|
-- give_gifts
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('give_gifts_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
'title',
|
||||||
|
'status',
|
||||||
|
adapter.quote('content'),
|
||||||
|
'createdat',
|
||||||
|
'createdby',
|
||||||
|
'updatedat',
|
||||||
|
'searchstring',
|
||||||
|
'lastchangeusersat',
|
||||||
|
]) }} as _airbyte_give_gifts_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('give_gifts_ab2') }} tmp
|
||||||
|
-- give_gifts
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_session_deliveries') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['cart'], ['cart']) }} as cart,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['note'], ['note']) }} as note,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['title'], ['title']) }} as title,
|
||||||
|
{{ json_extract('table_alias', '_airbyte_data', ['request'], ['request']) }} as request,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['service'], ['service']) }} as service,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['currency'], ['currency']) }} as currency,
|
||||||
|
{{ json_extract('table_alias', '_airbyte_data', ['customer'], ['customer']) }} as customer,
|
||||||
|
{{ json_extract('table_alias', '_airbyte_data', ['delivery'], ['delivery']) }} as delivery,
|
||||||
|
{{ json_extract('table_alias', '_airbyte_data', ['location'], ['location']) }} as {{ adapter.quote('location') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract('table_alias', '_airbyte_data', ['promotion'], ['promotion']) }} as promotion,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['sessionOrder'], ['sessionOrder']) }} as sessionorder,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['paymentMethod'], ['paymentMethod']) }} as paymentmethod,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['estimateTimeDelivery'], ['estimateTimeDelivery']) }} as estimatetimedelivery,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_session_deliveries') }} as table_alias
|
||||||
|
-- session_deliveries
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('session_deliveries_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast(cart as {{ dbt_utils.type_string() }}) as cart,
|
||||||
|
cast(note as {{ dbt_utils.type_string() }}) as note,
|
||||||
|
cast(title as {{ dbt_utils.type_string() }}) as title,
|
||||||
|
cast(request as {{ type_json() }}) as request,
|
||||||
|
cast(service as {{ dbt_utils.type_string() }}) as service,
|
||||||
|
cast(currency as {{ dbt_utils.type_string() }}) as currency,
|
||||||
|
cast(customer as {{ type_json() }}) as customer,
|
||||||
|
cast(delivery as {{ type_json() }}) as delivery,
|
||||||
|
cast({{ adapter.quote('location') }} as {{ type_json() }}) as {{ adapter.quote('location') }},
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(promotion as {{ type_json() }}) as promotion,
|
||||||
|
cast(sessionorder as {{ dbt_utils.type_string() }}) as sessionorder,
|
||||||
|
cast(paymentmethod as {{ dbt_utils.type_string() }}) as paymentmethod,
|
||||||
|
cast(estimatetimedelivery as {{ dbt_utils.type_string() }}) as estimatetimedelivery,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('session_deliveries_ab1') }}
|
||||||
|
-- session_deliveries
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('session_deliveries_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
'cart',
|
||||||
|
'note',
|
||||||
|
'title',
|
||||||
|
object_to_string('request'),
|
||||||
|
'service',
|
||||||
|
'currency',
|
||||||
|
object_to_string('customer'),
|
||||||
|
object_to_string('delivery'),
|
||||||
|
object_to_string(adapter.quote('location')),
|
||||||
|
'createdat',
|
||||||
|
object_to_string('promotion'),
|
||||||
|
'sessionorder',
|
||||||
|
'paymentmethod',
|
||||||
|
'estimatetimedelivery',
|
||||||
|
]) }} as _airbyte_session_deliveries_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('session_deliveries_ab2') }} tmp
|
||||||
|
-- session_deliveries
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_team_histories') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['date'], ['date']) }} as {{ adapter.quote('date') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['team'], ['team']) }} as team,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['level'], ['level']) }} as {{ adapter.quote('level') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['leader'], ['leader']) }} as leader,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['status'], ['status']) }} as status,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['statistic'], ['statistic']) }} as statistic,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_team_histories') }} as table_alias
|
||||||
|
-- team_histories
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('team_histories_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast({{ adapter.quote('date') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('date') }},
|
||||||
|
cast(team as {{ dbt_utils.type_string() }}) as team,
|
||||||
|
cast({{ adapter.quote('level') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('level') }},
|
||||||
|
cast(leader as {{ dbt_utils.type_string() }}) as leader,
|
||||||
|
cast(status as {{ dbt_utils.type_string() }}) as status,
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(statistic as {{ dbt_utils.type_string() }}) as statistic,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('team_histories_ab1') }}
|
||||||
|
-- team_histories
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('team_histories_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
adapter.quote('date'),
|
||||||
|
'team',
|
||||||
|
adapter.quote('level'),
|
||||||
|
'leader',
|
||||||
|
'status',
|
||||||
|
'createdat',
|
||||||
|
'statistic',
|
||||||
|
]) }} as _airbyte_team_histories_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('team_histories_ab2') }} tmp
|
||||||
|
-- team_histories
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -5,18 +5,19 @@
|
||||||
tags = [ "top-level-intermediate" ]
|
tags = [ "top-level-intermediate" ]
|
||||||
) }}
|
) }}
|
||||||
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
-- depends_on: {{ source('unibag', '_airbyte_raw_tracking_product_shares') }}
|
-- depends_on: {{ source('unibag', '_airbyte_raw_user_courses') }}
|
||||||
select
|
select
|
||||||
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
{{ json_extract_scalar('_airbyte_data', ['user'], ['user']) }} as {{ adapter.quote('user') }},
|
{{ json_extract_scalar('_airbyte_data', ['user'], ['user']) }} as {{ adapter.quote('user') }},
|
||||||
{{ json_extract_scalar('_airbyte_data', ['source'], ['source']) }} as {{ adapter.quote('source') }},
|
{{ json_extract_scalar('_airbyte_data', ['course'], ['course']) }} as course,
|
||||||
{{ json_extract_scalar('_airbyte_data', ['options'], ['options']) }} as {{ adapter.quote('options') }},
|
{{ json_extract_scalar('_airbyte_data', ['hoolaId'], ['hoolaId']) }} as hoolaid,
|
||||||
{{ json_extract_scalar('_airbyte_data', ['products'], ['products']) }} as products,
|
|
||||||
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['academyAccount'], ['academyAccount']) }} as academyaccount,
|
||||||
_airbyte_ab_id,
|
_airbyte_ab_id,
|
||||||
_airbyte_emitted_at,
|
_airbyte_emitted_at,
|
||||||
{{ current_timestamp() }} as _airbyte_normalized_at
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
from {{ source('unibag', '_airbyte_raw_tracking_product_shares') }} as table_alias
|
from {{ source('unibag', '_airbyte_raw_user_courses') }} as table_alias
|
||||||
-- tracking_product_shares
|
-- user_courses
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
|
|
|
@ -5,18 +5,19 @@
|
||||||
tags = [ "top-level-intermediate" ]
|
tags = [ "top-level-intermediate" ]
|
||||||
) }}
|
) }}
|
||||||
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
-- depends_on: {{ ref('tracking_product_shares_ab1') }}
|
-- depends_on: {{ ref('user_courses_ab1') }}
|
||||||
select
|
select
|
||||||
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
cast({{ adapter.quote('user') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('user') }},
|
cast({{ adapter.quote('user') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('user') }},
|
||||||
cast({{ adapter.quote('source') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('source') }},
|
cast(course as {{ dbt_utils.type_string() }}) as course,
|
||||||
cast({{ adapter.quote('options') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('options') }},
|
cast(hoolaid as {{ dbt_utils.type_string() }}) as hoolaid,
|
||||||
cast(products as {{ dbt_utils.type_string() }}) as products,
|
|
||||||
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
cast(academyaccount as {{ dbt_utils.type_string() }}) as academyaccount,
|
||||||
_airbyte_ab_id,
|
_airbyte_ab_id,
|
||||||
_airbyte_emitted_at,
|
_airbyte_emitted_at,
|
||||||
{{ current_timestamp() }} as _airbyte_normalized_at
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
from {{ ref('tracking_product_shares_ab1') }}
|
from {{ ref('user_courses_ab1') }}
|
||||||
-- tracking_product_shares
|
-- user_courses
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
|
|
|
@ -5,18 +5,19 @@
|
||||||
tags = [ "top-level-intermediate" ]
|
tags = [ "top-level-intermediate" ]
|
||||||
) }}
|
) }}
|
||||||
-- SQL model to build a hash column based on the values of this record
|
-- SQL model to build a hash column based on the values of this record
|
||||||
-- depends_on: {{ ref('tracking_product_shares_ab2') }}
|
-- depends_on: {{ ref('user_courses_ab2') }}
|
||||||
select
|
select
|
||||||
{{ dbt_utils.surrogate_key([
|
{{ dbt_utils.surrogate_key([
|
||||||
'_id',
|
'_id',
|
||||||
adapter.quote('user'),
|
adapter.quote('user'),
|
||||||
adapter.quote('source'),
|
'course',
|
||||||
adapter.quote('options'),
|
'hoolaid',
|
||||||
'products',
|
|
||||||
'createdat',
|
'createdat',
|
||||||
]) }} as _airbyte_tracking_product_shares_hashid,
|
'updatedat',
|
||||||
|
'academyaccount',
|
||||||
|
]) }} as _airbyte_user_courses_hashid,
|
||||||
tmp.*
|
tmp.*
|
||||||
from {{ ref('tracking_product_shares_ab2') }} tmp
|
from {{ ref('user_courses_ab2') }} tmp
|
||||||
-- tracking_product_shares
|
-- user_courses
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_user_give_gift') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['gift'], ['gift']) }} as gift,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['user'], ['user']) }} as {{ adapter.quote('user') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['title'], ['title']) }} as title,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['giveGift'], ['giveGift']) }} as givegift,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['isCompleted'], ['isCompleted']) }} as iscompleted,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['notificationContent'], ['notificationContent']) }} as notificationcontent,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_user_give_gift') }} as table_alias
|
||||||
|
-- user_give_gift
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('user_give_gift_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast(gift as {{ dbt_utils.type_string() }}) as gift,
|
||||||
|
cast({{ adapter.quote('user') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('user') }},
|
||||||
|
cast(title as {{ dbt_utils.type_string() }}) as title,
|
||||||
|
cast(givegift as {{ dbt_utils.type_string() }}) as givegift,
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
{{ cast_to_boolean('iscompleted') }} as iscompleted,
|
||||||
|
cast(notificationcontent as {{ dbt_utils.type_string() }}) as notificationcontent,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('user_give_gift_ab1') }}
|
||||||
|
-- user_give_gift
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('user_give_gift_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
'gift',
|
||||||
|
adapter.quote('user'),
|
||||||
|
'title',
|
||||||
|
'givegift',
|
||||||
|
'createdat',
|
||||||
|
'updatedat',
|
||||||
|
boolean_to_string('iscompleted'),
|
||||||
|
'notificationcontent',
|
||||||
|
]) }} as _airbyte_user_give_gift_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('user_give_gift_ab2') }} tmp
|
||||||
|
-- user_give_gift
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_voucher_bonus') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['user'], ['user']) }} as {{ adapter.quote('user') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['order'], ['order']) }} as {{ adapter.quote('order') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['title'], ['title']) }} as title,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['status'], ['status']) }} as status,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['commission'], ['commission']) }} as commission,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['isRejected'], ['isRejected']) }} as isrejected,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['userVoucher'], ['userVoucher']) }} as uservoucher,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_voucher_bonus') }} as table_alias
|
||||||
|
-- voucher_bonus
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('voucher_bonus_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast({{ adapter.quote('user') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('user') }},
|
||||||
|
cast({{ adapter.quote('order') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('order') }},
|
||||||
|
cast(title as {{ dbt_utils.type_string() }}) as title,
|
||||||
|
cast(status as {{ dbt_utils.type_string() }}) as status,
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
cast(commission as {{ dbt_utils.type_float() }}) as commission,
|
||||||
|
{{ cast_to_boolean('isrejected') }} as isrejected,
|
||||||
|
cast(uservoucher as {{ dbt_utils.type_string() }}) as uservoucher,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('voucher_bonus_ab1') }}
|
||||||
|
-- voucher_bonus
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('voucher_bonus_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
adapter.quote('user'),
|
||||||
|
adapter.quote('order'),
|
||||||
|
'title',
|
||||||
|
'status',
|
||||||
|
'createdat',
|
||||||
|
'updatedat',
|
||||||
|
'commission',
|
||||||
|
boolean_to_string('isrejected'),
|
||||||
|
'uservoucher',
|
||||||
|
]) }} as _airbyte_voucher_bonus_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('voucher_bonus_ab2') }} tmp
|
||||||
|
-- voucher_bonus
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to parse JSON blob stored in a single column and extract into separated field columns as described by the JSON Schema
|
||||||
|
-- depends_on: {{ source('unibag', '_airbyte_raw_vouchers') }}
|
||||||
|
select
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['_id'], ['_id']) }} as _id,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['code'], ['code']) }} as code,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['desc'], ['desc']) }} as {{ adapter.quote('desc') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['logo'], ['logo']) }} as logo,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['type'], ['type']) }} as {{ adapter.quote('type') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['endAt'], ['endAt']) }} as endat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['title'], ['title']) }} as title,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['active'], ['active']) }} as active,
|
||||||
|
{{ json_extract_array('_airbyte_data', ['covers'], ['covers']) }} as covers,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['options'], ['options']) }} as {{ adapter.quote('options') }},
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['startAt'], ['startAt']) }} as startat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['applyFor'], ['applyFor']) }} as applyfor,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['articleID'], ['articleID']) }} as articleid,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['createdAt'], ['createdAt']) }} as createdat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['updatedAt'], ['updatedAt']) }} as updatedat,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['searchString'], ['searchString']) }} as searchstring,
|
||||||
|
{{ json_extract_scalar('_airbyte_data', ['isApplyForOrderWholesale'], ['isApplyForOrderWholesale']) }} as isapplyfororderwholesale,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ source('unibag', '_airbyte_raw_vouchers') }} as table_alias
|
||||||
|
-- vouchers
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to cast each column to its adequate SQL type converted from the JSON schema type
|
||||||
|
-- depends_on: {{ ref('vouchers_ab1') }}
|
||||||
|
select
|
||||||
|
cast(_id as {{ dbt_utils.type_string() }}) as _id,
|
||||||
|
cast(code as {{ dbt_utils.type_string() }}) as code,
|
||||||
|
cast({{ adapter.quote('desc') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('desc') }},
|
||||||
|
cast(logo as {{ dbt_utils.type_string() }}) as logo,
|
||||||
|
cast({{ adapter.quote('type') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('type') }},
|
||||||
|
cast(endat as {{ dbt_utils.type_string() }}) as endat,
|
||||||
|
cast(title as {{ dbt_utils.type_string() }}) as title,
|
||||||
|
{{ cast_to_boolean('active') }} as active,
|
||||||
|
covers,
|
||||||
|
cast({{ adapter.quote('options') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('options') }},
|
||||||
|
cast(startat as {{ dbt_utils.type_string() }}) as startat,
|
||||||
|
cast(applyfor as {{ dbt_utils.type_string() }}) as applyfor,
|
||||||
|
cast(articleid as {{ dbt_utils.type_string() }}) as articleid,
|
||||||
|
cast(createdat as {{ dbt_utils.type_string() }}) as createdat,
|
||||||
|
cast(updatedat as {{ dbt_utils.type_string() }}) as updatedat,
|
||||||
|
cast(searchstring as {{ dbt_utils.type_string() }}) as searchstring,
|
||||||
|
{{ cast_to_boolean('isapplyfororderwholesale') }} as isapplyfororderwholesale,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at
|
||||||
|
from {{ ref('vouchers_ab1') }}
|
||||||
|
-- vouchers
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "_airbyte_unibag",
|
||||||
|
tags = [ "top-level-intermediate" ]
|
||||||
|
) }}
|
||||||
|
-- SQL model to build a hash column based on the values of this record
|
||||||
|
-- depends_on: {{ ref('vouchers_ab2') }}
|
||||||
|
select
|
||||||
|
{{ dbt_utils.surrogate_key([
|
||||||
|
'_id',
|
||||||
|
'code',
|
||||||
|
adapter.quote('desc'),
|
||||||
|
'logo',
|
||||||
|
adapter.quote('type'),
|
||||||
|
'endat',
|
||||||
|
'title',
|
||||||
|
boolean_to_string('active'),
|
||||||
|
array_to_string('covers'),
|
||||||
|
adapter.quote('options'),
|
||||||
|
'startat',
|
||||||
|
'applyfor',
|
||||||
|
'articleid',
|
||||||
|
'createdat',
|
||||||
|
'updatedat',
|
||||||
|
'searchstring',
|
||||||
|
boolean_to_string('isapplyfororderwholesale'),
|
||||||
|
]) }} as _airbyte_vouchers_hashid,
|
||||||
|
tmp.*
|
||||||
|
from {{ ref('vouchers_ab2') }} tmp
|
||||||
|
-- vouchers
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('brands_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
{{ adapter.quote('name') }},
|
||||||
|
active,
|
||||||
|
{{ adapter.quote('country') }}::json->>'name' AS country_name,
|
||||||
|
{{ adapter.quote('country') }}::json->>'code' AS country_code,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
|
COALESCE(cast(totalproduct AS integer), 0) AS total_product,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_brands_hashid
|
||||||
|
from {{ ref('brands_ab3') }}
|
||||||
|
-- brands from {{ source('unibag', '_airbyte_raw_brands') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('give_gifts_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
title,
|
||||||
|
status,
|
||||||
|
{{ adapter.quote('content') }},
|
||||||
|
createdby AS created_by,
|
||||||
|
lastchangeusersat::timestamp AS last_change_users_at,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_give_gifts_hashid
|
||||||
|
from {{ ref('give_gifts_ab3') }}
|
||||||
|
-- give_gifts from {{ source('unibag', '_airbyte_raw_give_gifts') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -11,6 +11,7 @@ select
|
||||||
sku,
|
sku,
|
||||||
{{ adapter.quote('name') }},
|
{{ adapter.quote('name') }},
|
||||||
active,
|
active,
|
||||||
|
brand AS brand_id,
|
||||||
-- quantity,
|
-- quantity,
|
||||||
picture AS photo,
|
picture AS photo,
|
||||||
cast({{ adapter.quote('price') }}::json->>'base' AS numeric) AS price_base,
|
cast({{ adapter.quote('price') }}::json->>'base' AS numeric) AS price_base,
|
||||||
|
@ -23,7 +24,8 @@ select
|
||||||
{{ adapter.quote('info') }}::json->'supplier'->>'_id' AS supplier_id,
|
{{ adapter.quote('info') }}::json->'supplier'->>'_id' AS supplier_id,
|
||||||
{{ adapter.quote('info') }}::json->'supplier'->>'name' AS supplier_name,
|
{{ adapter.quote('info') }}::json->'supplier'->>'name' AS supplier_name,
|
||||||
{{ adapter.quote('info') }}::json->>'dimension' AS info_dimension,
|
{{ adapter.quote('info') }}::json->>'dimension' AS info_dimension,
|
||||||
unitCode AS info_unit_code,
|
unitcode AS info_unit_code,
|
||||||
|
suppliersku AS supplier_sku,
|
||||||
cast({{ adapter.quote('info') }}::json->>'weight' AS numeric) AS info_weight,
|
cast({{ adapter.quote('info') }}::json->>'weight' AS numeric) AS info_weight,
|
||||||
cast({{ adapter.quote('statistic') }}::json->>'saleTotal' AS numeric) AS stats_sale_total,
|
cast({{ adapter.quote('statistic') }}::json->>'saleTotal' AS numeric) AS stats_sale_total,
|
||||||
cast({{ adapter.quote('statistic') }}::json->>'salePending' AS numeric) AS stats_sale_pending,
|
cast({{ adapter.quote('statistic') }}::json->>'salePending' AS numeric) AS stats_sale_pending,
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('session_deliveries_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
sessionorder AS session_order_id,
|
||||||
|
title,
|
||||||
|
service,
|
||||||
|
currency,
|
||||||
|
{{ adapter.quote('customer') }}::json->>'_id' AS customer_id,
|
||||||
|
{{ adapter.quote('customer') }}::json->>'name' AS customer_name,
|
||||||
|
{{ adapter.quote('customer') }}::json->>'phone' AS customer_phone,
|
||||||
|
{{ adapter.quote('delivery') }}::jsonb,
|
||||||
|
{{ adapter.quote('location') }}::jsonb,
|
||||||
|
{{ adapter.quote('promotion') }}::json->>'type' AS promotion_type,
|
||||||
|
{{ adapter.quote('promotion') }}::json->>'isApplied' AS promotion_is_applied,
|
||||||
|
{{ adapter.quote('promotion') }}::json->>'discount' AS promotion_discount,
|
||||||
|
{{ adapter.quote('promotion') }}::json->>'minOrderValue' AS promotion_min_order_value,
|
||||||
|
paymentmethod AS payment_method,
|
||||||
|
estimatetimedelivery AS estimate_time_delivery,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_session_deliveries_hashid
|
||||||
|
from {{ ref('session_deliveries_ab3') }}
|
||||||
|
-- session_deliveries from {{ source('unibag', '_airbyte_raw_session_deliveries') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('team_histories_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
team AS team_id,
|
||||||
|
leader AS leader_id,
|
||||||
|
status,
|
||||||
|
{{ adapter.quote('date') }}::timestamp,
|
||||||
|
{{ adapter.quote('level') }}::jsonb,
|
||||||
|
statistic::jsonb,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_team_histories_hashid
|
||||||
|
from {{ ref('team_histories_ab3') }}
|
||||||
|
-- team_histories from {{ source('unibag', '_airbyte_raw_team_histories') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -12,7 +12,7 @@ select
|
||||||
team AS team_id,
|
team AS team_id,
|
||||||
{{ adapter.quote('user') }} AS seller_id,
|
{{ adapter.quote('user') }} AS seller_id,
|
||||||
isleft AS is_left,
|
isleft AS is_left,
|
||||||
leftat AS left_at,
|
leftat::timestamp AS left_at,
|
||||||
joinedat::timestamp AS joined_at,
|
joinedat::timestamp AS joined_at,
|
||||||
createdat::timestamp AS created_at,
|
createdat::timestamp AS created_at,
|
||||||
updatedat::timestamp AS updated_at,
|
updatedat::timestamp AS updated_at,
|
||||||
|
|
|
@ -5,19 +5,20 @@
|
||||||
tags = [ "top-level" ]
|
tags = [ "top-level" ]
|
||||||
) }}
|
) }}
|
||||||
-- Final base SQL model
|
-- Final base SQL model
|
||||||
-- depends_on: {{ ref('tracking_product_shares_ab3') }}
|
-- depends_on: {{ ref('user_courses_ab3') }}
|
||||||
select
|
select
|
||||||
_id,
|
_id,
|
||||||
{{ adapter.quote('source') }},
|
|
||||||
{{ adapter.quote('user') }} AS seller_id,
|
{{ adapter.quote('user') }} AS seller_id,
|
||||||
products AS product_id,
|
course::jsonb,
|
||||||
{{ adapter.quote('options') }}::json->>'action' AS options_action,
|
hoolaid AS hoola_id,
|
||||||
|
academyaccount AS academy_account_id,
|
||||||
createdat::timestamp AS created_at,
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
_airbyte_ab_id,
|
_airbyte_ab_id,
|
||||||
_airbyte_emitted_at,
|
_airbyte_emitted_at,
|
||||||
{{ current_timestamp() }} as _airbyte_normalized_at,
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
_airbyte_tracking_product_shares_hashid
|
_airbyte_user_courses_hashid
|
||||||
from {{ ref('tracking_product_shares_ab3') }}
|
from {{ ref('user_courses_ab3') }}
|
||||||
-- tracking_product_shares from {{ source('unibag', '_airbyte_raw_tracking_product_shares') }}
|
-- user_courses from {{ source('unibag', '_airbyte_raw_user_courses') }}
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('user_give_gift_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
{{ adapter.quote('user') }} AS seller_id,
|
||||||
|
title,
|
||||||
|
givegift AS give_gift_id,
|
||||||
|
iscompleted AS is_completed,
|
||||||
|
gift::json->>'type' AS gift_type,
|
||||||
|
cast(gift::json->>'value' AS numeric) AS gift_value,
|
||||||
|
gift::json->>'label' AS gift_label,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_user_give_gift_hashid
|
||||||
|
from {{ ref('user_give_gift_ab3') }}
|
||||||
|
-- user_give_gift from {{ source('unibag', '_airbyte_raw_user_give_gift') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('voucher_bonus_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
{{ adapter.quote('user') }} AS seller_id,
|
||||||
|
{{ adapter.quote('order') }} AS order_id,
|
||||||
|
title,
|
||||||
|
status,
|
||||||
|
commission,
|
||||||
|
isrejected AS is_rejected,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_voucher_bonus_hashid
|
||||||
|
from {{ ref('voucher_bonus_ab3') }}
|
||||||
|
-- voucher_bonus from {{ source('unibag', '_airbyte_raw_voucher_bonus') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
{{ config(
|
||||||
|
indexes = [{'columns':['_airbyte_emitted_at'],'type':'btree'}],
|
||||||
|
unique_key = '_airbyte_ab_id',
|
||||||
|
schema = "unibag",
|
||||||
|
tags = [ "top-level" ]
|
||||||
|
) }}
|
||||||
|
-- Final base SQL model
|
||||||
|
-- depends_on: {{ ref('vouchers_ab3') }}
|
||||||
|
select
|
||||||
|
_id,
|
||||||
|
code,
|
||||||
|
{{ adapter.quote('type') }},
|
||||||
|
title,
|
||||||
|
active,
|
||||||
|
cast({{ adapter.quote('options') }}::json->>'milestones' AS jsonb) AS options_milestones,
|
||||||
|
cast({{ adapter.quote('options') }}::json->>'transactionMinValue' AS numeric) AS options_transaction_min_value,
|
||||||
|
articleid AS article_id,
|
||||||
|
isapplyfororderwholesale AS is_apply_for_order_wholesale,
|
||||||
|
startat::timestamp AS start_at,
|
||||||
|
endat::timestamp AS end_at,
|
||||||
|
createdat::timestamp AS created_at,
|
||||||
|
updatedat::timestamp AS updated_at,
|
||||||
|
_airbyte_ab_id,
|
||||||
|
_airbyte_emitted_at,
|
||||||
|
{{ current_timestamp() }} as _airbyte_normalized_at,
|
||||||
|
_airbyte_vouchers_hashid
|
||||||
|
from {{ ref('vouchers_ab3') }}
|
||||||
|
-- vouchers from {{ source('unibag', '_airbyte_raw_vouchers') }}
|
||||||
|
where 1 = 1
|
||||||
|
|
|
@ -7,12 +7,14 @@ sources:
|
||||||
identifier: false
|
identifier: false
|
||||||
tables:
|
tables:
|
||||||
- name: _airbyte_raw_admin_tags
|
- name: _airbyte_raw_admin_tags
|
||||||
|
- name: _airbyte_raw_brands
|
||||||
- name: _airbyte_raw_cash_flows
|
- name: _airbyte_raw_cash_flows
|
||||||
- name: _airbyte_raw_cities
|
- name: _airbyte_raw_cities
|
||||||
- name: _airbyte_raw_customers
|
- name: _airbyte_raw_customers
|
||||||
- name: _airbyte_raw_districts
|
- name: _airbyte_raw_districts
|
||||||
- name: _airbyte_raw_event_rewards
|
- name: _airbyte_raw_event_rewards
|
||||||
- name: _airbyte_raw_events
|
- name: _airbyte_raw_events
|
||||||
|
- name: _airbyte_raw_give_gifts
|
||||||
- name: _airbyte_raw_inventories
|
- name: _airbyte_raw_inventories
|
||||||
- name: _airbyte_raw_membership
|
- name: _airbyte_raw_membership
|
||||||
- name: _airbyte_raw_membership_histories
|
- name: _airbyte_raw_membership_histories
|
||||||
|
@ -29,14 +31,19 @@ sources:
|
||||||
- name: _airbyte_raw_promotion_orders
|
- name: _airbyte_raw_promotion_orders
|
||||||
- name: _airbyte_raw_promotions
|
- name: _airbyte_raw_promotions
|
||||||
- name: _airbyte_raw_referrals
|
- name: _airbyte_raw_referrals
|
||||||
|
- name: _airbyte_raw_session_deliveries
|
||||||
- name: _airbyte_raw_social_post_views
|
- name: _airbyte_raw_social_post_views
|
||||||
- name: _airbyte_raw_social_posts
|
- name: _airbyte_raw_social_posts
|
||||||
- name: _airbyte_raw_suppliers
|
- name: _airbyte_raw_suppliers
|
||||||
- name: _airbyte_raw_team_activities
|
- name: _airbyte_raw_team_activities
|
||||||
- name: _airbyte_raw_team_bonus
|
- name: _airbyte_raw_team_bonus
|
||||||
|
- name: _airbyte_raw_team_histories
|
||||||
- name: _airbyte_raw_team_members
|
- name: _airbyte_raw_team_members
|
||||||
- name: _airbyte_raw_teams
|
- name: _airbyte_raw_teams
|
||||||
- name: _airbyte_raw_tracking_product_shares
|
- name: _airbyte_raw_user_courses
|
||||||
|
- name: _airbyte_raw_user_give_gift
|
||||||
- name: _airbyte_raw_user_identifications
|
- name: _airbyte_raw_user_identifications
|
||||||
- name: _airbyte_raw_users
|
- name: _airbyte_raw_users
|
||||||
|
- name: _airbyte_raw_voucher_bonus
|
||||||
|
- name: _airbyte_raw_vouchers
|
||||||
- name: _airbyte_raw_wards
|
- name: _airbyte_raw_wards
|
||||||
|
|
Loading…
Reference in New Issue