์ด ๋ฌธ์์์๋ ๋ค์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
- ํ ์ด๋ธ ์์ฑ ์ ์ ์คํํ SQL ๋ฌธ์ ์ ์ํฉ๋๋ค.
- ํ ์ด๋ธ ์์ฑ ํ์ ์คํํ SQL ๋ฌธ์ ์ ์ํฉ๋๋ค.
- ํ ์ด๋ธ ์์ฑ ์ค์ง
- ์คํ ํ๊ทธ ์ถ๊ฐ
์์ํ๊ธฐ ์ ์
Google Cloud ์ฝ์์์ Dataform ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ ์ฅ์๋ฅผ ์ ํํ๊ฑฐ๋ ๋ง๋ญ๋๋ค.
๊ฐ๋ฐ ์์ ๊ณต๊ฐ์ ์ ํํ๊ฑฐ๋ ๋ง๋ญ๋๋ค.
๋ค์ ์ ํ ์ค ํ๋์ SQLX ํ์ผ์ ์ ์ํฉ๋๋ค.
ํ์ํ ์ญํ
์ด ๋ฌธ์์ ์์
์ ์๋ฃํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ์์
๊ณต๊ฐ์ ๋ํ Dataform ํธ์ง์ (roles/dataform.editor
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ํตํด ํ์ํ ๊ถํ์ ์ป์ ์๋ ์์ต๋๋ค.
ํ ์ด๋ธ ์์ฑ ์ ์ ์คํํ SQL ๋ฌธ ์ ์
BigQuery์์ ์ ํํ ํ
์ด๋ธ์ ๋ง๋ค๊ธฐ ์ ์ ํ๋ ์ด์์ SQL ๋ฌธ์ ์คํํ๋๋ก Dataform์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Dataform์์ ์ ํํ ํ
์ด๋ธ์ ๋ง๋ค๊ธฐ ์ ์ SQL ๋ฌธ์ ์คํํ๋ ค๋ฉด ํ
์ด๋ธ ์ ์ SQLX ํ์ผ์ pre_operations
๋ธ๋ก์ ๋ฌธ์ ์ถ๊ฐํฉ๋๋ค.
Dataform์์ ํน์ ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ ์ ์ ์คํ๋๋ ๋ง์ถค SQL ๋ฌธ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ๋ฐ ์์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ์ผ ์ฐฝ์์
definitions/
๋ฅผ ํผ์นฉ๋๋ค. - SQLX ํ ์ด๋ธ ์ ์ ํ์ผ์ ์ฝ๋๋ค.
config
๋ธ๋ก ์ธ๋ถ์pre_operations { ... }
๋ฅผ ์ ๋ ฅํฉ๋๋ค.pre_operations { ... }
๋ด๋ถ์ SQL ๋ฌธ์ ์ถ๊ฐํฉ๋๋ค.- ์ ํ์ฌํญ: ์ฌ๋ฌ ๋ฌธ์ ์ถ๊ฐํ๋ ค๋ฉด
---
๋ก ๊ตฌ๋ถํ์ธ์. - (์ ํ์ฌํญ): ํ์์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ์ฝ๋ ์ํ์ select ๋ฌธ์์ ์ฌ์ฉํ ์ ์๋ ์์ ํจ์๋ฅผ ๋ง๋๋ pre_operations
๋ฌธ์ ๋ณด์ฌ์ค๋๋ค.
pre_operations {
CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
RETURNS FLOAT64
AS ((x + 4) / y);
}
ํ ์ด๋ธ ์์ฑ ํ์ ์คํํ SQL ๋ฌธ ์ ์
BigQuery์์ ์ ํํ ํ
์ด๋ธ์ ๋ง๋ ํ์ ํ๋ ์ด์์ SQL ๋ฌธ์ ์คํํ๋๋ก Dataform์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Dataform์์ ์ ํํ ํ
์ด๋ธ์ ๋ง๋ ํ์ SQL ๋ฌธ์ ์คํํ๋ ค๋ฉด ํ
์ด๋ธ ์ ์ SQLX ํ์ผ์ post_operations
๋ธ๋ก์ ๋ฌธ์ ์ถ๊ฐํฉ๋๋ค. post_operations
๋ธ๋ก์ SQL ๋ฌธ์ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Dataform์์ ํน์ ํ ์ด๋ธ์ ๋ง๋ ํ์ ์คํ๋๋ ๋ง์ถค SQL ๋ฌธ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ๋ฐ ์์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ์ผ ์ฐฝ์์
definitions/
๋ฅผ ํผ์นฉ๋๋ค. - SQLX ํ ์ด๋ธ ์ ์ ํ์ผ์ ์ฝ๋๋ค.
config
๋ธ๋ก ์ธ๋ถ์post_operations { ... }
๋ฅผ ์ ๋ ฅํฉ๋๋ค.post_operations { ... }
๋ด๋ถ์ SQL ๋ฌธ์ ์ถ๊ฐํฉ๋๋ค.- (์ ํ์ฌํญ): ํ์์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ์ฝ๋ ์ํ์ ์์ฑ๋ ํ
์ด๋ธ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๊ทธ๋ฃน์ ๋ถ์ฌํ๋ post_operations
๋ฌธ์ ๋ณด์ฌ์ค๋๋ค.
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
ํ ์ด๋ธ ์์ฑ ์ค์ง
Dataform์์ BigQuery์ ์ ํํ ํ ์ด๋ธ์ ๋ง๋ค์ง ๋ชปํ๋๋ก ํ๋ ค๋ฉด SQLX ํ ์ด๋ธ ์ ์ ํ์ผ์์ ํ ์ด๋ธ์ ์ฌ์ฉ ์ค์งํ๋ฉด ๋ฉ๋๋ค. Dataform์ ์ฌ์ฉ ์ค์ง๋ ํ ์ด๋ธ์ ์ข ์ ํญ๋ชฉ ๊ทธ๋ํ์ ์ ์งํ์ง๋ง ์ปดํ์ผ ๋ฐ ์์ฑ์ ์ํํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ ์ด๋ธ์ด ์คํจํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋์ ์ ์ฒด ์ํฌํ๋ก๊ฐ ์คํจํ์ง ์๊ฒ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ด ๋ฐฉ๋ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
ํ๋ฅผ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ๋ฐ ์์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ์ผ ์ฐฝ์์
definitions/
๋ฅผ ํผ์นฉ๋๋ค. - SQLX ํ ์ด๋ธ ์ ์ ํ์ผ์ ์ ํํฉ๋๋ค.
- ํ์ผ์
config
๋ธ๋ก์disabled: true
์ ์ ๋ ฅํฉ๋๋ค. - (์ ํ์ฌํญ): ํ์์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ์ฝ๋ ์ํ์ ์ฌ์ฉ ์ค์ง๋ ํ ์ด๋ธ์ ๋ณด์ฌ์ค๋๋ค.
config {
type: "table",
disabled: true
}
select * from ${ref("source_data")}
์คํ ํ๊ทธ ์ถ๊ฐ
์ด ์น์ ์์๋ Dataform Core SQLX ํ์ผ์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ์ํฌํ๋ก๋ฅผ ๋ถ๋ฅํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ํฌํ๋ก์ ๊ตฌ์ฑ์์๋ฅผ ์ปฌ๋ ์ ์ผ๋ก ์ ๋ฆฌํ๋ ค๋ฉด ๋ค์ ์ ํ์ SQLX ํ์ผ์ ๋ง์ถค ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
table
view
incremental
assertion
operations
์ํฌํ๋ก ์คํ ์ค์ ์ ํํ ํ๊ทธ๊ฐ ์๋ ํ์ผ๋ง ์คํํ ์ ์์ต๋๋ค.
Cloud Composer ๋๋ Workflows์ Cloud Scheduler๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ ํ๊ทธ๊ฐ ์๋ Dataform ์ํฌํ๋ก๋ฅผ ํน์ ๊ฐ๊ฒฉ์ผ๋ก ์คํํ๋ ์ผ์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๊ทธ ์ถ๊ฐ
SQLX ํ์ผ์ ์ฌ๋ฌ ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
SQLX ํ์ผ์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ๋ฐ ์์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ์ผ ์ฐฝ์์
definitions/
๋ฅผ ํผ์นฉ๋๋ค. - SQLX ํ์ผ์ ์ ํํฉ๋๋ค.
config
๋ธ๋ก์ ๋ค์ ํ์์ผ๋ก ํ๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.tags: ["CUSTOM_TAG"]
CUSTOM_TAG
๋ฅผ ํ๊ทธ๋ก ๋ฐ๊ฟ๋๋ค.(์ ํ์ฌํญ): ์ฌ๋ฌ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ผํ(
,
)๋ก ๊ตฌ๋ถํฉ๋๋ค.(์ ํ์ฌํญ): ํ์์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ์ฝ๋ ์ํ์ daily
๋ฐ hourly
ํ๊ทธ๊ฐ ์๋ user_counts
๋ทฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
config {
type: "view",
name: "user_counts",
tags: ["daily", "hourly"]
}
๋ค์ ๋จ๊ณ
workflow_settings.yaml
์์ Dataform ์ค์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด Dataform ์ํฌํ๋ก ์ค์ ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ์ธ์.- ์ด์ค์ ์ผ๋ก ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ํ์ง ํ ์คํธ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- include๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ include๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์ ์ฅ์์์ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ฐธ๊ณ ํ์ธ์.
- ์คํ์ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์๋์ผ๋ก ์คํ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- Dataform์์ BigQuery ์ ์ฑ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ด ์ก์ธ์ค ์ ์ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.