728x90
๋ฐ์ํ
๐ ๋ชฉ์ฐจ
- DQ ํด ํ๋์ ๋ณด๋ ์ง๋
- ์คํ์์ค DQ ํด
- ํด๋ผ์ฐ๋ / ์์ฉ DQ ํด
- ํ์ดํ๋ผ์ธ ๋ด์ฅํ DQ
- ์ด๋ค ํด์ ์ ํํด์ผ ํ๋? (์ถ์ฒ ์กฐํฉ)
1๏ธโฃ DQ ํด ํ๋์ ๋ณด๋ ์ง๋
๊ตฌ๋ถ๋ชฉ์
| ์คํ์์ค | ๋ฃฐ ๊ธฐ๋ฐ DQ, ํ ์คํธ ์๋ํ |
| ํด๋ผ์ฐ๋ | ๊ด๋ฆฌํ DQ, ๋๊ท๋ชจ ๋ชจ๋ํฐ๋ง |
| ํ์ดํ๋ผ์ธ | ETL ์ค ์ค์๊ฐ ์ฐจ๋จ |
| ๊ด์ธก(Observability) | ์ด์ ํ์ง·๋์๋ณด๋ |



2๏ธโฃ ์คํ์์ค DQ ํด (DE๊ฐ ๊ฐ์ฅ ๋ง์ด ์)
๐น Great Expectations
๊ฐ์ฅ ๋ํ์ ์ธ DQ ํด
- SQL / Spark / Pandas ์ง์
- row count, null, range, uniqueness
- Airflow ์ฐ๋ ์ฌ์
- ํ ์คํธ ์ฝ๋์ฒ๋ผ DQ ์์ฑ
๐ ์ธ์ ์ฐ๋?
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค + ๋ฐฐ์น ํ์ดํ๋ผ์ธ
๐น Soda
๋ชจ๋ํฐ๋ง ์ค์ฌ DQ
- YAML ๊ธฐ๋ฐ ๋ฃฐ ์ ์
- ์ด์ ํ์ง(anomaly detection)
- Slack ์๋ฆผ ๊ฐ๋ ฅ
๐ ์ธ์ ์ฐ๋?
์ง์์ ๋ชจ๋ํฐ๋ง, ์ด์ ํ๊ฒฝ
๐น Apache Deequ
๋์ฉ๋ Spark DQ ์ต๊ฐ์
- Amazon ๊ฐ๋ฐ
- ํต๊ณ ๊ธฐ๋ฐ DQ
- ์์ญ์ต row ์ฒ๋ฆฌ ๊ฐ๋ฅ
๐ ์ธ์ ์ฐ๋?
Spark / EMR / Glue ํ๊ฒฝ
3๏ธโฃ ํด๋ผ์ฐ๋ / ์์ฉ DQ ํด
๐น Monte Carlo
“๋ฐ์ดํฐ ์ด์ ์๋ฆผ ๋ํ์”
- row count, freshness, schema ๋ณ๊ฒฝ ์๋ ๊ฐ์ง
- SQL ์์ด๋ ์ด์ ํ์ง
- ๊ฐ๊ฒฉ ๋น์ ๐ธ
๐ ์ธ์ ์ฐ๋?
๋๊ธฐ์ / ์ ์ฌ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง
๐น BigQuery
- INFORMATION_SCHEMA ๊ธฐ๋ฐ DQ
- row count / freshness ์ฒดํฌ
- Google Cloud ํ๊ฒฝ์ ์ต์
๐น AWS Glue Data Quality
- Glue ETL์ ๋ด์ฅ
- ๊ท์น ๊ธฐ๋ฐ ๊ฒ์ฆ
- S3 + Glue ์ฌ์ฉ์์๊ฒ ํธํจ


4๏ธโฃ ํ์ดํ๋ผ์ธ ๋ด์ฅํ DQ
๐น Apache Airflow
- DQ๋ฅผ Task๋ก ๋ถ๋ฆฌ
- ์คํจ ์ downstream ์ฐจ๋จ
- Slack / Email ์๋ฆผ
๐น dbt
๋ถ์ ์ชฝ DQ ํ์ค
- not_null / unique / accepted_values
- ํ ์คํธ = DQ
- ๋ฌธ์ํ ์๋
๐ ๋จ์ :
๋์ฉ๋·์ค์๊ฐ DQ๋ ํ๊ณ
5๏ธโฃ ์ด๋ค ํด์ ์ ํํด์ผ ํ๋? โญ
โ ๊ฐ์ฅ ํํ ์ค๋ฌด ์กฐํฉ
๐ข ์คํํธ์ / ์๊ท๋ชจ
- dbt + SQL
- Great Expectations
๐ก ์ค๊ฒฌ / ์ฑ์ฅ ๋จ๊ณ
- Airflow + Great Expectations
- Soda (๋ชจ๋ํฐ๋ง)
๐ต ๋๊ท๋ชจ / ์ํฐํ๋ผ์ด์ฆ
- Spark + Deequ
- Monte Carlo
๐ฏ ํต์ฌ ์์ฝ
DQ ํด์ “๊ฒ์ฆ” + “๊ฐ์ง” + “์ฐจ๋จ”์ ์ด๋๊น์ง ํ ๊ฑฐ๋์ ์ ํ
- ๋ฃฐ ๊ธฐ๋ฐ → Great Expectations
- ๋ชจ๋ํฐ๋ง → Soda / Monte Carlo
- ๋์ฉ๋ → Deequ
- ๋ถ์ ์ค์ฌ → dbt
728x90
๋ฐ์ํ
'DataEngineering > Data Quality' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| GE ์ค์ ์ฝ๋ ์์ (0) | 2026.02.01 |
|---|---|
| GE(Great Expectations) ์ด๋? (0) | 2026.02.01 |
| Data Quality ๊ฒ์ฆ์ ์ด๋ป๊ฒ ํ๋๊ฐ? (0) | 2026.02.01 |
| DQ(Data Quality)๋? (0) | 2026.02.01 |