top of page
5. Common Table Functions
အသုံးများသည့် Table Function များ
ဤစာမျက်နှာတွင်ပါဝင်သည့် ခေါင်းစဉ်များ

5.1 Data Model အတွင်းရှိ Table များကို Excel Worksheet အတွင်းသို့ ပြန်လည် ထည့်သွင်းခြင်း

PowerPivot Data Model အတွင်း ထည့်သွင်းထားသည့် Table များကို Excel Worksheet အတွင်းသို့ အောက်ပါ ရည်ရွယ်ချက်များကြောင့် ပြန်လည် ထည့်သွင်းလေ့ရှိကြသည် -

  • Data Model အတွင်းရှိ Table များတွင် လိုအပ်သည့်အတိုင်း Calculated Column များတွက်ချက်ထားလေ့ရှိပြီး ထို Calculated Column Result များအပါအဝင် Table များအား ပြန်လည် ရယူလိုခြင်း

  • DAX Formula များအတွင်း Table Function များ ပေါင်းစပ်မရေးသားမီ မိမိရေးသားလိုသည့် Table Expression ၏ ရလဒ် Table အား Preview အဖြစ် စစ်ဆေး ကြည့်ရှုလိုခြင်း

ဆက်လက်လေ့လာရမည့် သင်ခန်းစာ
5.1 Importing back to Excel

DAX Formula ရေးသား၍ ပြန်လည်ရရှိသည့် အဖြေမှာ တန်ဖိုးတစ်ခု (Scalar Value) သာ ပြန်လည် ရရှိနိုင်သကဲ့သို့ Table များလည်း ပြန်လည်ရရှိနိုင်သည်။ ဤအခန်းတွင် အသုံးများသည့် Table Function များကို လေ့လာကြရမည်ဖြစ်ပြီး အဆင့်မြင့် Table Function များကို နောက်ပိုင်း အခန်းများတွင် ဆက်လက် လေ့လာကြရမည် ဖြစ်ပါသည်။

image3.png

ထို့နောက် Table ထားရှိမည့် Cell ကွက် ရွေးချယ်ရန် Import Data  Box ပေါ်လာမည် ဖြစ်သည်။

image4.png

Cell ကွက် ရွေးချယ်သတ်မှတ်ပြီးနောက် OK ပေးလိုက်ပါက Result Table ကို မြင်တွေ့ရမည် ဖြစ်သည်။

ရရှိလာသည့် Table အပေါ်တွင် မလိုအပ်သည့် Column များ ၊ Row များ ဖယ်ရှားခြင်း၊ အခြား လိုအပ်သည့် တွက်ချက်မှု များ ပြုလုပ်ခြင်းများ ဆောင်ရွက်နိုင်သည်။ ထိုသို့ ဆောင်ရွက်အတွက် Table အတွင်းရှိ Cell တစ်ကွက်ပေါ်တွင် Right Click ထောက်၊ Table မှ တစ်ဆင့် Edit Dax ကိုသွားပါ။

image5.png

ပေါ်လာသည့် Edit DAX Box တွင်  Command နှစ်မျိုးအသုံးပြုနိုင်သည်။ ပထမ Type မှာ Table ဖြစ်ပြီး ထိုနည်းကို အသုံးပြုပါက Expression တွင် မိမိပြန်လည်ရယူလိုသည့် Table အမည်ကို သာ ရေးသာရန် ဖြစ်သည်။ အောက်ပါဥပမာတွင် Product Table ပြန်လည် ရရှိရန် အတွက် Product အမည်အား ရေးသားထားခြင်း ဖြစ်သည်။

image6.png

အကယ်၍ Table ပေါ်တွင် လိုအပ်သလို စစ်ထုတ်ခြင်း၊ တွက်ချက်ခြင်းမှာ ဆောင်ရွက်လိုပါက Command Type နေရာတွင် DAX ကို ရေးသားရမည် ဖြစ်ပါသည်။ ထိုသို့ ရေးသားသည့်အခါ DAX Formula အစတွင် EVALUATE Function  စတင် ရေးသား ပြီး မိမိသတ်မှတ်ချက်များကို ထိုအောက်တွင် ရေးသားရမည် ဖြစ်သည်။

EVALUATE Function အသေးစိတ်ကို Advanced Table Function အခန်းတွင် ဆက်လက် လေ့လာကြရမည် ဖြစ်သည်။ ယခုလောလောဆယ် Edit DAX Box တွင် (သို့မဟုတ်) Power BI Desktop တွင် DAX Table Expression များ ရေးသားရာ၌ EVALUATE ကို စတင် ရေးသား ရမည်ဟု အကြမ်းဖျဉ်းမှတ်သားထားလျင် လုံလောက်ပါသည်။

အောက်ပါ ဥပမာတွင် Product Table အတွင်းမှ Brand Name Column တွင် Contoso Brand များကို သာ ရွေးချယ်စစ်ထုတ်စေရန် Filter Function ကို အသုံးပြု ရေးသားထားခြင်း ဖြစ်သည်။

( Expression များ ရေးသားရာတွင် Formula Font Size ကြီးခြင်း ၊ သေးခြင်းကို Control Key ဖိထားပြီး Mouse Scroll Wheel ကို အသုံးပြု ကစားနိုင်ပါသည်။)

image7.png

အထက်ပါအတိုင်း Expression ရေးသားလိုက်သည့်အခါ အောက်ပါအတိုင်း Product Table ပြောင်းလဲ ရရှိမည် ဖြစ်ပါသည်။

image8.png

ရှေးဦးစွာ သင်ခန်းစာဖိုင်အား Download ရယူပါ။ သင်ခန်းစာဖိုင်၏ Data Model အတွင်းတွင် Table များထည့်သွင်းထားရှိပြီး ထို Table များထဲမှ လိုအပ်သည့် Data များကို Excel Worksheet အတွင်းသို့ ပြန်လည်ထည့်သွင်းပါမည်။

Excel Worksheet အတွင်းသို့ Table များ ပြန်လည်ထည့်သွင်းရန်အတွက် ပထမဦးစွာ Data Tab အောက်ရှိ Existing Connections ကို ကလစ်ပါမည်။ Box ကျလာသည့်အခါ Tables Tab သို့ သွားရောက်ပြီး မိမိပြန်လည်ထည့်သွင်းလိုသည့် Table အမည်ကို ရွေးချယ် Open နှိပ်ပါ။

5.2 Filter Formula

Syntax:

            = FILTER( Table Name , Boolean Expression) 

Table နေရာတွင် Table အမည် (သို့မဟုတ်) Table ပြန်ရစေသော Formula အား ရေးသားရမည်ဖြစ်ပြီး Filter နေရာတွင် အဆိုပါ Table မှ မိမိ စစ်ထုတ်လိုသည့် သတ်မှတ်ချက်ကို Logical Test အနေဖြင့် ရေးသားရမည် ဖြစ်သည်။

Filter Function ကို သီးခြား အသုံးပြုလေ့မရှိပဲ  Table လိုအပ်သည့် အခြား Formula များတွင် ထည့်သွင်း၍ တွဲဖက် အသုံးပြုလေ့ရှိသည်။

အောက်ပါ ဥပမာတွင် Quantity ၁၅၀ နှင့်အထက် ပိုရောင်းရသည့် အကြိမ်အရေအတွက် ရရှိရန် Filter ကို အသုံးပြုပြီး Calculated Field ( Measure) တစ်ခု ရေးသားထားခြင်းဖြစ်သည်။

 

Counts of Whole Sale:=COUNTROWS(FILTER(Sales,Sales[Quantity]>=150))

Pivot Table တွင် Rows Area ၌ Product Category ကို ထည့်သွင်းပြီး Values နေရာတွင် အထက်ပါ Formula အမည်အား ထည့်သွင်းလိုက်သည့်အခါ အောက်ပါအတိုင်း တွေ့ရပါမည်။

Syntax:

            ALL( Table Name or ColumnName1, [Column Name 2],[Column Name3]…[Column N] )

All Function ကို တွက်ချက်မှုတွင် လက်ရှိ သက်ရောက်နေသည့် Filter Context များကို ဖယ်ထုတ်ပြီး မူလတွင်ရှိသည့် Row အားလုံးကို ထည့်သွင်းတွက်ချက်ရန်အတွက် အသုံးပြုသည်။

ALL Function ၏ Argument နေရာတွင် Table Name သို့မဟုတ် Column Name ကို ထည့်သွင်း ပေးရမည်ဖြစ်သည်။ Column Name ကို တစ်ခုထက်ပို၍ ပေးနိုင်သည်။

​5.3.1  Pattern 1 – ALL( Table Name)

ရှေးဦးစွာ အောက်ပါအတိုင်း Measure တစ်ခု ရေးသားပါမည်။

Total Qty(All Function):=SUMX(ALL(Sales),[Quantity])

ထို့နောက် Pivot Table တွင် Rows Area ၌ Product Category ကို ထည့်သွင်းပြီး Values Area တွင် Sales table မှ Quantity Column နှင့် အတူ အထက်တွင် ရေးသားထားခဲ့သည့် Formula ကို ထည့်သွင်းလိုက်သည့်အခါ အောက်ပါအတိုင်း တွေ့ရပါမည်။

image9.png

5.2  FILTER Formula

5.3 ALL Formula

5.3.3  Pattern 3 - ALL ( [Column Name 1], [Column Name 2], … )

All Formula အတွင်း Column Name တစ်ခုထက်ပို၍ ရေးသားပါက ထို Column များ၏ Combined Unique List ကို ရရှိမည် ဖြစ်သည်။ Brand Name နှင့် Colour Column နှစ်ခု၏ Combined Unique List ရရှိရန်အတွက် Eidt DAX Box တွင် အောက်ပါ အတိုင်း Formula ရေးသားနိုင်သည်။

Evaluate

All ( Product[Brand Name], Product[Colour])

Edit DAX Box တွင် ထိုသို့ ရေးသားပြီး OK ပေးလိုက်ပါက အောက်ပါအတိုင်း Combined Unique List ရရှိမည် ဖြစ်ပါသည်။

image10.png

အောက်ပါ ဥပမာတွင် Product Category အား Slicer ဖြင့် Filter စစ်လိုက်သည့်အခါ Filter စစ်ထား သည့် Category များသာ Pivot Table တွင် တွေ့မြင်ရသည်ဖြစ်ရာ Sum of Quantity Column တွင် မြင်ရသည့် Category တန်ဖိုးများကိုသာ စုစုပေါင်း တန်ဖိုး တွက်ချက်ပေးသွာခြင်း ဖြစ်သည်။ သို့ရာတွင် Total Qty (All Function) Column တွင် Sale Table ၏ Row အားလုံးအပေါ်တွင် တွက်ချက်ထားသည့် စုစုပေါင်း တန်ဖိုးကိုသာ မြင်တွေ့ရမည် ဖြစ်ပါသည်။

image11.png

5.3.2  Pattern 2 - ALL ( [Column Name] )

ALL Formula တွင် Column Name တစ်ခုထဲ ထည့်သွင်း ရေးသားပါက ထို Column အတွင်းရှိ Unique Item List အား ပြန်လည်ရရှိမည် ဖြစ်သည်။ အောက်ပါ Table သည် Product Table ကို Data Model အတွင်းသို့ ထည့်သွင်းထားခြင်းဖြစ်သည်။

image12.png

ထို Data Model အတွင်းမှ Table ကို Excel Worksheet အတွင်းသို့ ပြန်လည်ထည့်သွင်းထားပြီး Edit DAX  တွင် Region အမည်များ၏ Unique List ရရှိရန် အောက်ပါကဲ့သို့ Formula ရေးသားလိုက်ပါမည်။

image13.png

OK ပေးလိုက်ပါက အောက်ပါအတိုင်း Brand Name ၏ Unique List အား မြင်တွေ့ရမည် ဖြစ်သည်။

image14.png

5.4 ALLEXCEPT

5.4 ALLEXCEPT

Syntax:

ALLEXCEPT ( TableName, [Column Name 1], [Column Name 2], … )

Table တစ်ခုတွင်း Column များစွာပါဝင်ပြီး Column အနည်းငယ်မှ အပ အခြား Column များကို ALL ဖြင့် ၀န်းရံရေးသားအသုံးပြလိုသည့်အခါ ALL Formula အတွင်း Column အမည်များစွာ ရေးသားမည့် အစား ALL Formula အတွင်း မထည့်သွင်းလိုသည့် Column အမည်များကိုသာ ALLEXCEPT ဖြင့် တွဲဖက် အသုံးပြုရေးသားနိုင်သည်။

ဥပမာအားဖြင့် Product Table အတွင်း Product ID, Manufacturer, Brand Name, Color, Size, SubCategory, Category, Price စသဖြင့် Column  များစွာ ရှိသည့်အနက် Product ID နှင့် Price မှ လွဲ၍ အခြား Column များကို ALL ဖြင့် ထည့်သွင်း ရေးသားလိုပါက အောက်ပါအတိုင်း ရေးသားရမည်။

ALL( Product [Manufacturer], Product [Brand Name], Product [Color], Product [Size], Product [SubCategory], Product [Category] )

အထက်ပါအတိုင်း ရှည်လျားစွာ ရေးသားမည့်အစား ALLEXCEPT အသုံးပြု၍ အောက်ပါအတိုင်း ရေးသားနိုင်သည်။

ALLEXCEPT( Product, Product [Product ID], Product [ Price ] )

Syntax:

            ALLSELECTED([TableName or ColumnName])

ALL ကို အသုံးပြုရေးသားသည့်အခါ မူလရှိသည့်Row အားလုံး ထည့်သွင်း တွက်ချက်သည် ဖြစ်သည့် အတွက် Slicer များ၊ Filter များတွင် ရွေးချယ်ထားသည့် Filter များကိုလည်း ထည့်သွင်း တွက်ချက် သွားမည် ဖြစ်ပါသည်။

အကယ်၍ မူလ Row အားလုံးမဟုတ်ပဲ Slicer, Filter Area အစရှိသည်များတွင် ရွေးချယ်ထားသည့် တန်ဖိုးများကို တွက်ချက်လိုပါက ALLSELECTED ကို အသုံးပြုနိုင်သည်။ ALLSELECTED Formula တွင် မည်သည့် Argument မျှမပေးပဲ ALLSELECTED() ဟု ရေးသားပါက မည်သည့် Table, Column မှ ဖြစ်စေ Select မှတ်ထားသည့် Item များ၏ စုစုပေါင်း တန်ဖိုးကိုသာ ထည့်သွင်း တွက်ချက်သွားမည်ဖြစ်ပါသည်။

အကယ်၍ ALLSELECTED Formula အတွင်းတွင် Table Name သို့မဟုတ် Column Name တစ်ခု ရေးသွင်းပါက ထို သတ်မှတ်ထားသည့် Table / Column တန်ဖိုးများမှ Select မှတ်ထားသည့် တန်ဖိုး များကို ရွေးချယ်တွက်ချက်ပေးသွားမည် ဖြစ်ပါသည်။

Total Qty(AllSELECTED):=SUMX(ALLSELECTED(Sales),[Quantity])

DISTINCT နှင့် VALUES formula နှစ်ခုသည် ALL formula ကဲ့သို့ Unique တန်ဖိုးများကို ဆွဲထုတ်ယူပေးနိုင်သည် ။ ALL, DISTINCT, VALUES formula သုံးခုသည် Column တစ်ခုအတွင်း မှ Unqiue တန်ဖိုးများ ဆွဲထုတ်ရာတွင် တူညီသော်လည်း Pivot Table အတွင်း ထည့်သွင်း၍ Filter Context များဖြင့် ပေါင်းစပ် အသုံးပြုသည့်အခါတွင်တော့ အလုပ်လုပ်ပုံ ကွဲပြားခြားနားကြသည်။

အောက်ပါဥပမာတွင် Sale table ၌ Item လေးခုရှိ၍ Price table ၌ Item သုံး ခုရှိသည်။

5.6 Distinct and Values
image15.png

5.5 ALLSELECTED

5.6  DISTINCT and VALUES

image16.png
image17.png

အထက်ပါ Table နှစ်ခုကို Data Model သို့ ထည့်သွင်းပြီး Item Column နှစ်ခုကို Relationship တည်ဆောက်လိုက်ပါမည်။

Relationship တည်ဆောက်ပြီးနောက် အောက်ပါ အတိုင်း Measure သုံးခု ရေးသား၍ ထို Measure များကို Pivot Table အတွင်းသို့ ထည်သွင်းလိုက်ပါမည်။

ALL := COUNTROWS(ALL(Price[Item]))

VALUES := COUNTROWS(VALUES(Price[Item]))

DISTINCT := COUNTROWS(DISTINCT(Price[Item]))

image18.png

အထက်ပါ Pivot Table Result ကို ကြည့်ခြင်းအားဖြင့် ALL Formula သည် မိမိအပေါ်သက်ရောက်လာ သည့် Filter Context များကို ဖယ်ရှား၍ မူလတန်ဖိုးအားလုံးကို ရေတွက်ခြင်းဖြစ်သည်။

VALUES နှင့် DISTINCT Formula များသည် Filter Context မှ စစ်ထုတ်လိုက်သည့်အတိုင်း တန်ဖိုးများကို တွက်ချက်ခြင်းမှာ တူညီသော်လည်း VALUES သည် BLANK ကိုပါ တန်ဖိုးတစ်ခုအဖြစ် ထည့်သွင်း တွက်ချက်ပြီး DISTINCT သည် BLANK ကို ထည့်သွင်းတွက်ချက် ရေတွက်ခြင်း မပြုလုပ်သည်ကိုတွေ့ရမည် ဖြစ်ပါသည်။

5.7  VALUES Formula အား SCALAR Expression အဖြစ် အသုံးပြုခြင်း

VALUES Formula အား Table Column တစ်ခုအတွင်းမှ Unique တန်ဖိုးများရရှိရန် အသုံးပြုခြင်း အပြင် Row တစ်ခုသာပါရှိသည့် Column မှ တန်ဖိုးအား သာမန် တန်ဖိုးတစ်ခု အဖြစ် ပြောင်းလဲပေးနိုင် သည့် SCALAR Expression အဖြစ်လည်း အသုံးပြုနိုင်သည်။ ( Scalar Expression ဆိုသည်မှာ တန်ဖိုးတစ်ခုတည်း ပြန်လည်ရရှိသည့် Formula ဖြစ်ပြီး Table Expression ဆိုသည်မှာ Table တစ်ခု ပြန်လည်ရရှိနိုင်သည့် Formula များကို ဆိုလိုသည်။)

အထက်ပါ Table တွင် Row တစ်ခုသာ ပါရှိခြင်း ဖြစ်ရာ ထို Qty Column အတွင်းရှိ တန်ဖိုးမှာ 25 ထက် ကြီးမကြီး ကို စစ်ဆေးလိုသဖြင့် အောက်ပါအတိုင်း Formula ရေးသားလိုက်သည်။

[Qty] >= 25

အထက်ပါအတိုင်း ရေးသားခြင်းသည် အဆင်ပြေမည် ထင်ရသော်လည်း [Qty] ဆိုသည်မှာ Column အမည် ဖြစ်ခြင်း ကြောင့်  Column တစ်ခုအား ကိန်းဂဏန်းတန်ဖိုးတစ်ခုဖြင့် တိုက်ရိုက်တိုက်ဆိုင် စစ်ဆေး၍ မရပါ။ တစ်နည်းဆိုရ သော် Measure ( Calculated Field ) များ ရေးသားရာတွင် Column အမည်များကို တိုက်ရိုက်အသုံး ပြု၍ မရပါ။

ထို့အတွက် [Qty] Column ရှေ့တွင် Scalar Value ( တန်ဖိုး တစ်ခု) အဖြစ် ပြောင်းလဲ  တွက်ချက်ပေးနိုင်သော SUM, MAX, MIN, AVERAGE စသည့် Formula တစ်ခုခုကို  ဦးစွာ ရေးသားပေးရမည် ဖြစ်သည်။ ထို့ကြောင့် အထက်ပါ Formula ကို အောက်ပါ အတိုင်း ပြောင်းလဲ ရေးသားပေးရမည် ဖြစ်သည်။

SUM( [Qty] ) >= 25

ကိန်းဂဏန်း Column များရှေ့တွင် SUM, MAX, MIN အစရှိသည့် Formula  များ ရေးသားနိုင်သော်လည်း စာသား Column များရှေ့တွင် ထို Formula များ အသုံးပြု၍ မရနိုင်ပါ။

ထို့အတွက် Row တစ်ခုတည်း ရှိသည့် Column တစ်ခုမှ စာသား  တန်ဖိုးအား Scalar Value ( တန်ဖိုး တစ်ခု) အဖြစ် ပြောင်းလဲ စေလိုသည့်အခါအတွင် VALUES Formula ကို အသုံးပြုနိုင်သည်။ အထက်ပါ Table တွင် Item Column မှ တန်ဖိုးသည် Chair ဟုတ်မဟုတ် စစ်ဆေးလိုသည့်အခါ အောက်ပါအတိုင်း  ရေးသားနိုင်သည်။

VALUES ( [Item] ) = “Chair”

Item
Qty
Chair
30
5.3 ALL
5.5 ALLSELECTED
5.7 VALUES as Scalar

Quantity Column ထည့်ခြင်းကြောင့် ရရှိလာသည့် ရလဒ်များသည် Category တစ်ခုချင်းစီအလိုက် သီးခြားတွက်ချက်ပေးသော်လည်း Formula ဖြင့် ရေးသားတွက်ချက်ခြင်းကြောင့် ရရှိလာသည့် ရလဒ်များသည် Category စုစုပေါင်းအားလုံး၏ တန်ဖိုးတစ်ခုတည်းသာ ဖြစ်နေသည်ကို တွေ့ရှိရပါမည်။ အဘယ်ကြောင့်ဆိုသော် ရေးသားထားသည့် Formula တွင် Sale Table ကို ALL ဖြင့် ဝန်းရံရေးသားထားသဖြင့် Pivot Table ၏ Row Area, Column Area, Slicer, Filter တို့မှ သက်ရောက်လာသည့် Filter များကို ဖယ်ရှားပြီး Sale Table ၏ Row အားလုံးအပေါ်တွင် ထည့်သွင်းတွက်ချက်သွားခြင်း ဖြစ်သည်။

bottom of page