Skip to content

pjw74/Data_Industry_Trends_Visualization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

65 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Data_Industry_Trends_Visualization

2ํŒ€ 2์กฐ ์ฑ„์šฉ๊ด€๋ จ API๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ง์ข… ์ผ์ž๋ฆฌ ๋ถ„์„

ํŒ€์› ๋ฐ ์—ญํ• 

๊น€์ฐฝ๋ฏผ : ๋ฐ์ดํ„ฐ GCS ์ ์žฌ ๋ฐ ์ž๋™ํ™” (airflow -dag ํ™œ์šฉ)
๋ฐ•๊ฒฝ๋ชจ : ๋ฐ์ดํ„ฐ GCS ์ ์žฌ ๋ฐ ์ž๋™ํ™” (airflow -dag ํ™œ์šฉ)
๋ฐ•์ •์šฐ : ๋ฐ์ดํ„ฐ GCS ์ ์žฌ ๋ฐ ์ž๋™ํ™” (airflow -dag ํ™œ์šฉ)
๊น€ํƒœ์ค€ : GCP ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ ์ž๋™ํ™” (GCS, workflow, Bigquery) (airflow -dag ํ™œ์šฉ)
์ž„ํ˜•์šฐ : DB ๋ชจ๋ธ๋ง, ๋ฐ์ดํ„ฐ ๋ถ„์„, ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ• ๋ฐ ์ž๋™ํ™” (airflow -dag ํ™œ์šฉ)

์‚ฌ์šฉ ๊ธฐ์ˆ 

๋ถ„์•ผ ๊ธฐ์ˆ 
์–ธ์–ด Python
ํด๋ผ์šฐ๋“œ docker, airflow, GCP
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ apache-airflow, pandas
ํ˜‘์—…ํˆด slack, JIRA, Github
๋ฐ์ดํ„ฐ API Saramin API, Google trend API
๋Œ€์‹œ๋ณด๋“œ Looker

๊ฐœ์š”

์‚ฌ๋žŒ์ธ์—์„œ ์žฌ๊ณตํ•˜๋Š” API์™€ ๋‹ค๋ฅธ ์ฑ„์šฉ ์ •๋ณด๋“ค์„ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๋ฐ๋ธŒ์ฝ”์Šค ์ž์ฒด์˜ ์˜๋ฏธ์™€ ๋ชฉํ‘œ์ธ ์ทจ์—… ๋˜๋Š” ์ผ์ž๋ฆฌ์ „๋ง, ์œ ๋ง์ง์ข… ์—ฌ๋ถ€ ๋“ฑ์˜ ์ •๋ณด์™€ ์ถ”๊ฐ€๋กœ ๊ฒ€์ƒ‰๋Ÿ‰, ์ž๊ฒฉ์ฆ ์ทจ๋“ ํ˜„ํ™ฉ ๋“ฑ์„ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค.

์„ค์ •ํ•œ ์ง€ํ‘œ ๋ชฉํ‘œ

  • ์ „์ฒด ์ฑ„์šฉ ์‹œ์žฅ์—์„œ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด, ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€, ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ์— ๋Œ€ํ•œ ์ฑ„์šฉ๋Ÿ‰์˜ ๋ณ€ํ™”๋ฅผ ์‹œ๊ฐํ™”
  • ๊ฐ ์‹ ์ž… ์ฑ„์šฉ, ์ฑ„์šฉํ•˜๋Š” ์‚ฐ์—…๋ถ„์•ผ, ์ฑ„์šฉ ์ง€์—ญ ๋“ฑ์˜ ๊ด€์ ์œผ๋กœ ์ฑ„์šฉ๋Ÿ‰์˜ ๋ณ€ํ™” ํŒŒ์•…์ด ์‰ฝ๋„๋ก ์‹œ๊ฐํ™”
  • ์ฑ„์šฉ์ •๋ณด ์™ธ์—๋„ ๋ฐ์ดํ„ฐ ๋˜๋Š” IT๋ถ„์•ผ์— ๊ด€๋ จ๋œ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰๋Ÿ‰, ๊ด€๋ จ ์ž๊ฒฉ์ฆ ์‘์‹œ/์ทจ๋“ ์—ฌ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์‹œ๊ฐํ™”

๊ธฐ๋Œ€ ํšจ๊ณผ

  • ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ์ธ๋ ฅ ์ˆ˜์š” ๋ณ€ํ™”๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ์ง์ข…์— ๋Œ€ํ•œ ๋™ํ–ฅ๊ณผ ์ดํ›„ ์ „๋ง์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ.
  • ์›ํ•˜๋Š” ์‚ฐ์—…๋ถ„์•ผ๋‚˜ ์ง€์—ญ์— ๋Œ€ํ•ด ์ผ์ž๋ฆฌ ๊ณต๊ธ‰์ด ์–ด๋А์ •๋„์ธ์ง€ ํŒŒ์•…ํ•˜์—ฌ ๊ฐœ์ธ์˜ ์ทจ์—…๊ณ„ํš์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์ธ ๊ณ„ํš์„ ์„ธ์šฐ๋Š”๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ.
  • ๊ฒ€์ƒ‰๋Ÿ‰์— ๋Œ€ํ•œ ๋ณ€ํ™”๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜์ธ๋“ค ์ „์ฒด์˜ ๊ด€์‹ฌ๋„๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ.
  • ์ž๊ฒฉ์ฆ ๋ฐ์ดํ„ฐ๋Š” ํ•ด๋‹น ๋ถ„์•ผ์— ๋Œ€ํ•ด์„œ ์ง์ ‘์ ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์ „๋ฌธ ์ธ๋ ฅ์˜ ์ˆ˜์— ๋Œ€ํ•ด์„œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ.
  • ์ด๋Ÿฐ [๊ฒ€์ƒ‰๋Ÿ‰, ์ž๊ฒฉ์ฆ, ์ฑ„์šฉ]. ์„ธ ๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ด€์„ฑ์„ ํŒŒ์•…ํ•˜๊ณ  ์ข€ ๋” ์œ ์˜๋ฏธํ•œ ๋ถ„์„์ด ๊ฐ€๋Šฅ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•จ.

๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ œ์ โญ

  • ์‚ฌ๋žŒ์ธ API๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ API๋Š” ๊ฐœ์ธ์—๊ฒŒ ์˜คํ”ˆํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์•„์˜ˆ ์ œ๊ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์‚ฌ๋žŒ์ธ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ง„ํ–‰
  • ์‚ฌ๋žŒ์ธ ์ฑ„์šฉ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๊ฐ€ 17000๊ฐœ ์ •๋„์˜ ๋ฐ์ดํ„ฐ์—์„œ ์•„๋ž˜ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์•˜์œผ๋ฉฐ, ์›”๋ณ„๋กœ๋Š” 23๋…„ 5์›”์˜ ๋ฐ์ดํ„ฐ๋งŒ 12000๊ฐœ๋กœ ์ „์ฒด์˜ 70%๋ฅผ ์ฐจ์ง€ํ•˜์—ฌ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ์—๋Š” ๋ถ€์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํŒ๋‹จ
    • 2023๋…„ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ํ•œ์ •ํ•˜์—ฌ, ๋ชจ๋‘ ํ˜„์žฌ์ƒํƒœ์˜ ์ง€ํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•จ.
    • ์ด๋กœ ์ธํ•ด์„œ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๊ฒ€์ƒ‰๋Ÿ‰, ์ž๊ฒฉ์ฆ ๋“ฑ์˜ ์™ธ๋ถ€ ์š”์ธ๊ณผ์˜ ์—ฐ๊ด€์„ฑ์„ ๋„์ถœํ•  ์ˆ˜ ์—†์Œ.
์—ฐ๋„ ๋ฐ์ดํ„ฐ ์ˆ˜
2023 16136
2022 937
2021 152
2020 1
2018 1

Workflow

image

ETL ๊ณผ์ •

ETL ์„œ๋ฒ„ ์ƒ์„ฑ(Google Compute Engine)

GCP์˜ VM instance๋ฅผ ํ™œ์šฉ, ETL ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑ

Setting

  • e2-medium
  • debian-11-bullseye-v20230509 ์‚ฌ์šฉ
  • linux ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰

Cronjob์œผ๋กœ ์Šค์ผ€์ฅด

๏ฟฝCronjob ์„ธํŒ…

  • linux ์‹œ์Šคํ…œ์ธ Cronjob์„ ํ™œ์šฉํ•ด์„œ 30๋ถ„ / 1์‹œ๊ฐ„๋งˆ๋‹ค ETL ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ ์ง„ํ–‰
  • ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ์˜ ๋กœ๊ทธ๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋Š” ์‹(์™ธ๋ถ€์˜ DB๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด ์ข‹์„๋“ฏ)

๋ชจ๋‹ˆํ„ฐ๋ง

  • ์Šคํฌ๋ฆฝํŠธ ์‹คํŒจ / ๋ฐ์ดํ„ฐ ์ ์žฌ ์‹คํŒจ / ์ธ์Šคํ„ด์Šค ๋‹ค์šด ์— ๋Œ€ํ•ด์„œ ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ํ•ด๋‹น ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐ SLACK์œผ๋กœ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ธ์Šคํ„ด์Šค ๋‹ค์šด(์„œ๋ฒ„ ์ธก๋ฉด)์—์„œ๋Š” ์„ธ๋ถ€์ ์œผ๋กœ CPU ์‚ฌ์šฉ๋Ÿ‰ / ๋‚จ์€ ๋””์Šคํฌ ์šฉ๋Ÿ‰ / ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์—ฌ๋ถ€(ํ—ฌ์Šค์ฒดํฌ) / ํ™œ์„ฑ ํ”„๋กœ์„ธ์Šค ์ˆ˜ ์˜ ํฌ๊ฒŒ 4๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ํ™•์ธ
  • Airflow ๋กœ๊ทธ๊ฐ€ ์Œ“์—ฌ์„œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋œ ์ด๋ ฅ์ด ์žˆ์—ˆ๊ณ , ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ฉˆ์ถ”๋ฉด์„œ ๋„คํŠธ์›Œํฌ์™€ ์—ฐ๊ฒฐ๋œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ๋“ค์ด ๋ฉˆ์ถ”๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์ข€ ๋” ๋‹ค์–‘ํ•œ ์ „๋žต์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•จ.

์ฑ„์šฉ๊ณต๊ณ  API ETL

DAG

  • API to Cloud, Cloud to Cloud DAG ๊ตฌํ˜„
    • ์ด์ „์— ์šด์˜ํ•˜๋˜ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๊ฐ€ ์ž์› ๋ฌธ์ œ๋กœ ์ธ์Šคํ„ด์Šค ์ข…๋ฃŒ๋˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ
      • ์„œ๋ฒ„์— ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ, ์ฝ”๋“œ ๋“ฑ ๋ณด์กด์„ ์œ„ํ•ด Storage์— ๋ชจ๋“  ๋‚ด์šฉ์„ ์ ์žฌํ•˜๋„๋ก ํ•จ
      • ์ด์ „์— API๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ์‹œ์ ๋ถ€ํ„ฐ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์˜ DAG ์ž‘์„ฑ
      • ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ฒŒ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์— ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  API์—์„œ ๋ฐ›์•„์˜จ ์ •๋ณด๋ฅผ ๋ฐ”๋กœ Cloud๋กœ, Cloud์˜ ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•œ ํ›„ Cloud๋กœ ์ ์žฌํ•˜๋Š” DAG ์ƒ์„ฑ
    • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์— ๋ฐ˜์‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ฝ”๋“œ ์ˆ˜์ •
      • API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๊ฐ€ ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„
      • API์—์„œ ์ถ”์ถœํ•œ ์›์‹œ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์Šคํ† ๋ฆฌ์ง€์— ์ ์žฌํ•˜๋Š” DAG, ํ•ด๋‹น DAG์˜ ์™„๋ฃŒ task๋กœ๋ถ€ํ„ฐ trigger๋ฅผ ๋ฐ›์•„ BigQuery์— ์ ์žฌํ•˜๊ธฐ ๋ช…ํ™•ํ•œ CSVํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” DAG 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ETL ๊ณผ์ • ๊ตฌํ˜„

API to Cloud DAG graph

  • ํ•œ๋‹ฌ๊ฐ„ ์Šค์ผ€์ค„๋ง ๊ฒฐ๊ณผ ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ฑ„์šฉ๊ณต๊ณ ๊ฐ€ ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋Š” ์‹œ๊ฐ„ ๋‹ค์ˆ˜ ํ™•์ธ
    • API ํ˜ธ์ถœ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์šฐ์„  ํ™•์ธ
    • ์—†๋Š” ๊ฒฝ์šฐ slack์œผ๋กœ ๋ฐ”๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ  ์ข…๋ฃŒ
    • ์žˆ๋Š” ๊ฒฝ์šฐ json ํ˜•ํƒœ๋กœ ์ ์žฌ
      • ์ ์žฌ ํ›„ json์„ csv๋กœ ๋ณ€ํ™˜ํ•˜๋Š” DAG๋ฅผ trigger

Cloud to Cloud DAG graph

  • ํ˜ผ์ž ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ  API to Cloud DAG์˜ trigger๋ฅผ ๋ฐ›์•„ ๋™์ž‘
  • json ๋ฐ์ดํ„ฐ๋ฅผ csv๋กœ ๋ณ€ํ™˜ํ•ด์„œ GCS์ƒ์— ์ ์žฌ
  • ์ ์žฌ ์™„๋ฃŒ ์•Œ๋žŒ์ด ๊ตฌํ˜„๋œ ๋ถ€๋ถ„

ETL ๊ฒฐ๊ณผ ์•Œ๋ฆผ

  • Slack web hook์„ ์ด์šฉํ•ด ์•Œ๋ฆผ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • callback์„ ํ†ตํ•ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ
    • success callback : ์ถ”์ถœํ•œ ๊ณต๊ณ ๊ฐ€ ์žˆ๋Š”์ง€, ๋ช‡๊ฐœ์˜ ๊ณต๊ณ ๊ฐ€ ์ ์žฌ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ฆผ
    • failure callback : ๊ฐ task๋งˆ๋‹ค ์‹คํ–‰ ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ค ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€ ์•Œ๋ฆผ

๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ API ETL

DAG

  • API์—์„œ ์ถ”์ถœํ•œ ์›์‹œ๋ฐ์ดํ„ฐ๋ฅผ Xcom push ํ›„, ์™„๋ฃŒ task๋กœ๋ถ€ํ„ฐ trigger,
  • Xcom pullํ•˜์—ฌ tempfile์— ์ €์žฅ ํ›„ CSVํ˜•ํƒœ๋กœ ๋ณ€ํ˜• ํ›„ GCS์— ์ ์žฌํ•˜๋Š” 2๊ฐœ์˜ task๋กœ ๋‚˜๋ˆ„์–ด ETL ๊ตฌํ˜„

DAG graph

3์ฐจํ”Œ์ _๊ทธ๋ž˜ํ”„

ETL ๊ฒฐ๊ณผ ์•Œ๋ฆผ

  • ์ ์žฌ ์™„๋ฃŒ ์•Œ๋žŒ์ด ๊ตฌํ˜„๋œ ๋ถ€๋ถ„
  • Slack web hook์„ ์ด์šฉํ•ด ์•Œ๋ฆผ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ˆ˜์ง‘์— ์‹คํŒจํ•œ ํ‚ค์›Œ๋“œ ์•Œ๋žŒ

3์ฐจํ”Œ์ _์•Œ๋žŒ


ํ…Œ์ด๋ธ” ๋ชจ๋ธ๋ง

dataflow

  • staging : ๊ฒ€์ฆ ๋ฐ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋“ฑ ๋ฐ˜์˜ํ•œ ์™ธ๋ถ€ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ (csvํŒŒ์ผ)

    • recruit : csv๋กœ ์ €์žฅ๋œ API ์‘๋‹ต (์ผ์ • ์ฃผ๊ธฐ๋กœ ์Šค์ผ€์ค„๋ง ๋˜์–ด์žˆ์Œ.)
    • google_trend : csv๋กœ ์ €์žฅ๋œ ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ API ์‘๋‹ต (์ผ์ • ์ฃผ๊ธฐ๋กœ ์Šค์ผ€์ค„๋ง ๋˜์–ด์žˆ๊ณ  schema ๋ณ€๊ฒฝ์ด ์ž์ฃผ ์ผ์–ด๋‚จ)
  • external : ์—๋Ÿฌ ์‚ฌํ•ญ ์ˆ˜์ •ํ•œ ์™ธ๋ถ€ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ
    (csvํŒŒ์ผ)

    • recruit_table : csv๋กœ ์ €์žฅ๋œ API์‘๋‹ต
    • google_trend : csv๋กœ ์ €์žฅ๋œ ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ API์‘๋‹ต
    • certification : csv๋กœ ์ €์žฅ๋œ ์ž๊ฒฉ์ฆ
  • meta : ์™ธ๋ถ€ํ…Œ์ด๋ธ” ๊ฐ’์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
    (API๋ช…์„ธ ๋‚ด์šฉ)

    • experiences : ์ฑ„์šฉ ๊ฒฝ๋ ฅ์ฝ”๋“œ ์ƒ์„ธ
    • industries : ์ฑ„์šฉ ์‚ฐ์—…์ฝ”๋“œ ์ƒ์„ธ (์†Œ๋ถ„๋ฅ˜)
    • industry_categories : ์ฑ„์šฉ ์‚ฐ์—…์ฝ”๋“œ ์ƒ์„ธ (๋Œ€๋ถ„๋ฅ˜)
    • job_codes : ์ฑ„์šฉ ํ‚ค์›Œ๋“œ
    • location : ์ฑ„์šฉ ์ง€์—ญ ์ƒ์„ธ
  • core : externalํ…Œ์ด๋ธ”์—์„œ Looker์šฉ ํ…Œ์ด๋ธ”๋กœ ์ฒ˜๋ฆฌ๋œ ํ…Œ์ด๋ธ”

    • recruit : ์ „์ฒด ์ฑ„์šฉ ์ •๋ณด
    • datajob : ๋ฐ์ดํ„ฐ์ง์ข… ์ฑ„์šฉ ์ •๋ณด
    • google_trend : ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ ๊ฒ€์ƒ‰๋Ÿ‰ ํ…Œ์ด๋ธ”
    • certification : ์ž๊ฒฉ์ฆ ์ทจ๋“ ํ˜„ํ™ฉ ํ…Œ์ด๋ธ”

ELT ๊ณผ์ •

ELT flow

  1. GCS ๋‚ด ์ ์žฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋Š” ์Šค์ผ€์ค„๋ง ๋˜์–ด ๋งค๋ฒˆ ์ ์žฌ๋˜๊ณ  ์ผ๋ถ€๋Š” ๋ฐ์ดํ„ฐ์…‹ ์ „์ฒด๋กœ ์ ์žฌ
  2. GCS -> Bigquery ๊ณผ์ •์—์„œ staging ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ task grid ์ž‘์„ฑ image
  3. ํ•ด๋‹น task (check_table๋ช…)์„ ํ†ตํ•ด query๋กœ 2์ฐจ ๊ฒ€์ฆ์„ ๊ฑฐ์ณ Bigquery-external๋กœ ์ ์žฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ฒดํฌ
  • ๊ธฐ์กด cloud function ํ™œ์šฉํ•œ schedule -> schedule_interval ์ฒ˜๋ฆฌ
  • GCSToBigQueryOperator, BigQueryOperator, BigQueryCheckOperator ๋“ฑ ํ™œ์šฉํ•ด data flow ์ƒ์„ฑ ๋ฐ validation ์ง„ํ–‰
  • create, check task ์‹คํ–‰ ์‹œ sql๋ฌธ์œผ๋กœ validation

ELT ๊ฒฐ๊ณผ ์•Œ๋ฆผ

  • slack webhook token, email ํ™œ์šฉํ•ด ๊ฐ ํƒœ์Šคํฌ ๋ณ„ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€ ํ™•์ธ
  • ๋งค 3์‹œ๊ฐ„ ๋งˆ๋‹ค checking ํ•˜์—ฌ ์ž‘์—… ํ™•์ธ

๋Œ€์‹œ๋ณด๋“œ

dashboard

์ถ”๊ฐ€ ์ œ์ž‘ํ•œ ๊ฒ€์ƒ‰์šฉ ๋Œ€์‹œ๋ณด๋“œ

dashboard2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5