แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก
แƒ แƒ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ–แƒ”แƒ แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜?

แƒคแƒแƒ™แƒฃแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒ–แƒ” แƒฅแƒ•แƒแƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜. DWH, แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ: แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ—แƒ•แƒแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ, แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ CI. แƒ›แƒแƒ“แƒฃแƒšแƒฃแƒ แƒ˜, แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒ“แƒ˜, แƒฆแƒ˜แƒ แƒฌแƒงแƒแƒ แƒ แƒ“แƒ แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒ. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ (Data Lineage).

แƒ›แƒ”แƒขแƒ˜ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ DBT-แƒ˜แƒก แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Big Data & Analytics แƒ”แƒ™แƒแƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ - Welcome to cat.

แƒ’แƒแƒฃแƒ›แƒแƒ แƒฏแƒแƒก

แƒแƒ แƒขแƒ”แƒ›แƒ˜ แƒ™แƒแƒ–แƒ˜แƒ แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒจแƒ˜แƒ. 5 แƒฌแƒ”แƒšแƒ–แƒ” แƒ›แƒ”แƒขแƒ˜แƒ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒแƒฌแƒงแƒแƒ‘แƒ”แƒ‘แƒ—แƒแƒœ, แƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘ ETL/ELT, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒกแƒ แƒ“แƒ แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก. แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒ‘แƒแƒ แƒ‘แƒšแƒ˜แƒแƒœแƒ˜, แƒ•แƒแƒกแƒฌแƒแƒ•แƒšแƒ˜ OTUS-แƒจแƒ˜ แƒ™แƒฃแƒ แƒกแƒ–แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜, แƒ“แƒ แƒ“แƒฆแƒ”แƒก แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒจแƒ˜ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ” แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒ แƒ˜แƒชแƒฎแƒ•แƒ แƒ™แƒฃแƒ แƒกแƒ–แƒ”.

แƒ›แƒแƒ™แƒšแƒ” แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜

DBT แƒฉแƒแƒ แƒฉแƒ แƒแƒ แƒ˜แƒก T-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ ELT (Extract - Transform - Load) แƒจแƒ”แƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ•แƒšแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ BigQuery, Redshift, Snowflake, แƒแƒ–แƒ แƒ˜ แƒแƒ  แƒฐแƒฅแƒแƒœแƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ— แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒแƒก. 

DBT แƒแƒ  แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ“แƒ˜แƒ“ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒ˜แƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒ™แƒ•แƒ” แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ (แƒจแƒ˜แƒ“แƒ แƒแƒœ แƒ’แƒแƒ แƒ” แƒกแƒแƒชแƒแƒ•แƒจแƒ˜).

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก
DBT-แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒ, แƒ›แƒ˜แƒกแƒ˜ SQL-แƒจแƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ, แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒกแƒฌแƒแƒ แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—.

DBT แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ 2 แƒขแƒ˜แƒžแƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ:

  • แƒ›แƒแƒ“แƒ”แƒšแƒ˜ (.sql) - แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒฎแƒแƒขแƒฃแƒšแƒ˜แƒ SELECT แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ—
  • แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ (.yml) - แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜, แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜, แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ

แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒ“แƒแƒœแƒ”แƒ–แƒ”, แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

  • แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ“แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš IDE-แƒจแƒ˜
  • CLI-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, DBT แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ“แƒก SQL-แƒจแƒ˜
  • แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ SQL แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Storage-แƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ— (แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜)

แƒแƒ˜, แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก CLI-แƒ“แƒแƒœ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ:

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก SELECT

แƒ”แƒก แƒแƒ แƒ˜แƒก Data Build Tool แƒฉแƒแƒ แƒฉแƒแƒก แƒ›แƒ™แƒ•แƒšแƒ”แƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ. แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, DBT แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ“แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ (แƒ•แƒแƒ แƒ˜แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ CREATE, INSERT, UPDATE, DELETE ALTER, GRANT, ...).

แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜ แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก แƒ”แƒ แƒ—แƒ˜ 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 (Common Table Expressions) - แƒ™แƒแƒ“แƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฃแƒแƒ›แƒ แƒแƒ• แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒแƒก

แƒ›แƒ”แƒแƒ แƒ”: แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒแƒ แƒ˜แƒก SQL-แƒ˜แƒกแƒ แƒ“แƒ แƒ”แƒœแƒ˜แƒก แƒœแƒแƒ–แƒแƒ•แƒ˜ Jinja (แƒ—แƒแƒ แƒ’แƒ˜ แƒ”แƒœแƒ).

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒแƒ แƒงแƒฃแƒŸแƒก แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฎแƒ“แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ—แƒแƒœแƒฎแƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ ref โ€” แƒ™แƒแƒ“แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ:

  • แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒ“แƒ แƒแƒก ref แƒ’แƒแƒ“แƒแƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒชแƒฎแƒ แƒ˜แƒšแƒ–แƒ” แƒแƒœ แƒฎแƒ”แƒ“แƒจแƒ˜ Storage-แƒจแƒ˜
  • ref แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜

แƒกแƒฌแƒแƒ แƒ”แƒ“ Jinja แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒจแƒ”แƒฃแƒ–แƒฆแƒฃแƒ“แƒแƒ• แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก DBT-แƒก. แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ˜แƒก:

  • If / else แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜ - แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜
  • แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒชแƒ˜แƒ™แƒšแƒ”แƒ‘แƒ˜
  • แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜
  • แƒ›แƒแƒ™แƒ แƒ - แƒ›แƒแƒ™แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ: แƒชแƒฎแƒ แƒ˜แƒšแƒ˜, แƒฎแƒ”แƒ“แƒ˜, แƒ˜แƒœแƒ™แƒ แƒ”แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜

แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—แƒแƒช แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ Storage-แƒจแƒ˜.

แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ— แƒ”แƒก แƒแƒ แƒ˜แƒก:

  • แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ - แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜
  • View - แƒฎแƒ”แƒ“แƒ˜, แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ Storage-แƒจแƒ˜

แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ”แƒ‘แƒ˜:

  • แƒ˜แƒœแƒ™แƒ แƒ”แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ - แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ (แƒ“แƒ˜แƒ“แƒ˜ แƒคแƒแƒฅแƒขแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก); แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜, แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ˜ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜, แƒฌแƒแƒจแƒšแƒ˜แƒšแƒ˜ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜ แƒ˜แƒฌแƒ›แƒ˜แƒœแƒ“แƒ”แƒ‘แƒ 
  • แƒ”แƒคแƒ”แƒ›แƒ”แƒ แƒฃแƒšแƒ˜ - แƒ›แƒแƒ“แƒ”แƒšแƒ˜ แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒฃแƒจแƒฃแƒแƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒแƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช CTE แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒจแƒ˜
  • แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒฎแƒ•แƒ แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก

แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“:

  • แƒคแƒ˜แƒคแƒฅแƒ˜แƒ: แƒ’แƒแƒ แƒ“แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ, แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ, แƒ’แƒ แƒแƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ, แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒฎแƒ”แƒ“แƒ”แƒ‘แƒ˜
  • Redshift: Distkey, Sortkey (แƒ’แƒแƒ“แƒแƒฎแƒšแƒแƒ แƒ—แƒฃแƒšแƒ˜, แƒ แƒ—แƒฃแƒšแƒ˜), Late Binding Views
  • bigquery: แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒแƒคแƒ แƒ“แƒ แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ, แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ, KMS แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ, แƒšแƒ”แƒ˜แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒขแƒ”แƒ’แƒ”แƒ‘แƒ˜
  • แƒœแƒแƒžแƒ”แƒ แƒฌแƒ™แƒแƒšแƒ˜: แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒ˜ (parquet, csv, json, orc, delta), partition_by, clustered_by, buckets, incremental_strategy

แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜:

  • แƒžแƒแƒกแƒขแƒ’แƒ แƒ”แƒกแƒ˜
  • Redshift
  • bigquery
  • แƒคแƒ˜แƒคแƒฅแƒ˜แƒ
  • แƒžแƒ แƒ”แƒกแƒขแƒ (แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•)
  • แƒœแƒแƒžแƒ”แƒ แƒฌแƒ™แƒแƒšแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•)
  • Microsoft SQL Server (แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒแƒžแƒขแƒ”แƒ แƒ˜)

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜:

  • แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒฎแƒแƒ“แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ แƒ˜แƒœแƒ™แƒ แƒ”แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ (แƒ˜แƒœแƒ™แƒ แƒ”แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜)
  • แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ˜ Redshift-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

-- ะšะพะฝั„ะธะณัƒั€ะฐั†ะธั ะผะพะดะตะปะธ: 
-- ะ˜ะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะพะต ะฝะฐะฟะพะปะฝะตะฝะธะต, ัƒะฝะธะบะฐะปัŒะฝั‹ะน ะบะปัŽั‡ ะดะปั ะพะฑะฝะพะฒะปะตะฝะธั ะทะฐะฟะธัะตะน (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() แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒจแƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ—แƒแƒœ. แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜:

  • แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒกแƒฌแƒแƒ แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—
  • แƒ•แƒ˜แƒขแƒ แƒ˜แƒœแƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒ˜แƒ–แƒ”แƒ‘แƒ
  • แƒ—แƒ•แƒ˜แƒ—แƒœแƒ”แƒ‘แƒฃแƒ แƒ˜ แƒฅแƒ•แƒ”แƒ’แƒ แƒแƒคแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ 

แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜:

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก
แƒ’แƒ แƒแƒคแƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜; แƒ’แƒ แƒแƒคแƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— ref.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜ แƒ“แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ

แƒ’แƒแƒ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ, DBT แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒ’แƒ˜ แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜ (แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜) แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ:

  • แƒแƒ แƒ แƒœแƒฃแƒšแƒ˜
  • แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜
  • แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒ - แƒ แƒ”แƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, customer_id แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ 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']

แƒ“แƒ แƒแƒ˜, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒ”แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ–แƒ”:

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒ›แƒแƒ™แƒ แƒแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜

DBT-แƒ˜แƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ แƒแƒ แƒ แƒ˜แƒ›แƒ“แƒ”แƒœแƒแƒ“, แƒ แƒแƒ› แƒ’แƒแƒฎแƒ“แƒ”แƒก SQL แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒ˜แƒแƒฌแƒแƒ“แƒแƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒ“แƒ˜แƒ“แƒแƒ แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ“แƒ แƒแƒ› แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒ™แƒ แƒแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ”แƒฌแƒแƒ“แƒแƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒจแƒ˜. แƒ›แƒแƒ™แƒ แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— SQL แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก DRY (Don't Repeat Yourself) แƒกแƒแƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“.

แƒ›แƒแƒ™แƒ แƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜:

{% 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: แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ—แƒแƒ แƒ˜แƒฆแƒ—แƒแƒœ/แƒ“แƒ แƒแƒกแƒ—แƒแƒœ, แƒกแƒฃแƒ แƒแƒ’แƒแƒข แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ—แƒแƒœ, แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ—แƒแƒœ, Pivot/Unpivot แƒ“แƒ แƒกแƒฎแƒ•แƒ
  • แƒ›แƒ–แƒ แƒ•แƒ˜แƒขแƒ แƒ˜แƒœแƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ”แƒ‘แƒ˜ แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒคแƒ˜แƒคแƒฅแƒ˜แƒ ะธ แƒ–แƒแƒšแƒ˜แƒแƒœแƒ˜ 
  • แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’. Redshift 
  • แƒฎแƒ” โ€” DBT แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜

แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒฅ 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, แƒขแƒ”แƒกแƒขแƒ˜, ci แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ‘แƒแƒšแƒ 3 แƒ“แƒฆแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒ›แƒ”แƒขแƒ˜. แƒแƒœแƒฃ แƒแƒ› แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒกแƒ˜แƒ แƒ‘แƒ˜แƒšแƒ˜ แƒ’แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒœแƒแƒ™แƒšแƒ”แƒ‘ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก. แƒ’แƒแƒ แƒ”แƒ›แƒแƒ–แƒ” แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒžแƒ แƒแƒ“แƒ˜แƒ“แƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

แƒ›แƒแƒขแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—

Redshift แƒแƒ แƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒแƒ•แƒแƒœแƒ˜ DBMS, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒกแƒ•แƒ”แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒžแƒขแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒกแƒแƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ“แƒ˜แƒกแƒ™แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ 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() }}"

แƒšแƒแƒ’แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒฉแƒแƒฌแƒ”แƒ แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒชแƒแƒšแƒ™แƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒจแƒ”แƒ•แƒ˜แƒฌแƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒกแƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒกแƒแƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ“แƒแƒคแƒ Looker-แƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”:

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ›แƒแƒ•แƒšแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ

แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ แƒแƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ UDF (แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜), แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ แƒ”แƒ‘แƒ, แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜ แƒ“แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ DBT-แƒจแƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— UDF-แƒก แƒžแƒ˜แƒ—แƒแƒœแƒจแƒ˜ แƒฐแƒ”แƒจแƒ”แƒ‘แƒ˜แƒก, แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ‘แƒ˜แƒขแƒ›แƒแƒกแƒ™แƒ˜แƒก แƒ“แƒ”แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ—แƒ•แƒšแƒ”แƒšแƒแƒ“.

แƒ›แƒแƒ™แƒ แƒแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฅแƒ›แƒœแƒ˜แƒก UDF-แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒแƒฆแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒ–แƒ” (dev, test, prod):

{% 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 %}

Wheely-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Amazon Redshift-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ PostgreSQL-แƒ–แƒ”. Redshift-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ’แƒแƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒแƒ— แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒ˜ - ANALYZE แƒ“แƒ VACUUM แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ 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 แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ˜

แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ DBT แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (Managed Service). แƒจแƒ”แƒ“แƒ˜แƒก:

  • แƒ•แƒ”แƒ‘ IDE แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ“แƒแƒ’แƒ”แƒ’แƒ›แƒ•แƒ
  • แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ–แƒ”
  • แƒกแƒแƒ˜แƒขแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒ—
  • แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ CI (แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ)

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

DWH-แƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ˜แƒกแƒ”แƒ—แƒ˜แƒ•แƒ” แƒกแƒแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒ“แƒ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒ›แƒฃแƒ–แƒ˜แƒก แƒ“แƒแƒšแƒ”แƒ•แƒ. DBT แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ Jinja, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜), แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜, แƒจแƒ”แƒ›แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜. แƒแƒ› แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒกแƒ แƒฃแƒš แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒฆแƒ”แƒก DWH-แƒจแƒ˜ แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒ’แƒ–แƒ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ Build Tool แƒแƒœ แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ Data Warehouse-แƒกแƒ แƒ“แƒ Smoothie-แƒก แƒจแƒแƒ แƒ˜แƒก

แƒ แƒฌแƒ›แƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ›แƒ˜แƒฐแƒงแƒ•แƒ”แƒ‘แƒ˜แƒแƒœ DBT-แƒ˜แƒก แƒจแƒ”แƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒฉแƒแƒ›แƒแƒงแƒแƒšแƒ˜แƒ‘แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

  • แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒแƒ แƒ GUI, แƒแƒ แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒชแƒ˜แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒแƒขแƒแƒ•แƒแƒ“
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ”แƒ แƒ’แƒแƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒแƒจแƒ˜ (แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒ)

  • แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒฃแƒœแƒ“แƒ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ“แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ , แƒ แƒแƒ’แƒแƒ แƒช แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ
  • แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒ”แƒ‘แƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ™แƒแƒ“แƒ˜แƒช แƒกแƒฃแƒš แƒฃแƒคแƒ แƒ แƒ“แƒ แƒฃแƒคแƒ แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒฆแƒ˜แƒ แƒฌแƒงแƒแƒ แƒแƒก แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ

แƒแƒ› แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ›แƒ แƒ แƒฌแƒ›แƒ”แƒœแƒแƒ› แƒฌแƒแƒ แƒ›แƒแƒจแƒ•แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒฆแƒ”แƒก 850-แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ“แƒ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฅแƒ›แƒœแƒ˜แƒแƒœ แƒ‘แƒ”แƒ•แƒ  แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜.

แƒ“แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒก แƒ•แƒ˜แƒ“แƒ”แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒ” แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ—แƒ•แƒ˜แƒก แƒฌแƒ˜แƒœ OTUS-แƒจแƒ˜ แƒฆแƒ˜แƒ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜ - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ Amazon Redshift Storage-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒ แƒ“แƒ DBT-แƒ˜แƒกแƒ แƒ“แƒ Data Warehousing-แƒ˜แƒกแƒ, แƒ แƒแƒ’แƒแƒ แƒช Data Engineer แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ OTUS แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ”, แƒ›แƒ” แƒ“แƒ แƒฉแƒ”แƒ›แƒ˜ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒ•แƒแƒกแƒฌแƒแƒ•แƒšแƒ˜แƒ— แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒ แƒ”แƒšแƒ”แƒ•แƒแƒœแƒขแƒฃแƒ  แƒ“แƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ—แƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”:

  • แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒ˜แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ”แƒ— Spark แƒ“แƒ Spark Streaming-แƒ˜แƒ—
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ
  • แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ•แƒ˜แƒขแƒ แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ DWH-แƒจแƒ˜
  • NoSQL แƒชแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜: HBase, Cassandra, ElasticSearch
  • แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜ 
  • แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜: แƒงแƒ•แƒ”แƒšแƒ แƒฃแƒœแƒแƒ -แƒฉแƒ•แƒ”แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ แƒ›แƒ”แƒœแƒขแƒแƒ แƒฃแƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ

แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜:

  1. DBT แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ - แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ - แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ
  2. แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“ แƒ แƒ แƒแƒ แƒ˜แƒก dbt? โ€” แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒ”แƒ— DBT-แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒแƒก 
  3. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ Amazon Redshift Storage-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก โ€” YouTube, OTUS แƒฆแƒ˜แƒ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ
  4. Greenplum-แƒ˜แƒก แƒ’แƒแƒชแƒœแƒแƒ‘แƒ โ€” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒฆแƒ˜แƒ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก 15 แƒฌแƒšแƒ˜แƒก 2020 แƒ›แƒแƒ˜แƒกแƒ˜
  5. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒ˜แƒก แƒ™แƒฃแƒ แƒกแƒ˜ - OTUS
  6. แƒ›แƒแƒ›แƒฌแƒ˜แƒคแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ โ€” แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก
  7. แƒ“แƒ แƒแƒ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก โ€” แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ”แƒ•แƒแƒšแƒฃแƒชแƒ˜แƒ แƒ“แƒ แƒฆแƒ˜แƒ แƒฌแƒงแƒแƒ แƒแƒก แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ
  8. แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ Build แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ dbtCloud-แƒ˜แƒ— โ€” CI-แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜ DBT-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—
  9. DBT แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ โ€” แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ, แƒœแƒแƒ‘แƒ˜แƒฏ-แƒœแƒแƒ‘แƒ˜แƒฏ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  10. Jaffle shop โ€” Github DBT แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜ โ€” Github, แƒกแƒแƒ’แƒแƒœแƒ›แƒแƒœแƒแƒ—แƒšแƒ”แƒ‘แƒšแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜

แƒจแƒ”แƒ˜แƒขแƒงแƒ•แƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ