- Materialization ဆိုတာက dbt models တွေကို Data Warehouse အတွင်းမှာ နေရာချထားတဲ့ Strategies တွေလို့ ပြောလို့ ရပါတယ်။ Materialization အမျိုးအစား ၅ မျိုး ခွဲလို့ ရတယ်။ 1. table 2. view 3. incremental 4. ephemeral 5. materialized view - ဘာ Materialization ကိုမှ ကြေညာမထားဘူးဆိုရင်တောင် Default အနေနဲ့ dbt က ==view== type ကို အသုံးပြုမှာ ဖြစ်တယ်။ ဒါမှမဟုတ် ကိုယ်က dbt ရဲ့ အကန့်အသတ်ကို ကျော်လွန်ချင်လို့ custom materialization ပြုလုပ်ပြီး ကိုယ် လိုအပ်သလို အသုံးပြုနိုင်တာမျိုးလဲ ရှိတယ်။ - ကိုယ် အသုံးပြုတဲ့ Data Platform ပေါ်မူတည်ပြီးတော့လဲ materialization ကွာခြားတာမျိုးလဲ ရှိနိုင်ပါတယ်။ (ဥပမာ - Snowflake မှာ materialized view ကို အသုံးပြုလို့ မရပဲ အလားသဏ္ဍာန်တူတဲ့ dynamic tables ကို အသုံးပြုနိုင်တာမျိုး) ## View - `CREATE VIEW AS ...` statement ကို အသုံးပြုပြီး model ကို တည်ဆောက်လိုက်တာပါ။ SQL logic ကိုပဲ သိမ်းပြီး data တွေကို မသိမ်းပါဘူး။ ဒါကြောင့် ကနဦးပိုင်းမှာ ချက်ချင်း build လုပ်လို့ ရတာ ၊ ချက်ချင်းတည်ဆောက်ဖို့အတွက် cost သိပ်မရှိတာတွေကြောင့် dbt က default materialization အနေနဲ့ ရွေးထားတာပါ။ - အားသာချက် အနေနဲ့ကတော့ `view` မှာက Physical Data Storage မလိုဘူး။ ဒေတာတွေကို အသေ သိမ်းမထားဘူး။ Query ခေါ်လိုက်တဲ့အခါကျမှ data တွေကို ခေါ်တာ ဖြစ်တဲ့အတွက် up-to-date data တွေ အမြဲရတယ်။ - အားနည်းချက်ကတော့ Complex Transformation တွေ လုပ်ရတဲ့အခါမှာ ၊ မကြာခန အဲဒီ View ခေါ်သုံးရတဲ့အခါမျိုးတွေမှာကျ တခါခေါ်တိုင်း query ကို တစ်ခါ run ရတာ ဖြစ်တဲ့အတွက် performance မကောင်းတာမျိုးတွေ ဖြစ်လာနိုင်ပါတယ်။ နောက်ပြီး ရေရှည်မှာ ကုန်ကျစရိတ်တွေ ပိုများလာတာမျိုးလဲ ဖြစ်နိုင်ပါတယ်။ ## Table - `CREATE or REPLACE TABLE ...` statement ကို အသုံးပြုပြီး dbt run တိုင်းမှာ physical table အဖြစ် အမြဲ အသစ် ပြန်တည်ဆောက်ပါတယ်။ # References - [Materialization Best Practices](https://docs.getdbt.com/best-practices/materializations/2-available-materializations) by dbt