Compare commits
	
		
			No commits in common. "master" and "add-social-post" have entirely different histories.
		
	
	
		
			master
			...
			add-social
		
	
		
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -6,5 +6,5 @@ push:
 | 
			
		|||
run:
 | 
			
		||||
	dbt deps --profiles-dir=. --project-dir=.
 | 
			
		||||
    #dbt run --profiles-dir=. --project-dir=. --full-refresh
 | 
			
		||||
	dbt run --profiles-dir=. --project-dir=. --full-refresh --select user_give_gift
 | 
			
		||||
	dbt run --profiles-dir=. --project-dir=. --full-refresh --select tracking_product_shares
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										230
									
								
								dbt_project.yml
								
								
								
								
							
							
						
						
									
										230
									
								
								dbt_project.yml
								
								
								
								
							| 
						 | 
				
			
			@ -1,29 +1,45 @@
 | 
			
		|||
name: airbyte_utils
 | 
			
		||||
version: '1.0'
 | 
			
		||||
# This file is necessary to install dbt-utils with dbt deps
 | 
			
		||||
# the content will be overwritten by the transform function
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
profile: normalize
 | 
			
		||||
model-paths:
 | 
			
		||||
- models
 | 
			
		||||
docs-paths:
 | 
			
		||||
- docs
 | 
			
		||||
analysis-paths:
 | 
			
		||||
- analysis
 | 
			
		||||
test-paths:
 | 
			
		||||
- tests
 | 
			
		||||
seed-paths:
 | 
			
		||||
- data
 | 
			
		||||
macro-paths:
 | 
			
		||||
- macros
 | 
			
		||||
target-path: ../build
 | 
			
		||||
log-path: ../logs
 | 
			
		||||
packages-install-path: ../dbt
 | 
			
		||||
clean-targets:
 | 
			
		||||
- build
 | 
			
		||||
- dbt_modules
 | 
			
		||||
 | 
			
		||||
# This setting configures which "profile" dbt uses for this project. Profiles contain
 | 
			
		||||
# database connection information, and should be configured in the  ~/.dbt/profiles.yml file
 | 
			
		||||
profile: "normalize"
 | 
			
		||||
 | 
			
		||||
# These configurations specify where dbt should look for different types of files.
 | 
			
		||||
# The `model-paths` config, for example, states that source models can be found
 | 
			
		||||
# in the "models/" directory. You probably won't need to change these!
 | 
			
		||||
model-paths: ["models"]
 | 
			
		||||
docs-paths: ["docs"]
 | 
			
		||||
analysis-paths: ["analysis"]
 | 
			
		||||
test-paths: ["tests"]
 | 
			
		||||
seed-paths: ["data"]
 | 
			
		||||
macro-paths: ["macros"]
 | 
			
		||||
 | 
			
		||||
target-path: "../build" # directory which will store compiled SQL files
 | 
			
		||||
log-path: "../logs" # directory which will store DBT logs
 | 
			
		||||
packages-install-path: "../dbt" # directory which will store external DBT dependencies
 | 
			
		||||
 | 
			
		||||
clean-targets: # directories to be removed by `dbt clean`
 | 
			
		||||
  - "build"
 | 
			
		||||
  - "dbt_modules"
 | 
			
		||||
 | 
			
		||||
quoting:
 | 
			
		||||
  database: true
 | 
			
		||||
  # Temporarily disabling the behavior of the ExtendedNameTransformer on table/schema names, see (issue #1785)
 | 
			
		||||
  # all schemas should be unquoted
 | 
			
		||||
  schema: false
 | 
			
		||||
  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:
 | 
			
		||||
  airbyte_utils:
 | 
			
		||||
    +materialized: table
 | 
			
		||||
| 
						 | 
				
			
			@ -41,175 +57,7 @@ models:
 | 
			
		|||
      airbyte_views:
 | 
			
		||||
        +tags: airbyte_internal_views
 | 
			
		||||
        +materialized: view
 | 
			
		||||
 | 
			
		||||
dispatch:
 | 
			
		||||
  - macro_namespace: 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
 | 
			
		||||
    search_order: ["airbyte_utils", "dbt_utils"]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -1,14 +0,0 @@
 | 
			
		|||
{%- 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,19 +104,8 @@
 | 
			
		|||
 | 
			
		||||
{% macro default__unnest_cte(from_table, stream_name, column_col) -%}{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% 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/ #}
 | 
			
		||||
{% macro redshift__unnest_cte(from_table, stream_name, column_col) -%}
 | 
			
		||||
    {%- if not execute -%}
 | 
			
		||||
        {{ return('') }}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +134,6 @@ joined as (
 | 
			
		|||
    -- to the number of items in {{ from_table }}.{{ column_col }}
 | 
			
		||||
    where numbers.generated_number <= json_array_length({{ column_col }}, true)
 | 
			
		||||
)
 | 
			
		||||
    {%- endif %}
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro mysql__unnest_cte(from_table, stream_name, column_col) -%}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,16 +0,0 @@
 | 
			
		|||
{% 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,11 +9,7 @@
 | 
			
		|||
{% endmacro %}
 | 
			
		||||
 | 
			
		||||
{%- macro redshift__type_json() -%}
 | 
			
		||||
  {%- if redshift_super_type() -%}
 | 
			
		||||
    super
 | 
			
		||||
  {%- else -%}
 | 
			
		||||
    varchar
 | 
			
		||||
  {%- endif -%}
 | 
			
		||||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{% macro postgres__type_json() %}
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +29,7 @@
 | 
			
		|||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{%- macro sqlserver__type_json() -%}
 | 
			
		||||
    NVARCHAR(max)
 | 
			
		||||
    VARCHAR(max)
 | 
			
		||||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{% macro clickhouse__type_json() %}
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +48,7 @@
 | 
			
		|||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{% macro sqlserver__type_string() %}
 | 
			
		||||
    NVARCHAR(max)
 | 
			
		||||
    VARCHAR(max)
 | 
			
		||||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{%- macro clickhouse__type_string() -%}
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +150,7 @@
 | 
			
		|||
{%- macro sqlserver__type_timestamp_with_timezone() -%}
 | 
			
		||||
    {#-- 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 --#}
 | 
			
		||||
    datetime2
 | 
			
		||||
    datetime
 | 
			
		||||
{%- endmacro -%}
 | 
			
		||||
 | 
			
		||||
{% macro clickhouse__type_timestamp_with_timezone() %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,12 +43,11 @@
 | 
			
		|||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro redshift__format_json_path(json_path_list) -%}
 | 
			
		||||
    {%- set quote = '"' if redshift_super_type() else "'" -%}
 | 
			
		||||
    {%- set str_list = [] -%}
 | 
			
		||||
    {%- for json_path in json_path_list -%}
 | 
			
		||||
        {%- if str_list.append(json_path.replace(quote, quote + quote)) -%} {%- endif -%}
 | 
			
		||||
        {%- if str_list.append(json_path.replace("'", "''")) -%} {%- endif -%}
 | 
			
		||||
    {%- endfor -%}
 | 
			
		||||
    {{ quote ~ str_list|join(quote + "," + quote) ~ quote }}
 | 
			
		||||
    {{ "'" ~ str_list|join("','") ~ "'" }}
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro snowflake__format_json_path(json_path_list) -%}
 | 
			
		||||
| 
						 | 
				
			
			@ -115,14 +114,11 @@
 | 
			
		|||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro redshift__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
 | 
			
		||||
    {%- 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 -%}
 | 
			
		||||
    {%- if from_table|string() == '' %}
 | 
			
		||||
        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 -%}
 | 
			
		||||
    {% else %}
 | 
			
		||||
        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 %}
 | 
			
		||||
 | 
			
		||||
{% macro snowflake__json_extract(from_table, json_column, json_path_list, normalized_json_path) -%}
 | 
			
		||||
| 
						 | 
				
			
			@ -172,11 +168,7 @@
 | 
			
		|||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% 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
 | 
			
		||||
    {%- endif -%}
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro snowflake__json_extract_scalar(json_column, json_path_list, normalized_json_path) -%}
 | 
			
		||||
| 
						 | 
				
			
			@ -218,11 +210,7 @@
 | 
			
		|||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% 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)
 | 
			
		||||
    {%- endif -%}
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{% macro snowflake__json_extract_array(json_column, json_path_list, normalized_json_path) -%}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,31 +33,6 @@
 | 
			
		|||
    cast({{ array_column }} as {{dbt_utils.type_string()}})
 | 
			
		||||
{%- 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 -------------------------------------------------     #}
 | 
			
		||||
{% macro cast_to_boolean(field) -%}
 | 
			
		||||
    {{ adapter.dispatch('cast_to_boolean')(field) }}
 | 
			
		||||
| 
						 | 
				
			
			@ -74,11 +49,7 @@
 | 
			
		|||
 | 
			
		||||
{# -- Redshift does not support converting string directly to boolean, it must go through int first #}
 | 
			
		||||
{% 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)
 | 
			
		||||
  {%- endif %}
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{# -- MS SQL Server does not support converting string directly to boolean, it must be casted as bit #}
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +70,3 @@
 | 
			
		|||
{%- macro default__empty_string_to_null(field) -%}
 | 
			
		||||
    nullif({{ field }}, '')
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
 | 
			
		||||
{%- macro redshift__empty_string_to_null(field) -%}
 | 
			
		||||
    nullif({{ field }}::varchar, '')
 | 
			
		||||
{%- endmacro %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||
{{ 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,19 +5,18 @@
 | 
			
		|||
    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_courses') }}
 | 
			
		||||
-- depends_on: {{ source('unibag', '_airbyte_raw_tracking_product_shares') }}
 | 
			
		||||
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', ['course'], ['course']) }} as course,
 | 
			
		||||
    {{ json_extract_scalar('_airbyte_data', ['hoolaId'], ['hoolaId']) }} as hoolaid,
 | 
			
		||||
    {{ json_extract_scalar('_airbyte_data', ['source'], ['source']) }} as {{ adapter.quote('source') }},
 | 
			
		||||
    {{ json_extract_scalar('_airbyte_data', ['options'], ['options']) }} as {{ adapter.quote('options') }},
 | 
			
		||||
    {{ json_extract_scalar('_airbyte_data', ['products'], ['products']) }} as products,
 | 
			
		||||
    {{ 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_emitted_at,
 | 
			
		||||
    {{ current_timestamp() }} as _airbyte_normalized_at
 | 
			
		||||
from {{ source('unibag', '_airbyte_raw_user_courses') }} as table_alias
 | 
			
		||||
-- user_courses
 | 
			
		||||
from {{ source('unibag', '_airbyte_raw_tracking_product_shares') }} as table_alias
 | 
			
		||||
-- tracking_product_shares
 | 
			
		||||
where 1 = 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5,19 +5,18 @@
 | 
			
		|||
    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_courses_ab1') }}
 | 
			
		||||
-- depends_on: {{ ref('tracking_product_shares_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(course as {{ dbt_utils.type_string() }}) as course,
 | 
			
		||||
    cast(hoolaid as {{ dbt_utils.type_string() }}) as hoolaid,
 | 
			
		||||
    cast({{ adapter.quote('source') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('source') }},
 | 
			
		||||
    cast({{ adapter.quote('options') }} as {{ dbt_utils.type_string() }}) as {{ adapter.quote('options') }},
 | 
			
		||||
    cast(products as {{ dbt_utils.type_string() }}) as products,
 | 
			
		||||
    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_emitted_at,
 | 
			
		||||
    {{ current_timestamp() }} as _airbyte_normalized_at
 | 
			
		||||
from {{ ref('user_courses_ab1') }}
 | 
			
		||||
-- user_courses
 | 
			
		||||
from {{ ref('tracking_product_shares_ab1') }}
 | 
			
		||||
-- tracking_product_shares
 | 
			
		||||
where 1 = 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5,19 +5,18 @@
 | 
			
		|||
    tags = [ "top-level-intermediate" ]
 | 
			
		||||
) }}
 | 
			
		||||
-- SQL model to build a hash column based on the values of this record
 | 
			
		||||
-- depends_on: {{ ref('user_courses_ab2') }}
 | 
			
		||||
-- depends_on: {{ ref('tracking_product_shares_ab2') }}
 | 
			
		||||
select
 | 
			
		||||
    {{ dbt_utils.surrogate_key([
 | 
			
		||||
        '_id',
 | 
			
		||||
        adapter.quote('user'),
 | 
			
		||||
        'course',
 | 
			
		||||
        'hoolaid',
 | 
			
		||||
        adapter.quote('source'),
 | 
			
		||||
        adapter.quote('options'),
 | 
			
		||||
        'products',
 | 
			
		||||
        'createdat',
 | 
			
		||||
        'updatedat',
 | 
			
		||||
        'academyaccount',
 | 
			
		||||
    ]) }} as _airbyte_user_courses_hashid,
 | 
			
		||||
    ]) }} as _airbyte_tracking_product_shares_hashid,
 | 
			
		||||
    tmp.*
 | 
			
		||||
from {{ ref('user_courses_ab2') }} tmp
 | 
			
		||||
-- user_courses
 | 
			
		||||
from {{ ref('tracking_product_shares_ab2') }} tmp
 | 
			
		||||
-- tracking_product_shares
 | 
			
		||||
where 1 = 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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,7 +11,6 @@ select
 | 
			
		|||
    sku,
 | 
			
		||||
    {{ adapter.quote('name') }},
 | 
			
		||||
    active,
 | 
			
		||||
    brand AS brand_id,
 | 
			
		||||
    -- quantity,
 | 
			
		||||
    picture AS photo,
 | 
			
		||||
    cast({{ adapter.quote('price') }}::json->>'base' AS numeric) AS price_base,
 | 
			
		||||
| 
						 | 
				
			
			@ -24,8 +23,7 @@ select
 | 
			
		|||
    {{ adapter.quote('info') }}::json->'supplier'->>'_id' AS supplier_id,
 | 
			
		||||
    {{ adapter.quote('info') }}::json->'supplier'->>'name' AS supplier_name,
 | 
			
		||||
    {{ adapter.quote('info') }}::json->>'dimension' AS info_dimension,
 | 
			
		||||
    unitcode AS info_unit_code,
 | 
			
		||||
    suppliersku AS supplier_sku,
 | 
			
		||||
    unitCode AS info_unit_code,
 | 
			
		||||
    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->>'salePending' AS numeric) AS stats_sale_pending,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
{{ 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,
 | 
			
		||||
    {{ adapter.quote('user') }} AS seller_id,
 | 
			
		||||
    isleft AS is_left,
 | 
			
		||||
    leftat::timestamp AS left_at,
 | 
			
		||||
    leftat AS left_at,
 | 
			
		||||
    joinedat::timestamp AS joined_at,
 | 
			
		||||
    createdat::timestamp AS created_at,
 | 
			
		||||
    updatedat::timestamp AS updated_at,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,22 +5,19 @@
 | 
			
		|||
    tags = [ "top-level" ]
 | 
			
		||||
) }}
 | 
			
		||||
-- Final base SQL model
 | 
			
		||||
-- depends_on: {{ ref('voucher_bonus_ab3') }}
 | 
			
		||||
-- depends_on: {{ ref('tracking_product_shares_ab3') }}
 | 
			
		||||
select
 | 
			
		||||
    _id,
 | 
			
		||||
    {{ adapter.quote('source') }},
 | 
			
		||||
    {{ adapter.quote('user') }} AS seller_id,
 | 
			
		||||
    {{ adapter.quote('order') }} AS order_id,
 | 
			
		||||
    title,
 | 
			
		||||
    status,
 | 
			
		||||
    commission,
 | 
			
		||||
    isrejected AS is_rejected,
 | 
			
		||||
    products AS product_id,
 | 
			
		||||
    {{ adapter.quote('options') }}::json->>'action' AS options_action,
 | 
			
		||||
    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') }}
 | 
			
		||||
    _airbyte_tracking_product_shares_hashid
 | 
			
		||||
from {{ ref('tracking_product_shares_ab3') }}
 | 
			
		||||
-- tracking_product_shares from {{ source('unibag', '_airbyte_raw_tracking_product_shares') }}
 | 
			
		||||
where 1 = 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||
{{ 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_courses_ab3') }}
 | 
			
		||||
select
 | 
			
		||||
    _id,
 | 
			
		||||
    {{ adapter.quote('user') }} AS seller_id,
 | 
			
		||||
    course::jsonb,
 | 
			
		||||
    hoolaid AS hoola_id,
 | 
			
		||||
    academyaccount AS academy_account_id,
 | 
			
		||||
    createdat::timestamp AS created_at,
 | 
			
		||||
    updatedat::timestamp AS updated_at,
 | 
			
		||||
    _airbyte_ab_id,
 | 
			
		||||
    _airbyte_emitted_at,
 | 
			
		||||
    {{ current_timestamp() }} as _airbyte_normalized_at,
 | 
			
		||||
    _airbyte_user_courses_hashid
 | 
			
		||||
from {{ ref('user_courses_ab3') }}
 | 
			
		||||
-- user_courses from {{ source('unibag', '_airbyte_raw_user_courses') }}
 | 
			
		||||
where 1 = 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,27 +0,0 @@
 | 
			
		|||
{{ 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,30 +0,0 @@
 | 
			
		|||
{{ 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,14 +7,12 @@ sources:
 | 
			
		|||
    identifier: false
 | 
			
		||||
  tables:
 | 
			
		||||
  - name: _airbyte_raw_admin_tags
 | 
			
		||||
  - name: _airbyte_raw_brands
 | 
			
		||||
  - name: _airbyte_raw_cash_flows
 | 
			
		||||
  - name: _airbyte_raw_cities
 | 
			
		||||
  - name: _airbyte_raw_customers
 | 
			
		||||
  - name: _airbyte_raw_districts
 | 
			
		||||
  - name: _airbyte_raw_event_rewards
 | 
			
		||||
  - name: _airbyte_raw_events
 | 
			
		||||
  - name: _airbyte_raw_give_gifts
 | 
			
		||||
  - name: _airbyte_raw_inventories
 | 
			
		||||
  - name: _airbyte_raw_membership
 | 
			
		||||
  - name: _airbyte_raw_membership_histories
 | 
			
		||||
| 
						 | 
				
			
			@ -31,19 +29,14 @@ sources:
 | 
			
		|||
  - name: _airbyte_raw_promotion_orders
 | 
			
		||||
  - name: _airbyte_raw_promotions
 | 
			
		||||
  - name: _airbyte_raw_referrals
 | 
			
		||||
  - name: _airbyte_raw_session_deliveries
 | 
			
		||||
  - name: _airbyte_raw_social_post_views
 | 
			
		||||
  - name: _airbyte_raw_social_posts
 | 
			
		||||
  - name: _airbyte_raw_suppliers
 | 
			
		||||
  - name: _airbyte_raw_team_activities
 | 
			
		||||
  - name: _airbyte_raw_team_bonus
 | 
			
		||||
  - name: _airbyte_raw_team_histories
 | 
			
		||||
  - name: _airbyte_raw_team_members
 | 
			
		||||
  - name: _airbyte_raw_teams
 | 
			
		||||
  - name: _airbyte_raw_user_courses
 | 
			
		||||
  - name: _airbyte_raw_user_give_gift
 | 
			
		||||
  - name: _airbyte_raw_tracking_product_shares
 | 
			
		||||
  - name: _airbyte_raw_user_identifications
 | 
			
		||||
  - name: _airbyte_raw_users
 | 
			
		||||
  - name: _airbyte_raw_voucher_bonus
 | 
			
		||||
  - name: _airbyte_raw_vouchers
 | 
			
		||||
  - name: _airbyte_raw_wards
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue