RELATETABLE - Practical Case Studies
ဤလေ့ကျင့်ခန်းအတွက် Revenue Measure ရရှိရန် အောက်ပါအတိုင်း ကြိုတင်ရေးသားထားပါမည်။
Revenue:= SUMX( Sale, Sale[Quantity] * RELATED(‘Product’[Unit Price] )
ထို့နောက် အောက်ပါအတိုင်း Table ပြင်ဆင်၍ TopN ဟု အမည်ပေးပြီး Data Model အတွင်းသို့ထည့် ပါမည်။
Slicer တွင် ပေါ်နေသည့် Label Column မှာ ငယ်စဉ်ကြီးလိုက် အစဉ်တိုင်း မဟုတ်သဖြင့် အစဉ်တိုင်း ဖြစ်စေရန် TopN Table တွင် Sort By Column ကို အောက်ပါအတိုင်း အသုံးပြုပါမည် ။
ထို့နောက် အောက်ပါ Measure ရေးသား၍ Pivot Table ၏ Row Area တွင် Customer Name, Value Area တွင် အောက်ပါ Measure Name ထည့်သွင်း၍ အထက်ပါ TopN Table ၏ Label Column ကို Slicer အဖြစ် ထည့်သွင်းပါမည်။
Top Customers:=
IF(NOT( ISFILTERED( 'TopN'[Label] ) ) ,
[Revenue],
IF(HASONEVALUE('TopN'[Label]) && RANKX(ALL(Customer[Name]),[Revenue])<=VALUES ('TopN'[Value]),
[Revenue],
BLANK()
)
)
9.5 ဝယ်ယူမှုအများဆုံး Customer များ တွက်ချက်ရယူခြင်း



Before Filtering on Slicer
After Filtering on Slicer
လိုအပ်သည့်အတိုင်း ရရှိပြီ ဖြစ်သည့်အတွက် ရေးသားထားသည့် Formula အား ပြန်လည်ရှင်းပါမည်။
Top Customers:=
IF(NOT( ISFILTERED( 'TopN'[Label] ) ) ,
[Revenue],
IF(HASONEVALUE('TopN'[Label]) && RANKX(ALL(Customer[Name]),[Revenue])<=VALUES ('TopN'[Value]),
[Revenue],
BLANK()
)
)
ရေးသားထားသည့် Formula တွင် IF နှစ်ခါ ထပ်ဆင့်ရေးသားထားသည်။ ပထမ IF ၏ Logical Test မှန်လျင် Revenue Measure ကို တွက်ချက်ရန်ဖြစ်ပြီး Logical Test မှားလျင် ဒုတိယ IF ကို ဆက်လက် တွက်ချက်ရန်ဖြစ်သည်။
ပထမ IF အတွက် အသုံးပြုထားသည့် Logical Test မှာ NOT( ISFILTERED( 'TopN'[Label] ) ) ဖြစ်ရာ အဓိပ္ပါယ်မှာ TopN Table ၏ Label Column အား Filter စစ်မထားလျင် TRUE ဟု ရရှိစေမည် ဖြစ်ပြီး Filter စစ်ထားပါက FALSE ဟု ရရှိစေမည်ဖြစ်သည်။ Filter စစ်မထား သဖြင့် TRUE ဟု ရရှိပါက Revenue ကို တွက်ချက်ပေးရန်ဖြစ်ပြီး Label Column အား Filter စစ်လိုက်ပါက( တစ်နည်းအားဖြင့် Slicer တွင် ရွေးချယ်လိုက်ပါက ) ဒုတိယ IF ကို ဆက်လက်တွက်ချက်သွားမည် ဖြစ်သည်။
ဒုတိယ IF ၏ Logical Test မှာ HASONEVALUE('TopN'[Label]) && RANKX(ALL (Customer[Name]), [Revenue]) <=VALUES ('TopN'[Value]) ဖြစ်ရာ Logical Test နှစ်ခုကို AND Condition ( && ) ဖြင့် ချိတ်ဆက်ထားခြင်းဖြစ်သည်။
ပထမ Logical Test မှာ HASONEVALUE('TopN'[Label]) ဖြစ်ရာ ဆိုလိုသည်မှာ Label Column တွင် တန်ဖိုးအမျိုးအစား တစ်မျိုးတည်းသာရှိလျင် ( User မှ Slicer တွင် တစ်ခုတည်းသာ ရွေးချယ်ထား လျင် ) TRUE ဟု ရရှိမည် ဖြစ်ပြီး တစ်ခုထက်ပို ရှိနေပါက FALSE ဟု ရရှိမည် ဖြစ်သည်။
ဒုတိယ Logical Test မှာ RANKX(ALL (Customer[Name]), [Revenue]) <=VALUES ('TopN' [Value]) ဖြစ်သည်။ ဤ Logical Test တွင် Customer တစ်ဉီးချင်းစီ၏ Rank ကို Slicer တွင် ရွေးချယ်လိုက်သည့် Label ၏ Value ဖြင့်နှိုင်းယှဉ်ခြင်းဖြစ်သည်။ Customer ၏Rank သည် Slicer တွင် ရွေးချယ်လိုက်သည့် Label ၏ Value ထက် ငယ်သော် (သို့မဟုတ်) ညီသော် TRUE ဟု ရရှိမည် ဖြစ်ပြီး ကြီးပါက FALSE ဟု ရရှိမည် ဖြစ်သည်။
အထက်ပါ Logial Test နှစ်ခုကို AND ဖြင့် ချိတ်ဆက်ရေးသားထားသဖြင့် Logical Test နှစ်ခုလုံးညီမှ TRUE ဟု ရရှိမည် ဖြစ်ပြီး တစ်ခု (သို့မဟုတ်) နှစ်ခုလုံး မကိုက်ညီပါက FALSE ဟု ရရှိမည် ဖြစ်ပါသည်။ ဆိုလိုသည်မှာ Slicer တွင် Label တန်ဖိုး တစ်ခုတည်းသာ ရွေးချယ်ထား၍ Customer ၏ Rank သည် ထိုရွေးချယ်သော Label ၏ Value ထက်ငယ် (သို့မဟုတ်) ညီပါက Revenue တွက်ချက်ရန်ဖြစ်ပြီး ကြီးပါက Blank သာ ရရှိရန် ရေးသားထားခြင်းဖြစ်သည်။

OK ပေးလိုက်ပါက Slicer တွင် အစဉ်တိုင်း ပေါ်သွားမည် ဖြစ်သည်။
အထက်တွင် Top 7 အတွက် Slicer စစ်ထားသည့် Pivot Table တွင် Top 7 တန်ဖိုးများ ရရှိသော်လည်း ရရှိသည့် တန်ဖိုးများမှာ ကြီးစဉ်ငယ်လိုက် ဖြစ်မနေသဖြင့် ကြီးစဉ်ငယ်လိုက်ရရှိစေရန် Pivot Table ၏ Row Label တွင် Filter ထောက်၍ More Sort Option ကိုသွားပါ။ ပေါ်လာသည့် Sorting Box တွင် Desending နေရာ၌ Measure အမည်ကို ရွေးချယ် OK ပေးပါ။


ယခုအခါ Slicer နှင့် Pivot Table နှစ်ခုလုံးတွင် သင့်လျော်သည့် Sorting များဖြင့် တွေ့ရှိရပါမည်။


