เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต
เดเดคเต เดคเดคเตเดตเด™เตเด™เดณเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต?

เดฌเต‹เดฏเดฟเดฒเตผ เดชเตเดฒเต‡เดฑเตเดฑเต เด•เต‹เดกเดฟเดจเตเดฑเต† เด…เดญเดพเดตเดคเตเดคเดฟเตฝ เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเตเด‚ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดฒเตเด‚ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด•. เด’เดฐเต เด•เต‹เดกเตเดฌเต‡เดธเต เด†เดฏเดฟ DWH เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: เดชเดคเดฟเดชเตเดชเดฟเด‚เด—เต, เด…เดตเดฒเต‹เด•เดจเด‚, เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต, CI. เดฎเต‹เดกเตเดฒเดพเตผ, เดŽเด•เตเดธเตเดฑเตเดฑเตปเดธเดฟเดฌเดฟเตพ, เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต, เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ. เด‰เดชเดฏเต‹เด•เตเดคเตƒ-เดธเต—เดนเตƒเดฆ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เดกเดฟเดชเตปเดกเตปเดธเดฟ เดตเดฟเดทเตเดตเดฒเตˆเดธเต‡เดทเดจเตเด‚ (เดกเดพเดฑเตเดฑ เดฒเตˆเดจเต‡เดœเต).

เด‡เดคเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเด‚ เดฌเดฟเด—เต เดกเดพเดฑเตเดฑ & เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เด‡เด•เตเด•เต‹เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดกเดฟเดฌเดฟเดŸเดฟเดฏเตเดŸเต† เดชเด™เตเด•เดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเด‚ เด•เต‚เดŸเตเดคเตฝ - เดชเต‚เดšเตเดšเดฏเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดพเด—เดคเด‚.

ะ’ัะตะผ ะฟั€ะธะฒะตั‚

เด†เตผเดŸเตเดŸเต†เดฎเดฟ เด•เต‹เดธเดฟเตผ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. 5 เดตเตผเดทเดคเตเดคเดฟเดฒเต‡เดฑเต†เดฏเดพเดฏเดฟ เดžเดพเตป เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด•เตพ, ETL/ELT เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตฝ, เดกเดพเดฑเตเดฑเดพ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต, เดตเดฟเดทเตเดตเดฒเตˆเดธเต‡เดทเตป เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดžเดพเตป เด‡เดชเตเดชเต‹เตพ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดตเต€เดฒเดฟ, เดžเดพเตป เด’เดฐเต เด•เต‹เดดเตเดธเดฟเตฝ OTUS เตฝ เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต เดกเดพเดฑเตเดฑ เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ, เด‡เดจเตเดจเต เดžเดพเตป เดคเตเดŸเด•เตเด•เด‚ เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเต เดŽเดดเตเดคเดฟเดฏ เด’เดฐเต เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เดฟเดŸเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต เด•เต‹เดดเตเดธเดฟเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดŽเตปเดฑเต‹เตพเดฎเต†เดจเตเดฑเต.

เดนเตเดฐเดธเตเดต เด…เดตเดฒเต‹เด•เดจเด‚

DBT เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเต ELT (เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตเดฑเตเดฑเต - เดŸเตเดฐเดพเตปเดธเตโ€Œเดซเต‹เด‚ - เดฒเต‹เดกเต) เดŽเดจเตเดจ เดšเตเดฐเตเด•เตเด•เดชเตเดชเต‡เดฐเดฟเดฒเต† เดŸเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต.

BigQuery, Redshift, Snowflake เดคเตเดŸเด™เตเด™เดฟเดฏ เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดคเดฏเตเดณเตเดณเดคเตเด‚ เด…เดณเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเดฎเดพเดฏ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเด•เตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเตเดŸเต† เดตเดฐเดตเต‹เดŸเต†, เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเตฝ เด…เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ. 

DBT เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดฒเต‡เด•เตเด•เต (เด†เดจเตเดคเดฐเดฟเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฌเดพเดนเตเดฏ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเตฝ) เด‡เดคเดฟเดจเด•เด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เด…เดตเดธเดฐเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต.

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต
เดกเดฟเดฌเดฟเดŸเดฟเดฏเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดฒเด•เตเดทเตเดฏเด‚ เด•เต‹เดกเต เดŽเดŸเตเด•เตเด•เตเด•, เด…เดคเต SQL-เดฒเต‡เด•เตเด•เต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเด•, เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต.

DBT เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด˜เดŸเดจ

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ 2 เดคเดฐเด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเด•เดณเตเด‚ เดซเดฏเดฒเตเด•เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดฎเต‹เดกเตฝ (.sql) - เด’เดฐเต SELECT เดšเต‹เดฆเตเดฏเด‚ เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดชเดฐเดฟเดตเตผเดคเตเดคเดจ เดฏเต‚เดฃเดฟเดฑเตเดฑเต
  • เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ (.yml) - เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ, เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ, เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ, เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป

เด…เดŸเดฟเดธเตเดฅเดพเดจ เดคเดฒเดคเตเดคเดฟเตฝ, เดœเต‹เดฒเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดเดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดเดกเดฟเด‡เดฏเดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดฎเต‹เดกเตฝ เด•เต‹เดกเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเต
  • CLI เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดฎเต‹เดกเดฒเตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, DBT เดฎเต‹เดกเตฝ เด•เต‹เดกเต SQL-เดฒเต‡เด•เตเด•เต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  • เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดค SQL เด•เต‹เดกเต เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ (เด—เตเดฐเดพเดซเต) เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเตฝ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

CLI-เตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดŽเดฒเตเดฒเดพเด‚ SELECT เด†เดฃเต

เด‡เดคเต เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฟเดŸเดฟเดฒเตป เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเต. เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดธเตเดฑเตเดฑเต‹เดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดธเดพเดงเต‚เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ DBT เดธเด‚เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต (เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•, เดšเต‡เตผเด•เตเด•เตเด•, เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•, เด†เตพเดŸเตเดŸเตผ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•, เด—เตเดฐเดพเดจเตเดฑเต, ... เดŽเดจเตเดจเต€ เด•เดฎเดพเตปเดกเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เตพ).

เดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑ เดธเต†เดฑเตเดฑเต เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต SELECT เดšเต‹เดฆเตเดฏเด‚ เดŽเดดเตเดคเตเดจเตเดจเดคเต เดเดคเต เดฎเต‹เดกเดฒเดฟเดฒเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดŸเตเดฐเดพเตปเดธเตเดซเต‹เตผเดฎเต‡เดทเตป เดฒเต‹เดœเดฟเด•เตเด•เต เดฎเตพเดŸเตเดŸเดฟ-เดฒเต†เดตเตฝ เด†เด•เดพเด‚, เดฎเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เดฎเต‹เดกเดฒเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดเด•เต€เด•เดฐเดฟเด•เตเด•เดพเด‚. เด’เดฐเต เด“เตผเดกเตผ เดทเต‹เด•เต‡เดธเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเต‹เดกเดฒเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ (f_orders):

{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
 
with orders as (
 
   select * from {{ ref('stg_orders') }}
 
),
 
order_payments as (
 
   select * from {{ ref('order_payments') }}
 
),
 
final as (
 
   select
       orders.order_id,
       orders.customer_id,
       orders.order_date,
       orders.status,
       {% for payment_method in payment_methods -%}
       order_payments.{{payment_method}}_amount,
       {% endfor -%}
       order_payments.total_amount as amount
   from orders
       left join order_payments using (order_id)
 
)
 
select * from final

เดจเดฎเตเด•เตเด•เต เด‡เดตเดฟเดŸเต† เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดŽเดจเตเดคเตŠเด•เตเด•เต†เดฏเดพเดฃเต?

เด†เดฆเตเดฏเด‚: CTE (เด•เต‹เดฎเตบ เดŸเต‡เดฌเดฟเตพ เดŽเด•เตเดธเตเดชเตเดฐเดทเดจเตเด•เตพ) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต - เดงเดพเดฐเดพเดณเด‚ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฒเต‹เดœเดฟเด•เตเด•เตเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด•เต‹เดกเต เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต: SQL-เดจเตเดฑเต†เดฏเตเด‚ เดญเดพเดทเดฏเตเดŸเต†เดฏเตเด‚ เดฎเดฟเดถเตเดฐเดฟเดคเดฎเดพเดฃเต เดฎเต‹เดกเตฝ เด•เต‹เดกเต Jinja (เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเด‚เด—เต เดญเดพเดท).

เด‰เดฆเดพเดนเดฐเดฃเด‚ เด’เดฐเต เดฒเต‚เดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดตเต‡เดฃเตเดŸเดฟ เดŽเด•เตโ€Œเดธเตโ€Œเดชเตเดฐเดทเดจเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เด“เดฐเต‹ เดชเต‡เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เดฐเต€เดคเดฟเด•เตเด•เตเด‚ เดคเตเด• เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เด—เดฃเด‚. เดซเด‚เด—เตเดทเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดฑเดซเดฑเตปเดธเต - เด•เต‹เดกเดฟเดจเตเดณเตเดณเดฟเตฝ เดฎเดฑเตเดฑเต เดฎเต‹เดกเดฒเตเด•เดณเต† เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต:

  • เดธเดฎเดพเดนเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดฑเดซเดฑเตปเดธเต เด’เดฐเต เดŸเต‡เดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เต‹ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดฒเต† เด•เดพเดดเตเดšเดฏเดฟเดฒเต‡เด•เตเด•เต‹ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดชเต‹เดฏเดฟเดจเตเดฑเดฑเดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด‚
  • เดฑเดซเดฑเตปเดธเต เด’เดฐเต เดฎเต‹เดกเตฝ เดกเดฟเดชเตปเดกเตปเดธเดฟ เด—เตเดฐเดพเดซเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดคเต เด†เดฏเดฟเดฐเตเดจเตเดจเต Jinja DBT-เดฏเดฟเดฒเต‡เด•เตเด•เต เดเดคเดพเดฃเตเดŸเต เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดธเดพเดงเตเดฏเดคเด•เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต. เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดต เด‡เดตเดฏเดพเดฃเต:

  • เดŽเด™เตเด•เดฟเตฝ / เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดฐเดธเตเดคเดพเดตเดจเด•เตพ - เดฌเตเดฐเดพเดžเตเดšเต เดชเตเดฐเดธเตเดคเดพเดตเดจเด•เตพ
  • เดฒเต‚เดชเตเดชเตเด•เตพเด•เตเด•เดพเดฏเดฟ
  • เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ
  • เดฎเดพเด•เตเดฐเต‹ - เดฎเดพเด•เตเดฐเต‹เด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป: เดŸเต‡เดฌเดฟเตพ, เดตเตเดฏเต‚, เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ

เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป เดธเตเดŸเตเดฐเดพเดฑเตเดฑเดœเดฟ เดŽเดจเตเดจเดคเต เด’เดฐเต เดธเดฎเต€เดชเดจเดฎเดพเดฃเต, เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดฎเต‹เดกเตฝ เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด‚.

เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เด‡เดคเต:

  • เดชเดŸเตเดŸเดฟเด• - เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดฒเต† เดซเดฟเดธเดฟเด•เตเด•เตฝ เดŸเต‡เดฌเดฟเตพ
  • เด•เดพเดฃเตเด• - เด•เดพเดฃเตเด•, เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดฒเต† เดตเต†เตผเดšเตเดตเตฝ เดชเดŸเตเดŸเดฟเด•

เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดญเต—เดคเดฟเด•เดตเตฝเด•เตเด•เดฐเดฃ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚ เด‰เดฃเตเดŸเต:

  • เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ - เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ เดฒเต‹เดกเดฟเด‚เด—เต (เดตเดฒเดฟเดฏ เดตเดธเตเดคเตเดค เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต†); เดชเตเดคเดฟเดฏ เดตเดฐเดฟเด•เตพ เดšเต‡เตผเดคเตเดคเต, เดฎเดพเดฑเตเดฑเดฟเดฏ เดตเดฐเดฟเด•เตพ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเต, เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟเดฏ เดตเดฐเดฟเด•เตพ เดฎเดพเดฏเตเดšเตเดšเต 
  • เดŽเดซเต†เดฎเดฑเตฝ - เดฎเต‹เดกเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฏเดพเดฅเดพเตผเดคเตเดฅเตเดฏเดฎเดพเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดฎเต‹เดกเดฒเตเด•เดณเดฟเตฝ เด’เดฐเต CTE เด†เดฏเดฟ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เตเดจเตเดจเต
  • เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป เดคเดจเตเดคเตเดฐเด™เตเด™เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดณเตเดณ เด…เดตเดธเดฐเด™เตเด™เดณเตเดฃเตเดŸเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:

  • เดฎเดžเตเดžเตเด•เดŸเตเดŸ: เด•เตเดทเดฃเดฟเด•เดฎเดพเดฏ เดชเดŸเตเดŸเดฟเด•เด•เตพ, เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดธเตเดตเดญเดพเดตเด‚, เดŸเต‡เดฌเดฟเตพ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเด‚เด—เต, เด—เตเดฐเดพเดจเตเดฑเตเด•เตพ เดชเด•เตผเดคเตเดคเตฝ, เดธเตเดฐเด•เตเดทเดฟเดค เด•เดพเดดเตโ€Œเดšเด•เตพ
  • เดฑเต†เดกเตเดทเต€เดฑเตเดฑเต: เดกเดฟเดธเตโ€Œเดฑเตเดฑเตโ€Œเด•เต€, เดธเต‹เตผเดŸเตเดŸเตโ€Œเด•เต€ (เด‡เดจเตเดฑเตผเดฒเต€เดตเดกเต, เด•เต‹เดฎเตเดชเต—เดฃเตเดŸเต), เดฒเต‡เดฑเตเดฑเต เดฌเตˆเตปเดกเดฟเด‚เด—เต เด•เดพเดดเตโ€Œเดšเด•เตพ
  • เดฌเดฟเด—เตเด•เตเดตเดฑเดฟ: เดŸเต‡เดฌเดฟเตพ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเด‚เด—เตเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเด‚เด—เตเด‚, เดธเตเดตเดญเดพเดตเด‚ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, KMS เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป, เดฒเต‡เดฌเดฒเตเด•เดณเตเด‚ เดŸเดพเด—เตเด•เดณเตเด‚
  • เดคเต€เดชเตเดชเต†เดพเดฐเดฟ: เดซเดฏเตฝ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต (parquet, csv, json, orc, delta), partition_by, clustered_by, buckets, incremental_strategy

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเตเด•เตพ เดจเดฟเดฒเดตเดฟเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต:

  • เดชเต‹เดธเตเดฑเตเดฑเต เด—เตเดฐเต‡เดกเตเด•เตพ
  • เดฑเต†เดกเตเดทเต€เดฑเตเดฑเต
  • เดฌเดฟเด—เตเด•เตเดตเดฑเดฟ
  • เดฎเดžเตเดžเตเด•เดŸเตเดŸ
  • เดชเตเดฐเต†เดธเตเดฑเตเดฑเต‹ (เดญเดพเด—เดฟเด•เดฎเดพเดฏเดฟ)
  • เดธเตเดชเดพเตผเด•เตเด•เต (เดญเดพเด—เดฟเด•เดฎเดพเดฏเดฟ)
  • Microsoft SQL เดธเต†เตผเดตเตผ (เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เด…เดกเดพเดชเตเดฑเตเดฑเตผ)

เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เดฎเดพเดคเตƒเด• เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚:

  • เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตฝ เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ เด†เด•เตเด•เดพเด‚ (เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ)
  • เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เดธเต†เด—เตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด•เต€เด•เดณเตเด‚ เดšเต‡เตผเด•เตเด•เดพเด‚

-- ะšะพะฝั„ะธะณัƒั€ะฐั†ะธั ะผะพะดะตะปะธ: 
-- ะ˜ะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะพะต ะฝะฐะฟะพะปะฝะตะฝะธะต, ัƒะฝะธะบะฐะปัŒะฝั‹ะน ะบะปัŽั‡ ะดะปั ะพะฑะฝะพะฒะปะตะฝะธั ะทะฐะฟะธัะตะน (unique_key)
-- ะšะปัŽั‡ ัะตะณะผะตะฝั‚ะฐั†ะธะธ (dist), ะบะปัŽั‡ ัะพั€ั‚ะธั€ะพะฒะบะธ (sort)
{{
  config(
       materialized='incremental',
       unique_key='order_id',
       dist="customer_id",
       sort="order_date"
   )
}}
 
{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
 
with orders as (
 
   select * from {{ ref('stg_orders') }}
   where 1=1
   {% if is_incremental() -%}
       -- ะญั‚ะพั‚ ั„ะธะปัŒั‚ั€ ะฑัƒะดะตั‚ ะฟั€ะธะผะตะฝะตะฝ ั‚ะพะปัŒะบะพ ะดะปั ะธะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะพะณะพ ะทะฐะฟัƒัะบะฐ
       and order_date >= (select max(order_date) from {{ this }})
   {%- endif %} 
 
),
 
order_payments as (
 
   select * from {{ ref('order_payments') }}
 
),
 
final as (
 
   select
       orders.order_id,
       orders.customer_id,
       orders.order_date,
       orders.status,
       {% for payment_method in payment_methods -%}
       order_payments.{{payment_method}}_amount,
       {% endfor -%}
       order_payments.total_amount as amount
   from orders
       left join order_payments using (order_id)
 
)
 
select * from final

เดฎเต‹เดกเตฝ เดกเดฟเดชเตปเดกเตปเดธเดฟ เด—เตเดฐเดพเดซเต

เด‡เดคเต เด’เดฐเต เด†เดถเตเดฐเดฟเดค เดตเตƒเด•เตเดทเด‚ เด•เต‚เดŸเดฟเดฏเดพเดฃเต. เด‡เดคเต DAG (เดกเดฏเดฑเด•เตเดŸเดกเต เด…เดธเตˆเด•เตเดฒเดฟเด•เต เด—เตเดฐเดพเดซเต) เดŽเดจเตเดจเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดŽเดฒเตเดฒเดพ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฎเต‹เดกเดฒเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ DBT เด’เดฐเต เด—เตเดฐเดพเดซเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต เดฎเต‹เดกเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเต‹เดกเดฒเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเดฒเต† ref() เดฒเดฟเด™เตเด•เตเด•เตพ. เด’เดฐเต เด—เตเดฐเดพเดซเต เด‰เดณเตเดณเดคเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดถเดฐเดฟเดฏเดพเดฏ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดฎเต‹เดกเดฒเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต
  • เดธเตเดฑเตเดฑเต‹เตผเดซเตเดฐเดฃเตเดŸเต เดฐเต‚เดชเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดธเดฎเดพเดจเตเดคเดฐเดตเตฝเด•เตเด•เดฐเดฃเด‚
  • เด’เดฐเต เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดธเดฌเตเด—เตเดฐเดพเดซเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต 

เด—เตเดฐเดพเดซเต เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚:

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต
เด—เตเดฐเดพเดซเดฟเดจเตเดฑเต† เด“เดฐเต‹ เดจเต‹เดกเตเด‚ เด’เดฐเต เดฎเดพเดคเตƒเด•เดฏเดพเดฃเต; เด—เตเดฐเดพเดซเดฟเดจเตเดฑเต† เด…เดฐเดฟเด•เตเด•เตพ ref เดŽเดจเตเดจ เดŽเด•เตโ€Œเดธเตโ€Œเดชเตเดฐเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเดตเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚

เดฎเต‹เดกเดฒเตเด•เตพ เดธเตเดตเดฏเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต‡, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เด…เดจเตเดฎเดพเดจเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป DBT เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต:

  • เดจเตพ เด…เดฒเตเดฒ
  • เดคเดจเดคเดพเดฏ
  • เดฑเดซเดฑเตปเดธเต เด‡เดจเตเดฑเด—เตเดฐเดฟเดฑเตเดฑเดฟ - เดฑเดซเดฑเตปเดทเตเดฏเตฝ เด‡เดจเตเดฑเด—เตเดฐเดฟเดฑเตเดฑเดฟ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด“เตผเดกเตผ เดŸเต‡เดฌเดฟเดณเดฟเดฒเต† customer_id เด‰เดชเดญเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† เดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต)
  • เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ (เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดกเดพเดฑเตเดฑเดพ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ) เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเดฃเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดฆเดฟเดตเดธเด‚, เด’เดฐเดพเดดเตเดš, เด’เดฐเต เดฎเดพเดธเด‚ เดฎเตเดฎเตเดชเตเดณเตเดณ เดธเต‚เดšเด•เด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดตเดฐเตเดฎเดพเดจเดคเตเดคเดฟเดจเตเดฑเต† % เดตเตเดฏเดคเดฟเดฏเดพเดจเด‚. เด’เดฐเต SQL เด…เดจเตเดตเต‡เดทเดฃเดฎเดพเดฏเดฟ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เดเดคเตŠเดฐเต เด…เดจเตเดฎเดพเดจเดตเตเด‚ เด’เดฐเต เดชเดฐเต€เด•เตเดทเดฃเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเด‚.

เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ, เดตเต†เดฏเตผเดนเต—เดธเต เดตเดฟเตปเดกเต‹เด•เดณเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต† เด…เดจเดพเดตเดถเตเดฏ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เดณเตเด‚ เดชเดฟเดถเด•เตเด•เดณเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฟเดŸเดฟเด•เตเด•เดพเด‚.

เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฎเต‹เดกเดฒเดฟเดฒเตเด‚ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดคเดฒเดคเตเดคเดฟเดฒเตเด‚ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑเดฏเตเด‚ เด•เดฎเดจเตเดฑเตเด•เดณเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ DBT เดจเตฝเด•เตเดจเตเดจเต. 

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดฒเต†เดตเดฒเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เดจเตเดจเต เด‡เดคเดพ:

 - name: fct_orders
   description: This table has basic information about orders, as well as some derived facts based on payments
   columns:
     - name: order_id
       tests:
         - unique # ะฟั€ะพะฒะตั€ะบะฐ ะฝะฐ ัƒะฝะธะบะฐะปัŒะฝะพัั‚ัŒ ะทะฝะฐั‡ะตะฝะธะน
         - not_null # ะฟั€ะพะฒะตั€ะบะฐ ะฝะฐ ะฝะฐะปะธั‡ะธะต null
       description: This is a unique identifier for an order
     - name: customer_id
       description: Foreign key to the customers table
       tests:
         - not_null
         - relationships: # ะฟั€ะพะฒะตั€ะบะฐ ััั‹ะปะพั‡ะฝะพะน ั†ะตะปะพัั‚ะฝะพัั‚ะธ
             to: ref('dim_customers')
             field: customer_id
     - name: order_date
       description: Date (UTC) that the order was placed
     - name: status
       description: '{{ doc("orders_status") }}'
       tests:
         - accepted_values: # ะฟั€ะพะฒะตั€ะบะฐ ะฝะฐ ะดะพะฟัƒัั‚ะธะผั‹ะต ะทะฝะฐั‡ะตะฝะธั
             values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']

เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดค เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเตฝ เดˆ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดŽเด™เตเด™เดจเต†เดฏเตเดฃเตเดŸเต†เดจเตเดจเต เด‡เดคเดพ:

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดฎเดพเด•เตเดฐเต‹เด•เดณเตเด‚ เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เดณเตเด‚

DBT เดฏเตเดŸเต† เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚ SQL เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด†เด•เตเด• เดŽเดจเตเดจเดคเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เด…เดตเดฐเตเดŸเต‡เดคเดพเดฏ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดˆ เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดถเด•เตเดคเดตเตเด‚ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเดพเตฝ เดธเดฎเตเดชเดจเตเดจเดตเตเดฎเดพเดฏ เดฎเดพเตผเด—เด™เตเด™เตพ เดจเตฝเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต.

เดฎเต‹เดกเดฒเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเดฒเต† เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเดตเตเดจเตเดจ เดจเดฟเตผเดฎเตเดฎเดพเดฃเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดชเดฆเดชเตเดฐเดฏเต‹เด—เด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด•เต‚เดŸเตเดŸเด™เตเด™เดณเดพเดฃเต เดฎเดพเด•เตเดฐเต‹เด•เตพ. DRY (Don't Repeat Yourself) เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดฟเด‚เด—เต เดคเดคเตเดตเดคเตเดคเดฟเดจเต เด…เดจเตเดธเตƒเดคเดฎเดพเดฏเดฟ เดฎเต‹เดกเดฒเตเด•เตพเด•เตเด•เตเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพเด•เตเด•เตเดฎเดฟเดŸเดฏเดฟเตฝ SQL เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดฎเดพเด•เตเดฐเต‹เด•เตพ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเดพเด•เตเดฐเต‹ เด‰เดฆเดพเดนเดฐเดฃเด‚:

{% macro rename_category(column_name) %}
case
 when {{ column_name }} ilike  '%osx%' then 'osx'
 when {{ column_name }} ilike  '%android%' then 'android'
 when {{ column_name }} ilike  '%ios%' then 'ios'
 else 'other'
end as renamed_product
{% endmacro %}

เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เดตเตเด‚:

{% set column_name = 'product' %}
select
 product,
 {{ rename_category(column_name) }} -- ะฒั‹ะทะพะฒ ะผะฐะบั€ะพัะฐ
from my_table

เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เดณเตเด‚ เดฎเดพเด•เตเดฐเต‹เด•เดณเตเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเดฑเตเดฎเดพเดฏเดพเดฃเต DBT เดตเดฐเตเดจเตเดจเดคเต.

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเตเดณเตเดณ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚:

  • dbt_utils: เดคเต€เดฏเดคเดฟ/เดธเดฎเดฏเด‚, เดธเดฑเต‹เด—เต‡เดฑเตเดฑเต เด•เต€เด•เตพ, เดธเตเด•เต€เดฎ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ, เดชเดฟเดตเดฑเตเดฑเต/เด…เตบเดชเดฟเดตเดฑเตเดฑเต เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต
  • เดชเต‹เดฒเตเดณเตเดณ เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดทเต‹เด•เต‡เดธเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เตพ เดธเตเดจเต‹เดชเตเดฒเต‹ ะธ เดตเดฐ 
  • เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเตเด•เตพเด•เตเด•เตเดณเตเดณ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ, เด‰เดฆเดพ. เดฑเต†เดกเตเดทเต€เดฑเตเดฑเต 
  • เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เดกเดฟเดฌเดฟเดŸเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเตŠเดกเตเดฏเต‚เตพ

เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเตเดŸเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดฒเดฟเดธเตเดฑเตเดฑเต เด‡เดตเดฟเดŸเต† เด•เดพเดฃเดพเด‚ dbt เดนเดฌเต.

เด…เดคเดฟเดฒเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ

เด’เดฐเต เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดžเดพเดจเตเด‚ เดŸเต€เดฎเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเต เดšเดฟเดฒ เดฐเดธเด•เดฐเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚ เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเตเด•เดณเตเด‚ เดžเดพเตป เด‡เดตเดฟเดŸเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚ เดตเต€เดฒเดฟ.

เดฑเตบเดŸเตˆเด‚ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเตเดŸเต† เดตเต‡เตผเดคเดฟเดฐเดฟเดตเต DEV - TEST - PROD

เด’เดฐเต‡ DWH เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเต‹เดฒเตเด‚ (เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเตเด•เต€เดฎเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ). เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

with source as (
 
   select * from {{ source('salesforce', 'users') }}
   where 1=1
   {%- if target.name in ['dev', 'test', 'ci'] -%}           
       where timestamp >= dateadd(day, -3, current_date)   
   {%- endif -%}
 
)

เดˆ เด•เต‹เดกเต เด…เด•เตเดทเดฐเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเดฑเดฏเตเดจเตเดจเต: เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ dev, test, ci เด•เดดเดฟเดžเตเดž 3 เดฆเดฟเดตเดธเดคเตเดคเต‡เด•เตเด•เต เดฎเดพเดคเตเดฐเด‚ เดกเดพเดฑเตเดฑ เดŽเดŸเตเด•เตเด•เตเด•, เด‡เดจเดฟ เดตเต‡เดฃเตเดŸ. เด…เดคเดพเดฏเดคเต, เดˆ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเตเด‚ เด•เตเดฑเดšเตเดšเต เดตเดฟเดญเดตเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‰เดคเตเดชเดจเตเดจเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เด…เดตเดธเตเดฅ เด…เดตเด—เดฃเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚.

เด‡เดคเดฐ เด•เต‹เดณเด‚ เดŽเตปเด•เต‹เดกเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเตป

เด“เดฐเต‹ เดจเดฟเดฐเดฏเตเด•เตเด•เตเด‚ เดกเดพเดฑเตเดฑ เด•เด‚เดชเตเดฐเดทเตป เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดจเดฟเดฐ DBMS เด†เดฃเต Redshift. เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดกเดฟเดธเตเด•เดฟเดจเตเดฑเต† เด‡เดŸเด‚ 20-50% เด•เตเดฑเดฏเตเด•เตเด•เตเด‚.

เดฎเดพเด•เตเดฐเต‹ redshift.compress_table ANALYZE COMPRESSION เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚, เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เต‹เดณเด‚ เดŽเตปเด•เต‹เดกเดฟเด‚เด—เต เด…เตฝเด—เดฐเดฟเดคเด™เตเด™เตพ, เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเต†เด—เตเดฎเต†เดจเตเดฑเต‡เดทเตป เด•เต€เด•เตพ (dist_key), เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด•เต€เด•เตพ (sort_key) เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เดชเดดเดฏ เดชเด•เตผเดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดฎเดพเด•เตเดฐเต‹ เด’เดชเตเดชเต:

{{ compress_table(schema, table,
                 drop_backup=False,
                 comprows=none|Integer,
                 sort_style=none|compound|interleaved,
                 sort_keys=none|List<String>,
                 dist_style=none|all|even,
                 dist_key=none|String) }}

เดฒเต‹เด—เดฟเด‚เด—เต เดฎเต‹เดกเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดฎเต‹เดกเดฒเดฟเดจเตเดฑเต† เด“เดฐเต‹ เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตŠเดณเตเดคเตเดคเตเด•เตพ เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเต‹เดกเดฒเดฟเดจเตเดฑเต† เดจเดฟเตผเดฎเตเดฎเดพเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดคเดฟเดจเต เดคเตŠเดŸเตเดŸเตเดชเดฟเดจเตเดจเดพเดฒเต†เดฏเต‹ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚:

   pre-hook: "{{ logging.log_model_start_event() }}"
   post-hook: "{{ logging.log_model_end_event() }}"

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑเดฏเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดฒเต‹เด—เดฟเด‚เด—เต เดฎเตŠเดกเตเดฏเต‚เตพ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚, เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดคเดŸเดธเตเดธเด™เตเด™เตพ เด“เดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เดฒเตเด•เตเด•เดฑเดฟเดฒเต† เดฒเต‹เด—เดฟเด‚เด—เต เดกเดพเดฑเตเดฑเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต:

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดฎเต†เดฏเดฟเดจเตเดฑเดจเตปเดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป

UDF (User Defined Functions) เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเตเดŸเต† เดšเดฟเดฒ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต† เดชเดคเดฟเดชเตเดชเต, เด†เด•เตโ€Œเดธเดธเตเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚, เดชเตเดคเดฟเดฏ เดฑเดฟเดฒเต€เดธเตเด•เดณเตเดŸเต† เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดฑเต‹เดณเดฟเด‚เด—เต เดŽเดจเตเดจเดฟเดต DBT-เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดพเตป เดตเดณเดฐเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต.

เดนเดพเดทเตเด•เตพ, เด‡เดฎเต†เดฏเดฟเตฝ เดกเตŠเดฎเต†เดฏเตโ€Œเดจเตเด•เตพ, เดฌเดฟเดฑเตเดฑเตเดฎเดพเดธเตเด•เต เดกเต€เด•เต‹เดกเดฟเด‚เด—เต เดŽเดจเตเดจเดฟเดต เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดชเตˆเดคเตเดคเดฃเดฟเตฝ UDF เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดเดคเตŠเดฐเต เดจเดฟเตผเดตเตเดตเดนเดฃ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด‚ (dev, test, prod) เด’เดฐเต UDF เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเดพเด•เตเดฐเต‹เดฏเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด‚:

{% macro create_udf() -%}
 
 {% set sql %}
       CREATE OR REPLACE FUNCTION {{ target.schema }}.f_sha256(mes "varchar")
           RETURNS varchar
           LANGUAGE plpythonu
           STABLE
       AS $$  
           import hashlib
           return hashlib.sha256(mes).hexdigest()
       $$
       ;
 {% endset %}
  
 {% set table = run_query(sql) %}
 
{%- endmacro %}

เดตเต€เดฒเดฟเดฏเดฟเตฝ เดžเด™เตเด™เตพ เด†เดฎเดธเต‹เตบ เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต PostgreSQL เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต. เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ, เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเดฒเต† เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เดชเดคเดฟเดตเดพเดฏเดฟ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเดฟเดธเตเด•เต เด‡เดŸเด‚ เดถเต‚เดจเตเดฏเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต - เดฏเดฅเดพเด•เตเดฐเดฎเด‚ เดตเดฟเดถเด•เดฒเดจเด‚, เดตเดพเด•เตเดตเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ.

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, redshift_maintenance เดฎเดพเด•เตเดฐเต‹เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเดฒเตเดฒเดพ เดฐเดพเดคเตเดฐเดฟเดฏเดฟเดฒเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต:

{% macro redshift_maintenance() %}
 
   {% set vacuumable_tables=run_query(vacuumable_tables_sql) %}
 
   {% for row in vacuumable_tables %}
       {% set message_prefix=loop.index ~ " of " ~ loop.length %}
 
       {%- set relation_to_vacuum = adapter.get_relation(
                                               database=row['table_database'],
                                               schema=row['table_schema'],
                                               identifier=row['table_name']
                                   ) -%}
       {% do run_query("commit") %}
 
       {% if relation_to_vacuum %}
           {% set start=modules.datetime.datetime.now() %}
           {{ dbt_utils.log_info(message_prefix ~ " Vacuuming " ~ relation_to_vacuum) }}
           {% do run_query("VACUUM " ~ relation_to_vacuum ~ " BOOST") %}
           {{ dbt_utils.log_info(message_prefix ~ " Analyzing " ~ relation_to_vacuum) }}
           {% do run_query("ANALYZE " ~ relation_to_vacuum) %}
           {% set end=modules.datetime.datetime.now() %}
           {% set total_seconds = (end - start).total_seconds() | round(2)  %}
           {{ dbt_utils.log_info(message_prefix ~ " Finished " ~ relation_to_vacuum ~ " in " ~ total_seconds ~ "s") }}
       {% else %}
           {{ dbt_utils.log_info(message_prefix ~ ' Skipping relation "' ~ row.values() | join ('"."') ~ '" as it does not exist') }}
       {% endif %}
 
   {% endfor %}
 
{% endmacro %}

เดกเดฟเดฌเดฟเดŸเดฟ เด•เตเดฒเต—เดกเต

DBT เด’เดฐเต เดธเต‡เดตเดจเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดฎเดพเดจเต‡เดœเตเดกเต เดธเตผเดตเต€เดธเต). เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดคเต:

  • เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเตเด‚ เดฎเต‹เดกเดฒเตเด•เดณเตเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเต†เดฌเต เดเดกเดฟเด‡
  • เดœเต‹เดฒเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เดทเต†เดกเตเดฏเต‚เดณเดฟเด‚เด—เตเด‚
  • เดฒเต‹เด—เตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดณเดฟเดคเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฏ เด†เด•เตเดธเดธเต
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด‰เดณเตเดณ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต
  • เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ CI (เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดธเด‚เดฏเต‹เดœเดจเด‚)

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดคเต€เดฐเตเดฎเดพเดจเด‚

DWH เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด•เดดเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด’เดฐเต เดธเตเดฎเต‚เดคเตเดคเดฟ เด•เตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต† เด†เดธเตเดตเดพเดฆเตเดฏเด•เดฐเดตเตเด‚ เดชเตเดฐเดฏเต‹เดœเดจเด•เดฐเดตเตเดฎเดพเดฃเต. เดกเดฟเดฌเดฟเดŸเดฟเดฏเดฟเตฝ เดœเดฟเดžเตเดš, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ (เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ), เด’เดฐเต เด•เด‚เดชเตˆเดฒเตผ, เด’เดฐเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเตผ, เด’เดฐเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผ เดŽเดจเตเดจเดฟเดต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดˆ เด˜เดŸเด•เด™เตเด™เตพ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเดจเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚. เด‡เดจเตเดจเต DWH-เดจเตเดณเตเดณเดฟเตฝ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด‡เดคเดฟเดฒเตเด‚ เดฎเดฟเด•เดšเตเดš เดฎเดพเตผเด—เดฎเดฟเดฒเตเดฒ.

เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด‚ เดธเตเดฎเต‚เดคเตเดคเดฟเดฏเตเด‚ เดคเดฎเตเดฎเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณเดคเต

เดกเดฟเดฌเดฟเดŸเดฟเดฏเตเดŸเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจ เดตเดฟเดถเตเดตเดพเดธเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เด•เต‹เดกเต, GUI เด…เดฒเตเดฒ, เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเด•เตฝ เดฒเต‹เดœเดฟเด•เต เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เดธเด‚เด—เตเดฐเดนเดฎเดพเดฃเต
  • เดกเดพเดฑเตเดฑเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดฟเด‚เด—เดฟเดฒเต† (เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดฟเด‚เด—เต) เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดฃเด‚.

  • เดจเดฟเตผเดฃเตเดฃเดพเดฏเด• เดกเดพเดฑเตเดฑ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดพเดฏเดฟ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดธเดฎเต‚เดนเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดฃเด‚
  • เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเต เดŸเต‚เดณเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด•เต‹เดกเตเด‚ เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฏเตเดŸเต† เดธเตเดตเดคเตเดคเดพเดฏเดฟ เดฎเดพเดฑเตเด‚

เดˆ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดตเดฟเดถเตเดตเดพเดธเด™เตเด™เตพ เด‡เดจเตเดจเต 850-เดฒเดงเดฟเด•เด‚ เด•เดฎเตเดชเดจเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‰เตฝเดชเตเดชเดจเตเดจเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต, เดญเดพเดตเดฟเดฏเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเดพเตป เดชเต‹เด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เด†เดตเต‡เดถเด•เดฐเดฎเดพเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด‚ เด…เดตเดฏเดพเดฃเต.

เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เดพเดฏเดฟ, OTUS-เดฒเต† เด’เดฐเต เดคเตเดฑเดจเตเดจ เดชเดพเด เดคเตเดคเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ เด•เตเดฑเดšเตเดšเต เดฎเดพเดธเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเต เดžเดพเตป เดจเตฝเด•เดฟเดฏ เดคเตเดฑเดจเตเดจ เดชเดพเด เดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดตเต€เดกเดฟเดฏเต‹ เด‰เดฃเตเดŸเต - เด†เดฎเดธเต‹เตบ เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ.

OTUS เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดฒเต† เดกเดพเดฑเตเดฑเดพ เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ เด•เต‹เดดเตโ€Œเดธเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ DBT, เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเดฟเด‚เด—เต เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดžเดพเดจเตเด‚ เดŽเดจเตเดฑเต† เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เดฐเตเด‚ เดชเตเดฐเดธเด•เตเดคเดตเตเด‚ เด†เดงเตเดจเดฟเด•เดตเตเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดตเดฟเดทเดฏเด™เตเด™เดณเดฟเตฝ เด•เตเดฒเดพเดธเตเด•เตพ เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดฌเดฟเด—เต เดกเดพเดฑเตเดฑ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเดณเตเดณ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดพ เด†เดถเดฏเด™เตเด™เตพ
  • เดธเตเดชเดพเตผเด•เตเด•เต, เดธเตเดชเดพเตผเด•เตเด•เต เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เต เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเดฟเดถเต€เดฒเดฟเด•เตเด•เตเด•
  • เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเต€เดคเดฟเด•เดณเตเด‚ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  • DWH-เตฝ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเด•เตฝ เดทเต‹เด•เต‡เดธเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต
  • NoSQL เด†เดถเดฏเด™เตเด™เตพ: HBase, Cassandra, ElasticSearch
  • เดจเดฟเดฐเต€เด•เตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเตเดฑเต†เดฏเตเด‚ เดคเดคเตเดตเด™เตเด™เตพ 
  • เด…เดจเตเดคเดฟเดฎ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต: เดฎเต†เดจเตเดฑเดฑเดฟเด‚เด—เต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดŸเต† เด•เต€เดดเดฟเตฝ เดŽเดฒเตเดฒเดพ เด•เดดเดฟเดตเตเด•เดณเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต

เดฑเต†เดซเดฑเตปเดธเตเด•เตพ:

  1. DBT เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป - เด†เดฎเตเด–เด‚ - เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป
  2. เดŽเดจเตเดคเดพเดฃเต, เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ, dbt? - เดกเดฟเดฌเดฟเดŸเดฟเดฏเตเดŸเต† เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เดณเดฟเตฝ เด’เดฐเดพเดณเตเดŸเต† เด…เดตเดฒเต‹เด•เดจ เดฒเต‡เด–เดจเด‚ 
  3. เด†เดฎเดธเต‹เตบ เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฌเดฟเตฝเดกเต เดŸเต‚เตพ - YouTube, เด’เดฐเต OTUS เดคเตเดฑเดจเตเดจ เดชเดพเด เดคเตเดคเดฟเดจเตเดฑเต† เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต
  4. เด—เตเดฐเต€เตปเดชเตเดฒเดฎเดฟเดจเต† เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต โ€” เด…เดŸเตเดคเตเดค เดคเตเดฑเดจเตเดจ เดชเดพเด เด‚ เดฎเต†เดฏเต 15, 2020 เด†เดฃเต
  5. เดกเดพเดฑเตเดฑ เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดฟเด‚เด—เต เด•เต‹เดดเตเดธเต -OTUS
  6. เด’เดฐเต เดฎเตเดคเดฟเตผเดจเตเดจ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต โ€” เดกเดพเดฑเตเดฑเดฏเตเดŸเต†เดฏเตเด‚ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเดฟเดจเตเดฑเต†เดฏเตเด‚ เดญเดพเดตเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดจเต‹เดŸเตเดŸเด‚
  7. เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเดฟเดจเตเดฑเต† เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต - เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเดฟเดจเตเดฑเต† เดชเดฐเดฟเดฃเดพเดฎเดตเตเด‚ เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเดฟเดจเตเดฑเต† เดธเตเดตเดพเดงเต€เดจเดตเตเด‚
  8. dbtCloud เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดฌเดฟเตฝเดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เตเด‚ - DBT เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต CI เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดคเตเดตเด™เตเด™เตพ
  9. DBT เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต - เดชเตเดฐเดพเด•เตเดŸเต€เดธเต, เดธเตเดตเดคเดจเตเดคเตเดฐ เดœเต‹เดฒเดฟเด•เตเด•เตเดณเตเดณ เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ
  10. เดœเดพเดซเดฟเตพ เดทเต‹เดชเตเดชเต - Github DBT เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ - Github, เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดชเดฆเตเดงเดคเดฟ เด•เต‹เดกเต

เด•เต‹เดดเตเดธเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเดฒเดฑเดฟเดฏเตเด•.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•