top of page
7. Evaluation Context
Evaluation Context

DAX Formula များတွက်ချက်ရာတွင် မည်သည့် တန်ဖိုးများအား မည်သို့တွက်ချက်ရမည်ဆိုသည် ကို Evaluation Context အပေါ်မူတည်၍ တွက်ချက်ရခြင်းဖြစ်သည်။ Evaluation Context တွင် Row Context နှင့် Filter Context ဟူ၍ နှစ်မျိုးရှိရာ ၎င်း Context များသည် အခြေခံအားဖြင့် နားလည်ရ လွယ်ကူသော်လည်း Advanced DAX Formula များတွင် မှန်ကန်စွာထည့်သွင်း ရေးသားနိုင်ရန် အတွက် ဂရုပြုလေ့လာရန် လိုအပ်ပါသည်။

အထက်ပါ Pivot Table တွင် Select မှတ်ထားသော 4611 ဟူသည့် တန်ဖိုး ရရှိရန်အတွက် Product Category တွင် Cell Phones ၊ Colour တွင် Grey၊ Year တွင် 2013၊ Region တွင် Mandalay စသည်တို့နှင့် သက်ဆိုင်သော တန်ဖိုးများရရှိရန် Quantity Column ကို Filter စစ်ထုတ်ပြီး ကျန်ရှိသည့် တန်ဖိုးများကို ပေါင်းထားခြင်းဖြစ်သည်။

7.1 Row Context

ရေးသားထားသည့် Formula မှာ =Sales[Quantity]*Sales[Price]  ဖြစ်ရာ Formula ထဲတွင် Column အလိုက်သာ ရည်ညွှန်းရေးသားထားခြင်း ဖြစ်ပြီး မည်သည့် တန်ဖိုးများ ၊ မည်သည့် Row များကို တွက်ချက် ပေးပါ ဟု တိုက်ရိုက် ရည်ညွှန်းရေးသားထားခြင်း မရှိပါ။ သို့ရာတွင် သက်ဆိုင်ရာ Row များအလိုက် တန်ဖိုးများ မြှောက်ပေးသွားရန်အတွက် Row Context က သတ်မှတ်ဆုံးဖြတ်ပေးသွားခြင်းဖြစ်သည်။

အထက်ပါအတိုင်း Calculated Column မရေးသားပဲ Total Amount ရရှိရန် အောက်ပါအတိုင်း Caluclated Field တစ်ခု ရေးသားလိုက်ပါမည် -

Total Amount :=SUMX( Sale, Sale[Quantity] * Sale[Price])

အထက်ပါ Formula တွင် Sale Table ၏ Quantity Column နှင့် Price Column များကို သက်ဆိုင်ရာ Row များအလိုက် မြှောက်ပေးသွားစေရန် SUMX Formula မှ Row Context ကို ဖန်တီးသတ်မှတ် တွက်ချက် ပေးသွားခြင်းဖြစ်သည်။ မြှောက်လဒ်တန်ဖိုးများ စုစုပေါင်းကို SUMX မှ ဆက်လက်တွက်ချက် သွားမည် ဖြစ်သည်။

ဤစာမျက်နှာတွင်ပါဝင်သည့် ခေါင်းစဉ်များ
ဆက်လက်လေ့လာရမည့် သင်ခန်းစာ
7.2 Filter Context

DAX Formula များရေးသားရာတွင် Column Reference များ အသုံးပြုရေးသားခြင်းဖြစ်ရာ သက်ဆိုင် ရာ Row များအလိုက် တွက်ချက်မှုများဆောင်ရွက်နိုင်ရန်အတွက် Table တစ်ခုအတွင်းရှိ Row တစ်ခုချင်း စီအား ခွဲထုတ်တွက်ချက်ရခြင်းဖြစ်ရာ ၎င်းအခြေအနေကို Row Context ဟု ခေါ်ဆိုခြင်း ဖြစ်သည်။

Row Context များကို Calculated Column များ ရေးသားရာတွင် အလိုအလျောက် သတ်မှတ်ပေးခြင်း ဖြစ်ပြီး FILTER, SUMX, AVERAGEX စသည့် Iterator Function များမှလည်း သတ်မှတ်ပေးနိုင် သည်။

အောက်ပါပုံတွင် Total Amount ရရှိရန် Calculated Column တစ်ခုထည့်သွင်း ရေးသားခြင်းဖြစ်သည် -

image3.png

7.2 Filter Context

Filter Context ဆိုသည်မှာ  Formula တွက်ချက်မှုများ မဆောင်ရွက်မီ Table / Column များကို သတ်မှတ်ချက်များအတိုင်း Filter စစ်ထုတ်ပေးသည့် အခြေအနေကို ဆိုလိုခြင်း ဖြစ်သည်။

Filter Context များကို Pivot Table ၏User Interface ဖြစ်သည့် Rows Area, Columns Area, Filter, Slicer, Timeline စသည်တို့မှ အဓိကသတ်မှတ်ပေးခြင်းဖြစ်သည်။ ထို့အပြင် CALCULATE, CALCULATETABLE, ALL, ALLEXCEPT စသည့် DAX Formula များမှလဲ Filter Context များကို လိုသလို သတ်မှတ်ပေးနိုင်သည်။

image4.png
7.1 Row Context

7.3 Row Context နှင့် Filter Context အတူတကွ အလုပ်လုပ်ခြင်း

7.3 Row & Filter Work together

Row Context တွင် ရေးသားခဲ့သည့် Total Amount Measure အား Pivot Table သို့ ထည့်သွင်းလိုက်သည့်အခါ အောက်ပါ အတိုင်း မြင်ရမည် ဖြစ်သည် -

အထက်ပါ Formula တွင် Sale Table မှ Quantity Column ရှိတန်ဖိုးများ၏ ပေါင်းလဒ်ကို တွက်ချက်ရန် CALCULATE Formula အသုံးပြုရေးသားထားခြင်းဖြစ်သည်။ CALCULATE Formula ၏ Syntax မှာ CALCULATE(Expression, [Filter1],…) ဖြစ်ရာ Expression နေရာတွင် Quantity Column ၏ ပေါင်းလဒ်အား တွက်ချက်ရန်နှင့် Filter Argument နေရာတွင်  Date Table ၌ 2015 June လမှ 2015 December လအထိ တန်ဖိုးများသာ Filter စစ်ထုတ်စေရန် ရေးသား ထားခြင်းဖြစ်သည်။

Sale Table (Many-Side) နှင့် Date Table (One-Side) တို့အား Relationship ချိတ်ဆက်ထားခြင်း ကြောင့် Date Table တွင် Filter စစ်ထုတ်ခြင်းသည် Sale Table တွင် အကျိုးသက်ရောက်မှု ရှိသည် ဖြစ်ရာ အထက်ပါ Formula သည် Sale Table တွင် 2015 June လမှ 2015 December လအထိတန်ဖိုးများသာ ရွေးချယ်တွက်ချက်ပေးသွားခြင်း ဖြစ်ပါသည်။

7.4.2 Row Context & Relationship

Relationship ချိတ်ဆက်ထားသော်လည်း Table တစ်ခုနှင့် တစ်ခုကြား Row Context သည် အလို အလျောက် သက်ရောက်နိုင်မှု မရှိပါ။ အောက်ပါ ဥပမာတွင် Sale Table ရှိ Price Column မှ Product Table ၏ Cost Column ၏ ခြားနားချက်ရရှိရန် အောက်ပါအတိုင်း Formula ရေးသားထားခြင်း ဖြစ်သည် -

=Sale[Unit Price] – Product[Unit Cost]

အထက်ပါပုံတွင် သက်ဆိုင်ရာ Product တစ်ခုချင်းစီ၏ တန်ဖိုးများ မရရှိပဲ စုစုပေါင်းတန်ဖိုး ကိုသာ Row အားလုံးတွင် မြင်တွေ့ရမည် ဖြစ်သည်။ Product တစ်ခုသည် Sale Table တွင် အကြိမ်ပေါင်းများစွာ ပါနေ မည်ဖြစ်ရာ ထိုသက်ဆိုင်သည့် Row အားလုံးတွင် Row Context သက်ရောက်ပြီး ထိုသက်ဆိုင်သည့် Row များအားလုံး ပြန်လည်ရရှိစေရန် RELATEDTABLE Formula ကို ပေါင်းစပ် အသုံးပြုရမည် ဖြစ်သည်။

Product တစ်ခုချင်းစီ၏ သက်ဆိုင်ရာ  Row များအပေါ်မူတည်၍ Quantity များကို တွက်ချက်နိုင်ရန် အောက်ပါအတိုင်း Formula ရေးသားလိုက်ပါမည် -

=SUMX( RELATEDTABLE(Sale), Sale[Quantity] )

7.4.1  Filter Context & Relationship

Table တစ်ခုနှင့် တစ်ခုကြား Relationship တည်ဆောက်ထားလျင် One-Side Table တွင် Filter စစ်ထုတ်ပါက Many-Side Table တွင် အလိုအလျောက် Filter သက်ရောက်စေမည် ဖြစ်ပါသည်။ ဥပမာ အားဖြင့် Product Table ( One-Side Table ) တွင် Filter သက်ရောက်ရန် Formula  ရေးသားပါက Sale Table ( Many-Side ) တွင် ၎င်း Filter နှင့် သက်ဆိုင်သည့် တန်ဖိုးများသာ ရွေးချယ်တွက်ချက် ပေးသွားမည် ဖြစ်ပါသည်။

Sold Qty in 2015 Jun to 2015 Dec:=

CALCULATE(SUM(Sales[Quantity]),

DATESBETWEEN('Date'[Date],"1/6/2015", "31/12/2015" ))

အထက်ပါပုံတွင် တွေ့ရှိရသည့်အတိုင်း ရေးသားထားသည့် Formula မှာ အဖြေမရရှိပဲ Error များသာ ရရှိခြင်း ဖြစ်သည်။ Sale Table နှင့် Product Table ကြားတွင် Relationship တည်ဆောက်ထားသော် လည်း Table နှစ်ခုမှ Column များကြား ခြားနားချက်ကို တိုက်ရိုက်ရှာဖွေ၍ မရပါ။ အကြောင်းအရင်းမှာ Relationship ချိတ်ဆက်ထားသော်လည်း Row Context သည် Table နှစ်ခုကြား အလိုအလျောက် တိုက်ရိုက် သက်ရောက်နိုင်မှုမရှိခြင်းကြောင့် ဖြစ်သည်။

Relationship ချိတ်ဆက်ထားသော Table များကြား Row Context သက်ရောက်နိုင်ရန်အတွက် RELATED နှင့် RELATEDTABLE Formula တို့အား အသုံးပြုနိုင်သည်။ အထက်ပါ Formula မှ မှန်ကန်သည့် အဖြေများရရှိနိုင်ရန်အတွက် အောက်ပါအတိုင်း ရေးသားနိုင်သည် -

=Sale[Unit Price]- RELATED( Product[Unit Cost] )

အခန်း (၄) တွင် RELATION Function များ အကြောင်း ရှင်းပြခဲ့ပြီးဖြစ်ရာ RELATED Formula အား Many-Side Table တွင် ရေးသားလေ့ရှိပြီး RELATEDTABLE Formula အား One-Side Table တွင် ရေးသားလေ့ရှိကြောင်း နားလည်ပြီး ဖြစ်မည်ဟု ယူဆပါသည်။

အထက်ပါ ဥပမာတွင် Sale Table သည် Many-Side Table ဖြစ်သည့်အတွက် RELATED Formula အသုံးပြုပြီး Unit Cost များ ရယူခဲ့ခြင်းဖြစ်သည်။

အောက်ပါ ဥပမာတွင် Product Table ၌ Proudct တစ်ခုချင်းစီ၏ ရောင်းချသည့် ပမာဏ စုစုပေါင်း ရရှိရန် Formula ရေးသားထားခြင်းဖြစ်သည် -

Row Context မှ Filter Context သို့ ကူးပြောင်းသည့်အခြေအနေကို Context Transition ဟု ခေါ်ဆိုသည်။ ထိုသို့ ကူးပြောင်းရန်အတွက် လက်ရှိ ရေးသားသည့် Formula ရှေ့တွင် CALCULATE Formula ကို ထည့်သွင်းရေးသားရမည် ဖြစ်သည်။

Row Context and Relationship သင်ခန်းစာတွင် Product Table ၌ Product တစ်ခုချင်းစီ၏ ရောင်းအားပမာဏ ရရှိရန် Product Table တွင် အောက်ပါ အတိုင်း Formula ရေးသားခဲ့ရာ Row အသီးသီးတွင် စုစုပေါင်း တန်ဖိုးကိုသာ ရရှိကြောင်း သိရှိခဲ့ပြီးဖြစ်သည်။

image5.png

ရေးသားထားသည့် Measure ၏ Formula မှာ =SUMX( Sale, Sale[Quantity] * Sale[Price]) ဖြစ်သည်။ ဤ Formula အား Pivot Table အတွင်းသို့ ထည့်သွင်းလိုက်သည့်အခါ Sale Table အား Pivot Talbe ၏ Filter Context များမှ လိုအပ်သလို Filter စစ်ထုတ်သွားမည် ဖြစ်ပြီး Filter စစ်ထုတ်ပြီး ကျန်ရှိသည့် Table ၏ Quantity Column နှင့် Price Column နှစ်ခု မြှောက်ရန်အတွက် SUMX Formula ကြောင့် ဖြစ်ပေါ်လာသည့် Row Context မှ သတ်မှတ်တွက်ချက် ပေးသွားမည် ဖြစ်ပါသည်။

ဥပမာအားဖြင့် အထက်ပါ ပုံတွင် Select မှတ်ထားသည့် Cell ကွက်၏ တန်ဖိုးရရှိရန် ရှေးဉီးစွာ Sale Table အား 2013 ခုနှစ် Audio နှင့် သက်ဆိုင်သည့် တန်ဖိုးများသာကျန်ရှိစေရန် Pivot Table ၏ Filter Context မှ စစ်ထုတ်သွားမည်ဖြစ်ပြီး ထိုကျန်ရှိသည့် Sale Table မှ Quantity နှင့် Price Column တို့၏ သက်ဆိုင်ရာ Row အချင်းချင်းမြှောက်ရန်အတွက် Row Context မှ သတ်မှတ် တွက်ချက်သွား မည်ဖြစ်ပါ သည်။

7.4 Relationship and Evaluation Context

image6.png
image7.png
image8.png
image9.png
image10.png

7.5 Context Transition

image9.png
7.4 Evaluation Context & Relationship
7.4.1 Filter Context and Relationship
7.4.2 Row Context and Relaionship
7.5 Context Transition

အခြား Table ၏ တန်ဖိုးများ ( Product Table တွင် Sale Table မှ တန်ဖိုးများ ) ကို တွက်ချက်ခြင်း ဖြစ်သည့်အတွက် Row Context  များ သက်ရောက်နိုင်မှု မရှိပဲ စုစုပေါင်းတန်ဖိုးသာရရှိခြင်းဖြစ်သည်။ ပြီးခဲ့သည့် Row Context and Relationship သင်ခန်းစာမှ ဥပမာတွင် Sale Table ၌ Product တစ်ခုချင်းစီနှင့် သက်ဆိုင်သည့် Row များတွင် Row Context များ သက်ရောက်ပြီး ထိုသက်ဆိုင်သည့် Row များ ပြန်လည်ရရှိစေရန် RELATEDTABLE အသုံးပြုပြီး အောက်ပါအတိုင်း Formula ရေးသားခဲ့ခြင်းဖြစ်သည် -

=SUMX( RELATEDTABLE(Sale), Sale[Quantity] )

ယခုဥပမာတွင် RELATEDTABLE အသုံးပြုပြီး Sale Table တွင် Row Context  များ သက်ရောက် စေမည့် အစား  Product Table တွင် သက်ဆိုင်ရာ Row များကို Filter Context အဖြစ်ပြောင်းလဲ တွက်ချက်ပါမည်။ ထိုသို့တွက်ချက်ရန်အတွက် အောက်ပါအတိုင်း Formula ရေးသားလိုက်ပါမည် -

=CALCULATE( SUM(Sale[Quantity] ))

SUM(Sale[Quantity]) ဟူသည့် Formula ရှေ့တွင် CALCULATE Formula  ရေးသားလိုက်သည် နှင့် လက်ရှိ Row Context များသည် Filter Context အဖြစ်ပြောင်းသွားပြီး Product တစ်ခုချင်းစီနှင့် သက်ဆိုင်သည့်  Sale Table မှ  Row များကို  Filter စစ်ထုတ်ပြီး တွက်ချက်ပေးသွားမည် ဖြစ်ပါသည်။

Product Table တွင် သက်ဆိုင်ရာ Product အလိုက် ရောင်းအား ပမာဏများရရှိရန် အောက်ပါ Formula နှစ်ခု ဖြင့် လေ့လာခဲ့ကြပြီးဖြစ်သည် -

=SUMX( RELATEDTABLE(Sale), Sale[Quantity] )

=CALCULATE( SUM(Sale[Quantity] ))

ပြန်လည်ရရှိသည့်  အဖြေတန်ဖိုးများမှာ တူညီသော်လည်း တွက်ချက်သည့် နည်းစနစ် ကွဲပြားကြောင်း သတိပြုရန်လိုအပ်ပါသည်။ ပထမနည်း ဖြစ်သည့် RELATEDTABLE ကို အသုံးပြုသည့်နည်းစနစ်မှာ Sale Table တွင် Product တစ်ခုချင်း၏  သက်ဆိုင်ရာ Row များကို Row Context သက်ရောက်စေပြီး တွက်ချက်ထားခြင်းဖြစ်သည်။ ဒုတိယ CALCULATE ကို အသုံးပြုသည့် နည်းစနစ်မှာ Product Table ရှိ Product တစ်ခုချင်းစီကို Filter Context အဖြစ်ပြောင်းလဲပြီး Sale Table  တွင် သက်ဆိုင်ရာ Product အလိုက် Filter စစ်ထုတ်ကာ တွက်ချက် ထားခြင်းဖြစ်သည်။

image11.png

7.6  Calculated Field ( Measure ) and Context Transition

Product Table တွင် Product တစ်ခုချင်းစီ၏ ရောင်းအား ပမာဏရရှိရန် အောက်ပါအတိုင်း Formula ရေးသားသော်လည်း အဖြေမှန်မရရှိပဲ စုစုပေါင်းတန်ဖိုးသာ  ရရှိကြောင်း ပြီးခဲ့သည့် သင်ခန်းစာများတွင် လေ့လာသိရှိခဲ့ပြီး ဖြစ်သည် -

image9.png

သို့ရာတွင် Calculated Formula တွင် တိုက်ရိုက်ရေးသားမည့်အစား ထို Formula ကို Calculated Field (Measure) အဖြစ် ဉီးစွာရေးသားပြီး ၎င်း Calculated Field ကို Calculated Column တွင် ပြန်လည်ရေးသားကြည့်ပါမည် ။

ပထမဆုံး Calculated Field (Measure) ကို အောက်ပါအတိုင်း ရေးသားပါမည်-

Total Qty:=SUM(Sale[Quantity])

ထို့နောက် ရေးသားထားသည့် Calculated Field ကို Calculated Column တွင် ထည့်သွင်းရေး သားလိုက်ပါက အောက်ပါအတိုင်း Product တစ်ခုချင်းစီ၏ သက်ဆိုင်ရာ ပမာဏတန်ဖိုးများ ရရှိသည်ကို တွေရပါမည်။

image12.png
7.6 Measure & Context Transition

Formula တစ်ခုတွင် Row Context တစ်ခုထက်ပို၍ သက်ရောက်စေပြီး လိုအပ်သည့် တွက်ချက်မှုများ ပြုလုပ်နိုင်သည်။ အောက်ပါ Pivot Table တွင် တစ်လချင်းအလိုက် Product အားလုံး၏ ပျမ်းမျှရောင်းအားများကို တွက်ချက်ထား ခြင်းဖြစ်သည်။

ဤသင်ခန်းစာတွင် Product များ၏ ဈေးနှုန်းများအပေါ်မူတည်၍ Rank ခွဲခြားသတ်မှတ်ပါမည်။ ထိုသို့ ခွဲခြားသတ်မှတ်ရန်အတွက် COUNTROWS ၊ FILTER ၊ VALUES နှင့် EARLIER  Function များ ကို အောက်ပါအတိုင်း အသုံးပြုရေးသားပါမည်။

ရေးသားထားသော Formula မှာ အောက်ပါအတိုင်းဖြစ်သည် -

=COUNTROWS( FILTER( VALUES('Product'[Unit Price]), 'Product'[Unit Price] >= EARLIER( 'Product'[Unit Price] )))

အထက်ပါ Formula ကို နားလည်နိုင်ရန်အတွက်အောက်ပါသဘောတရားများကို ရှင်းလင်းစွာ သဘော ပေါက်ရမည် ဖြစ်သည် -

  • Calculated Column တစ်ခု ရေးသားသည့်အခါ Row Context အလိုအလျောက်ဖြစ်ပေါ်စေပြီး ၎င်း Row Contextသည် အပြင်တွင် တကယ်ရှိသည့် Product Table ၏ Row တစ်ခုချင်းစီ တွင် သက်ရောက်နေမည် ဖြစ်သည်။ အောက်ပါဥပမာတွင် Unit Price Column အား 1.1 ဖြင့် မြှောက်ရာ Column အတွင်းရှိ Row တစ်ခုချင်း၏ မြှောက်လဒ်ရရှိရအတွက် Row Context မှ ခွဲခြားတွက်ချက်ပေးသွားခြင်းဖြစ်သည်။

 

အထက်ပါပုံတွင် Select မှတ်ထားသော Cell ကွက်တွင် ရေးသားထားသည့် Formula မှာ ='Product'[Unit Price]*1.1 သာဖြစ်သော်လည်း ( အခြား Row များနှင့် အတူတူပင် ဖြစ်သော်လည်း) Row Context သက်ရောက်တွက်ချက်ခြင်းကြောင့် ထို Cell ကွက်အတွက် 'Product'[Unit Price] ၏ တန်ဖိုးသည် 2295 သာ ဖြစ်သည်။

  • Filter Formula သည်လည်း Row Context ကို ဖြစ်ပေါ်စေနိုင်ပြီး ထို Row Context သည် ရေးသားသည့် Formula အတွင်း သက်ရောက်နေမည် ဖြစ်သည်။ အောက်ပါ ဥပမာတွင် ဈေးနှုန်း 1000 အထက် ရှိသည့် အရေအတွက်ကို တွက်ချက်ထားခြင်းဖြစ်ရာ Row အားလုံးတွင် တူညီသည့် အဖြေသာရရှိသည်ကို တွေ့ရမည်ဖြစ်သည်။

 

 

 

 

 

 

ဤ Formula တွင်Unit Price Column အား 1000 ထက်ကြီး/မကြီး စစ်ဆေးရာ၌ Row တစ်ခုချင်း ခွဲခြားစစ်ဆေးရမည်ဖြစ်ရာ ထိုကဲ့သို့ တစ် Row ချင်းတန်ဖိုးများ ရရှိရန်အတွက် FILTER Formula ၏ Row Context မှ ခွဲခြားတွက်ချက်ပေးသွားမည် ဖြစ်သည်။ တစ် Row ချင်းစီအား 1000 ထက်ကြီး/မကြီး စစ်ဆေးပြီးနောက် ကြီးသည့် Row များသာကျန်ရှိရန် Filter စစ်ထုတ်၍ ထို Filter စစ်ထုတ်ထားသည့် Row အရေအတွက်ကို COUNTROWS မှ ရေတွက် ပေးခြင်းဖြစ်သည်။

ထို့ကြောင့် ဤ Formula တွင် Calculated Column ၏ Row Context ကို အသုံးပြုခြင်းမရှိသည့် အတွက် လက်ရှိ Row ၏ တန်ဖိုးကို ထည့်သွင်းစဉ်းစားခြင်း မပြုပဲ 1000 ထက်ကြီးသည့် Price အရေအတွက်သာ Row အားလုံးတွင် ရရှိခြင်းဖြစ်သည်။

  • ဤလေ့ကျင့်ခန်း၏ ရည်ရွယ်ချက်မှာ Prodcut များ၏ Price အပေါ်မူတည်၍ Rank ခွဲလိုခြင်း ဖြစ်သည်။ တစ်နည်းအားဖြင့်ဆိုရသော် လက်ရှိ Row ၏ ဈေးနှုန်းနှင့်အထက်ရှိသော Row အရေအတွက်ကို တွက်ချက်လိုခြင်းဖြစ်သည်။ တွက်ချက်လိုသည်ကို Formula ဖြင့် ဖော်ပြရသော် အောက်ပါအတိုင်း ဖော်ပြနိုင်သည် -

= COUNTROWS( FILTER( 'Product',

        'Product'[Unit Price]  >=  လက်ရှိ Row ၏ ဈေးနှုန်း ) 

လက်ရှိ Row ၏ ဈေးနှုန်းကို ရရှိလိုလျင် Calculated Column ၏ Row Context ကို အသုံးပြု တွက်ချက်နိုင်သည်။ သို့သော် Formula အတွင်းတွင် Calculated Column ၏Row Context ကို အသုံးပြုပါမည်ဟု မည်သို့ ခွဲခြားသတ်မှတ်ရမည်မှာ အခက်အခဲတစ်ခုဖြစ်သည်။

  • Calculated Column တွင် FILTER Formula ရေးသားသည့်အခါ Calculated Column မှ ဖြစ်ပေါ်စေသည့် Row Context သည် ပထမဉီးစွာ သက်ရောက်သည့် Row Context ဖြစ်ပြီး FILTER Formula မှ သက်ရောက်သည့် Row Context သည် ဒုတိယ သက်ရောက်သည့် Row Context ဖြစ်ပါသည်။ Formula အတွင်းတွင် ပထမဉီးစွာသက်ရောက်သည့် Row Context အား အသုံးပြုလိုပါက EARLIER Formula အား အသုံးပြုရေးသားနိုင်ပါသည်။ ထို့ကြောင့် Formual အား အောက်ပါအတိုင်း ပြုပြင်ရေးသားပါမည် -

=COUNTROWS( FILTER( 'Product', 'Product'[Unit Price]  >= EARLIER('Product'[Unit Price])) 

 

အနီရောင်ဖြင့် ပြထားသည့် 'Product'[Unit Price]  သည် FILTER Formula ၏ Row Context များ ( တနည်းအားဖြင့် Formula တွင် ဒုတိယ သက်ရောက်သည့် Row Context များ) သက်ရောက်နေမည်ဖြစ်ပြီး အပြာရောင်ဖြင့် ပြထားသည့် EARLIER('Product'[Unit Price]) Formula တွင် Calculated Column မှ ပထမဦးစွာ သက်ရောက်ထားသည့် Row Context များ သက်ရောက်နေမည် ဖြစ်ပါသည်။

တစ်နည်းဆိုရသော် Bold တင်ထားသည့် မှ Column တစ်ခုလုံး ၏ တန်ဖိုးများ ရှိနေမည်ဖြစ်ပြီး Underline တားထားသည့် )Formula မှ လက်ရှိ Row ၏ တန်ဖိုးတစ်ခုတည်းသာ ရရှိမည် ဖြစ်ပါသည်။

ထို့ကြောင့် Price Column အား လက်ရှိ Row ၏ တန်ဖိုးနှင့်အထက် ကြီးသည့် တန်ဖိုးများသာ Filter စစ်ထုတ်ရန်အတွက် FILTER( 'Product', 'Product'[Unit Price]>= EARLIER('Product'[Unit Price]) ဟု ရေးသားနိုင်ခြင်းဖြစ်သည်။

ယခုထိ ရှင်းလင်းချက်များအရ ရေးသားထားသည့် Formula အား Product Tableတွင် Calculated Column အဖြစ် ရေးသားလျင် အောက်ပါအတိုင်း ရရှိမည် ဖြစ်သည် -

 

 

  • အထက်ပါ ပုံတွင် Rank သည် 1 ဖြင့် စရမည့် အစား 3 ဟုစတင် ရရှိနေသည်ကို တွေ့ရပါမည်။ အကြောင်းမှာ 2499 တန်ဖိုးသည် အကြီးဆုံးတန်ဖိုးဖြစ်ပြီး ထိုတန်ဖိုးသည် သုံးကြိမ်ပါဝင်နေသည့် အတွက် လက်ရှိ Row နှင့်အထက် ကြီးသည့် Row များကို Filter စစ်၍ ရေတွက်သည့်အခါ 3 ဟု ပြန်လည်ရရှိခြင်း ဖြစ်သည်။ တစ်နည်းဆိုရသော် Price တန်ဖိုးများ ထပ်ပါနေသည့်အတွက် Ranking တန်ဖိုးများ လွဲမှားနေခြင်း ဖြစ်သည်။

  • ထို့ကြောင့် Price Column တွင် တန်ဖိုးများ ထပ်ပါမနေစေပဲ Unique တန်ဖိုးများသာ ရရှိစေရန်( Price တန်ဖိုးများ တစ်ကြိမ်သာပါဝင်စေရန် ) Price Column အား VALUES Formula ဖြင့် တွဲဖက် အသုံးပြုရေးသားလိုက်ပါမည်။ VALUES သည် Column ဖြင့်သာ တွဲဖက် အသုံးပြုနိုင် သည် ဖြစ်သည့်အတွက် FILTER Formula ရေးသားသည့်အခါ Product Table တစ်ခုလုံး မပေးပဲ Price Column တစ်ခုတည်းကိုသာ အသုံးပြုရေးသားလိုက်ပါမည်။

  • မှန်ကန်သည့် Ranking ရရှိရန်အတွက် အပေါ်တွင် ရှင်းလင်းခဲ့သည့် သဘောတရားများအားလုံးကို ပေါင်းစပ်၍ အောက်ပါအတိုင်း ရေးသားလိုက်ပါမည် -

=COUNTROWS( FILTER( VALUES('Product'[Unit Price]), 'Product'[Unit Price] >= EARLIER( 'Product'[Unit Price] ) ) )

6.6 Quarerly % for Each Year

သက်ဆိုင်ရာ တန်ဖိုးအသီးသီး အဖြေမှန်များ ရရှိသည့် အကြောင်းအရင်းမှာ

  • Calculated Field (Measure) များကို Calculated Column တွင် ထည့်သွင်းရေးသား လိုက်သည့်အခါ ထို Calculated Field Formula ၏ ရှေ့တွင် CALCULATE Formula အလိုအလျောက် ဝန်းရံရေးသားပေးသွားပြီး သက်ဆိုင်ရာ Row များကို Filter Context များအဖြစ်ပြောင်းပေးသွားခြင်း ( တနည်းအားဖြင့် Context Transition အလိုအလျောက် ဖြစ်ပေါ်သွားခြင်း) ကြောင့် ဖြစ်ပါသည်။

7.7 Calculated Field တွင် Row Context များ ထပ်ဆင့်ရေးသား အသုံးပြုခြင်း

image13.png

ရေးသားထားသည့် Calculated Field (Measure) မှာ အောက်ပါအတိုင်း ဖြစ်သည် -

AverageSalesofProducts:=

AVERAGEX( 'Product',

SUMX(RELATEDTABLE(Sale), 'Sale'[Quantity] * 'Product'[Unit Price]) )

AVERAGEX Formula ၏ Syntax မှာ AVERAGEX( Table, Expression ) ဖြစ်ရာ Table နေရာတွင် Product Table ကို အသုံးပြုထားပြီး Expression နေရာတွင် SUMX ကို အသုံးပြုရေးသားထားခြင်းဖြစ်သည်။

SUMX ၏ Formula Syntax သည်လည်း AVERAGEX နှင့် ဆင်တူ ဖြစ်ရာ Table နေရာတွင် RELATETABLE(Sale) ကို ရေးသားထားပြီး Expression နေရာတွင် 'Sale'[Quantity] * 'Product'[Unit Price] ဟု ရေးသားထားခြင်း ဖြစ်သည်။

အထက်ပါ Formula ကို သတိထားကြည့်လျင် မတူညီသည့် Table နှစ်ခုမှ Column များ( Sale Table မှ Quantity Column နှင့် Product Table မှ Unit Price Column )  အား မြှောက်ထားခြင်းကို တွေ့ရပါ မည်။ ပုံမှန်အားဖြင့် မတူညီသည့် Table များမှ Column များအား တွက်ချက်လိုလျင် RELATED Formula များ အသုံးပြုတွက်ချက်ရသည်ဖြစ်သော်လည်း ယခု Formula တွင် RELATED Formula အသုံးပြုခြင်းမရှိပဲ တိုက်ရိုက်တွက်ချက်ထားခြင်းဖြစ်သည်။

ထိုသို့ တိုက်ရိုက်တွက်ချက်ထားနိုင်ခြင်းမှာ Sale Table ၏ Quantity Column သည် SUMX Formula ၏Sale Table မှ ( တိတိကျကျပြောရလျင် RELATEDTABLE(Sale) မှ ) Row Context ကို အသုံးပြုတွက်ချက်ထားခြင်းဖြစ်ပြီး Product Table ၏ Unit Price Column သည်  AVERAGEX Formula  ၏ Product Table မှ Row Context ကို အသုံးပြုတွက်ချက်ထားခြင်းဖြစ်သည်။

RELATED Formula ကိုအသုံးပြုရခြင်းမှာ ချိတ်ဆက်ယူမည့် Table မှ သက်ဆိုင်ရာ Row များအပေါ် Row Context သက်ရောက်စေပြီး သက်ဆိုင်ရာ တန်ဖိုးများ ရယူလိုခြင်းဖြစ်သည်။ အထက်ပါ Formula တွင် သက်ဆိုင်ရာ Row Context များကို AVERAGEX နှင့်  SUMX Formula များမှ သက်ရောက်စေပြီးဖြစ်ရာ RELATED Formula အား အသုံးပြုရန် မလိုအပ်ခြင်း ဖြစ်သည်။

အထက်ပါ Formula အား ဘာသာပြန်ဆိုရသော် Product တစ်ခုချင်းနှင့် သက်ဆိုင်သည့် Sale Table မှ Row များအား RELATEDTABLE ဖြင့် ချိတ်ဆက်ရယူပြီး ထို Row များ၏ Quantity နှင့် Price ကို မြှောက်ပါမည်။ ထို Product တစ်ခုချင်းစီ၏ မြှောက်လဒ်များအား စုစုပေါင်း ပေါင်းလဒ်ကို SUMX ဖြင့်ရှာဖွေပါ မည်။ ထို့နောက် Product တစ်ခုချင်း၏ ပေါင်းလဒ်များအပေါ်မူတည်၍ Product အားလုံး၏ ပျမ်းမျှတန်ဖိုး အား  AVERAGEX Formula ဖြင့် တွက်ချက်ထားခြင်းဖြစ်ပါသည်။

7.8 Calculated Column တွင် Row Context များ ထပ်ဆင့် အသုံးပြုခြင်း

image14.png
Rank
image15.png
image16.png
image17.png
image14.png
Rank
7.7 Nested Row Context in CF
7.8 Nested Row Context in CC
bottom of page