๊ธฐ๋ณธ์ ์ผ๋ก ์ฒ์ ์ ๋ ฅ ๋๋ ETL ํ ์ด๋ธ์ ๋์์ผ๋ก ํ๋ค.
ํ ์ด๋ธ ์ด๋ฆ๋ค์ ๋ณ๋ช (alias)์ ์ฃผ๋ ๊ฒ์ด๋ค.
Source ํ ์ด๋ธ๋ค์ ์ ๋ ์ฝ๋๊ฐ ์๋์ง ์ฒดํฌํด์ฃผ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค.
version: 2
sources:
- name: urface
schema: raw_data
tables:
- name: metadata
identifier: user_metadata
- name: event
identifier: user_event
- name: variant
identifier: user_variant
raw_data.user_metadata๋ Jinja์์ source("urface", "metadata")๋ก ์ง์นญ๋๋ค.
์๋๋ src_user_event.sql์ ์์์ด๋ค.
-> models ์๋์ ๋ค๋ฅธ ํ์ผ๋ค๋ ์ ์ ํ๊ฒ ๋ณ๊ฒฝํด์ผํ๋ค.
WITH src_user_event AS(
SELECT * FROM {{ source("urface", "event") }}
)
SELECT
user_id,
....
FROM
src_user_event
tables:
- name: event
identifier: user_event
loaded_at_field: datastamp
freshness:
warn_after: { count: 1, period: hour }
error_after: { count: 24, period: hour }
-> ์ง๊ธ raw_data.user_event ํ ์ด๋ธ์์ datestamp์ ์ต๋๊ฐ์ด ํ์ฌ ์๊ฐ๋ณด๋ค 1์๊ฐ ์ด์ ๋ค์ณ์ ์์ง๋ง 24์๊ฐ์ด ์๋๋ผ๋ฉด Warning, 24์๊ฐ ์ด์์ด๋ผ๋ฉด ERROR
โ ๋จผ์ snapshots ํด๋์ ํ๊ฒฝ์ค์ ์ด ๋จ
โ snapshots์ ํ๋ ค๋ฉด ๋ฐ์ดํฐ ์์ค๊ฐ ์ผ์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผํจ
โ Primary key๊ฐ ์กด์ฌํด์ผํจ
โ ๋ ์ฝ๋์ ๋ณ๊ฒฝ์๊ฐ์ ๋ํ๋ด๋ ํ์์คํฌํ ํ์ (updated_at, modified_at ๋ฑ๋ฑ)
โ ๋ณ๊ฒฝ ๊ฐ์ง ๊ธฐ์ค
โ Primary key ๊ธฐ์ค์ผ๋ก ๋ณ๊ฒฝ์๊ฐ์ด ํ์ฌ DW์ ์๋ ์๊ฐ๋ณด๋ค ๋ฏธ๋์ธ ๊ฒฝ์ฐ
โ Snapshots ํ
์ด๋ธ์๋ ์ด 4๊ฐ์ ํ์์คํฌํ๊ฐ ์กด์ฌ
โ dbt_scd_id, dbt_updated_at
โ valid_from, valid_to
{% snapshot scd_user_metadata %}
{{
config(
target_schema='urface',
unique_key='user_id',
strategy='timestamp',
updated_at='updated_at',
invalidate_hard_deletes=True
)
}}
SELECT * FROM {{ source('urface', 'metadata') }}
{% endsnapshot %}
raw_data.user_metadata ์ ๋ฐ์ดํธ ์ค์ต ๊ฐ์
์์ค ํ ์ด๋ธ์ ๊ธฐ์กด ๋ ์ฝ๋ ํ๋์ age ๊ทธ๋ฃน์ ๋ณ๊ฒฝ
๊ทธ๋ฆฌ๊ณ dbt snapshot ์คํ
urface.scd_user_metadata์ ๋ ์ฝ๋ ์ถ๊ฐ๋์๋์ง ํ์ธ
์์ค ํ ์ด๋ธ์ ๊ธฐ์กด ๋ ์ฝ๋ ํ๋์ age ๊ทธ๋ฃน์ ๋ณ๊ฒฝ
SELECT *
FROM raw_data.user_metadata
WHERE user_id = 99;
UPDATE raw_data.user_metadata
SET age = '20-29', updated_at = GETDATE()
WHERE user_id = 99;
dbt snapshot ์คํ
urface.scd_user_metadata์ ๋ ์ฝ๋ ์ถ๊ฐ๋์๋์ง ํ์ธ
SELECT * FROM urface.scd_user_metadata WHERE user_id = 99;
๋ฐ์ดํฐ ํ์ง์ ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ด์ฅ ์ผ๋ฐ ํ ์คํธ (โGenericโ)
์ปค์คํ ํ ์คํธ (โSingularโ)
๊ธฐ๋ณธ ์ฒ ํ์ ๋ฌธ์์ ์์ค ์ฝ๋๋ฅผ ์ต๋ํ ๊ฐ๊น๊ฒ ๋ฐฐ์นํ์๋ ๊ฒ์ด๋ค.
๋ฌธ์ํ ์์ฒด๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
์ด๋ฅผ ๊ฒฝ๋ ์น์๋ฒ๋ก ์๋นํ๋ค.