top of page
3.2 Merging Queries

ပြီးခဲ့သည့် သင်ခန်းစာတွင် ဖော်ပြခဲ့သည့်အတိုင်း Merging Queries ဆိုသည်မှာ Table များကို အလျားလိုက် ပေါင်း စည်းခြင်းဖြစ်သည်။ ထိုသို့ အလျားလိုက်ပေါင်းစည်းရန်အတွက် ပေါင်းစည်းမည့် Table နှစ်ခုတွင် တူညီ သည့်  Data များ ရှိနေရန် လိုအပ်သည်။ သို့မှသာ သက်ဆိုင်ရာ Row တွင် Data များ သွားရောက် ပေါင်းစည်းနိုင်မည် ဖြစ်ပါသည်။

Power Query တွင် Table နှစ်ခုပေါင်းစည်းရန် နည်းလမ်း ၆ မျိုးပါရှိသည်။ မိမိလိုအပ်သည့်အပေါ်တွင် မူတည်၍ သင့်လျော်သည့် အမျိုးအစားကို အသုံးပြုရန် ဖြစ်ပါသည်။

Merge Queries ကို ကလစ်လိုက်သည့်အခါ Merge Box ကျလာပါမည်။

Merge Box တွင် ရှေးဦးစွာ Merge ပြုလုပ်မည့် Table နှစ်ခုကို ရွေးချယ်ပေးရမည် ဖြစ်ပြီး ဆက်လက်၍ ရွေးချယ်ထားသည့် Table နှစ်ခုမှ တိုက်ဆိုင်စစ်ဆေး၍ ပေါင်းစပ်မည့် Column များကို Table နှစ်ခုလုံးတွင် Select မှတ်ရမည်ဖြစ်သည်။ ဤဥပမာတွင် Table နှစ်ခုလုံးတွင် ပါဝင်သည့် Product Column အပေါ်မူတည်၍ Table နှစ်ခု ပေါင်းစပ်ရမည် ဖြစ်ရာ Merge Box တွင် Product Column များကို ရွေးချယ် Select မှတ်ပေးရမည် ဖြစ်ပါသည်။

ထို့နောက် Join Kind တွင် Table နှစ်ခုအား မည်သို့ ပေါင်းစည်းမည်ကို ဆုံးဖြတ်ပေးသည့် နည်းလမ်း ၆ မျိုးမှ တစ်မျိုးကို ရွေးချယ်ပေးရမည် ဖြစ်ပါသည်။ Merge ပြုလုပ်သည့် နည်းလမ်းများတွင် Left / Right စသည်ဖြင့် အသုံးနှုန်းများပါဝင်ရာ Merge Box တွင် အပေါ်၌ ရွေးချယ်ခဲ့သည့် Table ကို Left Table ဟု ရည်ညွှန်းပြီး အောက်တွင် ရွေးချယ်ထားသည့် Table ကို Right Table ဟု ညွှန်းဆို ခေါ်ဝေါ်ခြင်းဖြစ်သည်။

ယခုသင်ခန်းစာအတွက် Cost Table ကို အပေါ်တွင် ရွေးချယ်၍ Left Table အဖြစ်သတ်မှတ်ပြီး Price Column ကို အောက်တွင် ရွေးချယ်၍ Right Table အဖြစ်သတ်မှတ်ကာ လေ့လာသွားမည် ဖြစ်ပါသည်။

အထက်ပါ Table နှစ်ခုလုံးတွင် Data အချို့ ထပ်ပါနေသော်လည်း Cost Table တွင် အဝါရောင်ခြယ်ထား သည့် Row များမှာ Price table တွင် ပြန်လည်ပါဝင်ခြင်းမရှိပဲ Price Table တွင် အစိမ်းရောင်ခြယ်ထား သည့် Row များသည်လည်း Cost Table တွင် မပါဝင်သည်ကို သတိပြုရန် ဖြစ်ပါသည်။

ထို Table နှစ်ခုအား Power Query အတွင်းသို့ From Table/ Range မှတစ်ဆင့် သီးခြားစီ ထည့်သွင်းပြီး Only Create Connection ဖြင့် Power Query တွင် သိမ်းဆည်း ထားပါမည်။

အဆိုပါ Table နှစ်ခုအား Merge ပြုလုပ်ရန် Power Query Editor Window  တွင် Home Tab အောက်ရှိ Merge Queries ကို ကလစ်ပါမည်။ ရွေးချယ်ရန်နှစ်ခုတရှိရာ Merge Queries ကို ရွေးချယ်လျင် လက်ရှိ Active ဖြစ်နေသည့် Query တွင် အခြား Query Data များ လာရောက် ပေါင်းစည်းသွားမည်ဖြစ်ပြီး Merge Queries as New  ကို ရွေးချယ်လျင် Merge ပြုလုပ်သည့် Data များ ပေါင်းစည်းပြီး Query အသစ်တစ်ခု ရရှိ သွားမည် ဖြစ်ပါ သည်။ မိမိလိုအပ်သည့်အပေါ်မူတည်၍ ရွေးချယ်ရန်ဖြစ်ပါသည်။

ယခုသင်ခန်းစာအတွက် အောက်ပါအတိုင်း Cost နှင့် Price ဟူ၍ Table နှစ်ခုပါရှိပါသည်။

image6.png
image7.png
image8.png

ဤနည်းလမ်းသည် Left table တွင်ပါရှိသည့် Row များကို အားလုံးပြန်လည်ပါဝင်စေမည် ဖြစ်ပြီး Right Table မှ Matched ဖြစ်သည့် Row များ ( Left table တွင် ပါဝင်သလို Right Table တွင်လည်း ပါဝင် သည့် Row များ ) ၏ တန်ဖိုးများသာ ပြန်လည်ရယူပေးမည် ဖြစ်ပါသည်။

Merge Box တွင် Left Outer ဟု ရွေးချယ်ပြီး OK ပေးလိုက်သည့်အခါ Cost table ( Left table ) ၏ Column များအားလုံးနှင့်အတူ Price ဆိုသော Column တစ်ခုကို တွေ့ရမည်ဖြစ်သည်။ ထို Price Column Heading တွင် Exand Icon ကို တွေ့ရမည် ဖြစ်ရာ ထို Icon ကို ကလစ်လိုက်လျင် Price table ၏ Column အမည်များကို မြင်တွေ့ရမည် ဖြစ်ပါသည်။ အဆိုပါ Column များထဲမှ Price Column တစ်ခုသာ ရယူလိုသည် ဖြစ်သည့်အတွက် အခြား Column များကို အမှန်ခြစ် ဖြုတ်လိုက်ပါမည်။

3.2.1 Left Outer ( all from first, matching from second )
image9.png

ထို့နောက် OK ပေးလိုက်သည့် အခါ သက်ဆိုင်ရာ Product များ၏ Price များကို Cost table တွင် ရရှိမည် ဖြစ်ပါသည်။

image10.png

Murphy bed နှင့် Infant bed တို့၏ Row များတွင် Price Column ၌ null ဖြစ်နေရခြင်း အကြောင်းမှာ အဆိုပါ Product များသည် Cost table တွင်သာ ပါရှိ၍ Price table တွင် မပါရှိခြင်းကြောင့် ဖြစ်ပါသည်။

ဤ Left Outer နည်းလမ်းသည်  VLOOKUP အသုံးပြုပုံနှင့် ဆင်တူခြင်းကြောင့် အသုံးများသည်။ ဥပမာ Left Table အဖြစ် နေ့စ ဉ် အဝင်အထွက် အရောင်းစာရင်းများကို ထည့်သွင်းထားသည့် Sale  Table အား သတ်မှတ်ထားပြီး Righ Table အဖြစ် Product တစ်ခုချင်းစီ၏ ဈေးနှုန်းများသတ်မှတ်ထားသည့် Price Table ကို သတ်မှတ်ထားသည့် ဆိုပါစို့။  

အဆိုပါ Table နှစ်ခုကို Left Outer နည်းဖြင့် Merge ပြုလုပ်ပြီး Sale Table တွင် Product တစ်ခုချင်းစီ၏ သက်ဆိုင်ရာ ဈေးနှုန်းများကို ရယူနိုင်ပါသည်။

3.2.2 Right Outer ( all from second, matching from first )

ဤနည်းလမ်းသည် Right table တွင်ပါရှိသည့် Row များကို အားလုံးပြန်လည်ပါဝင်စေမည် ဖြစ်ပြီး Left Table မှ Matched ဖြစ်သည့် Row များ ( Right table၊ Left Table နှစ်ခုစလုံးတွင် ပါဝင်သည့် Row များ ) ၏ တန်ဖိုးများသာ ပြန်လည်ရယူပေးမည် ဖြစ်ပါသည်။

Join Kind တွင် Right Outer အဖြစ်ရွေးချယ်ပြီး OK ပေးလိုက်ပါက Power Query Editor တွင် Cost table ၌ Price Column တစ်ခုတွေ့ရမည်ဖြစ်ပါသည်။ ရရှိထားသည့် Cost table တွင် မူလ Cost table ၏ Row များအားလုံး ပြန်လည်ပါဝင်လာခြင်းမရှိပဲ Cost Table နှင့် Price Table နှစ်ခုစလုံးတွင် ပါဝင်သည့် Row များကိုသာ ပြန်လည် မြင်တွေ့ရမည် ဖြစ်ပါသည်။ ( Right Outer ဖြစ်သည့်အတွက် Left Table ဖြစ်သည့် Cost table မှ Matching Row များသာ ပြန်လည်ရရှိခြင်းဖြစ်သည်။ )

Price Column ၏ Column Heading ရှိ Expand Icon ကို ကလစ်ပြီး Price Table အတွင်းရှိ  Column အားလုံးအား ရယူလိုက်ပါမည်။

image12.png

OK ပေးလိုက်သည့်အခါ  Cost Table တွင် Price Table ၏ Column များအားလုံး သက်ဆိုင်ရာ Row တန်ဖိုးများအလိုက် ဝင်ရောက်သွားပါမည်။

ယခုအခါ Product Column နှင့် Product Category Column တို့မှာ နှစ်ကြိမ်စီ ပါဝင်နေသည့်အတွက် Cost Table ၏ Product Column နှင့် Product Category Column တို့ကို ဖျက်လိုက်ပါမည်။

ထို Column နှစ်ခုကို Select မှတ်၍ Right Click ထောက်၊ Remove Columns ကို ကလစ်ပါ။ ( Cost Table ( Left table ) Column ၏ Row များတွင် လိုအပ်သည့်တန်ဖိုးများ ပြည့်စုံစွာမပါရှိပဲ Price Table ( Right Table ) ၏ Row များတွင် သာ Item အားလုံး ပြည့်စုံစွာ ပါရှိသည့်အတွက် Cost Table ၏ Columns ကို ဖျက်ရခြင်း ဖြစ်ပါသည်။ )

image13.png

ထို့နောက် လိုအပ်သည့်အတိုင်း Column များကို Order ပြန်လည်စီပြီး Column Heading များ သင့်လျော် အောင် ပြောင်းလဲ ပေးလိုက်သည့်အခါ အောက်ပါအတိုင်း မှန်ကန်သည့် Dataset တစ်ခု ရရှိမည် ဖြစ်ပါသည်။  

image14.png
3.2.3 Full Outer ( all from both )

ဤနည်းလမ်းသည် Merge ပြုလုပ်သည့် Table နှစ်ခုလုံးရှိ Row များ အားလုံးကို Output Table တွင် ပြန်လည်ထည့်သွင်းပေးသွားမည်ဖြစ်သည်။

Merge Box တွင် Join Kind အဖြစ် Full Outer ကို ရွေးချယ်ပြီး OK ပေးပါမည်။ ယခင်နည်းများ အတိုင်း Cost Table ၏ Column များအား Price Column နှင့် အတူ တွေ့ရှိရမည်ဖြစ်သည်။ Price Column ၏ Heading ရှိ Expand Column ကို ကလစ်ပြီး Price Table အတွင်းရှိ Column များ အားလုံးအား ရယူလိုက်ပါမည်။

image12.png

ထို့နောက် OK ပေးလိုက်ပါက အောက်ပါအတိုင်း မြင်တွေ့ရပါမည်။

image16.png

ရရှိသည့် Table သည် Table နှစ်ခုလုံး၏ Row များ ပါဝင်သော်လည်း နောက်ထပ် Analysis ပြုလုပ်ရန်အတွက် အဆင်ပြေသည့် အနေထား မဟုတ်သည်ကို တွေ့ရှိရပါသည်။ ထို့ကြောင့် Analysis ပြုလုပ်ရန်အတွက် အမှန်တကယ် သင့်လျော်သည့်အနေအထားရရှိရန် Merge Box တွင် ပါရှိသည့် Full Outer Function အစား Append လုပ်သည့် နည်းလမ်းဖြင့် ဖြေရှင်းပါမည်။

3.2.4 Alternative Method for Full Outer ( Using Append Function )

Append Function ကို အသုံးပြုမည် ဖြစ်သဖြင့် Home Tab အောက်ရှိ Append Queries ကို ကလစ်ပါ။ Two Tables ကို ရွေးချယ်၍  Append ပြုလုပ်မည့် Cost table နှင့် Price table ကို ဆက်လက်ရွေးချယ်ပါ။

image17.png

OK ပေးလိုက်ပါက Table နှစ်ခုကို Dataset တစ်ခုအဖြစ် ပေါင်းစည်း၍ အောက်ပါအတိုင်း မြင်တွေ့ရမည် ဖြစ်ပါသည်။

3333.PNG

အထက်ပါ Table တွင် Cost Column တွင် တန်ဖိုးရှိလျင် Price Column တွင် null ဖြစ်နေပါမည်။ အလားတူပင် Price Column တွင် တန်ဖိုးရှိလျင် Cost Column တွင် null ဖြစ်နေပါမည်။

Headboard Product သည် နှစ်ကြိမ် ပါဝင်နေသည်ဖြစ်ရာ Row 3 တွင် Cost Column ၌ တန်ဖိုးရှိပြီး Price Column တွင် null ဖြစ်နေသည်။ Row 10 တွင် Price Column ၌ တန်ဖိုးရှိပြီး Cost Column  တွင် null ဖြစ်နေသည်ကို တွေ့ရပါသည်။  သို့ဖြစ်ရာ အဆိုပါ Row နှစ်ခုကို တစ်ခုအဖြစ် ပေါင်းလိုက်လျင် Row တစ်ခုတည်းတွင် Price Column ရော၊ Cost Column တွင်ပါ တန်ဖိုးများ ရရှိမည်ဖြစ်ပါသည်။

အထက်ပါ Table တွင် Headboard ကဲ့သို့ အလားတူ Product များစွာ ပါရှိသည်ကို တွေ့ရပါမည်။ အဆိုပါ Product များ နှစ် Row မှ တစ် Row အဖြစ်ပေါင်း၍ စာရင်းချုပ်ပေးနိုင်ရန် Group By feature ကို အသုံးပြုပါမည်။ ရှေးဦးစွာ Group ပြုလုပ်မည့် Product Category နှင့် Product ကို Select မှတ်၍ Transform tab အောက်မှ Group By Feature ကို ကလစ်ပါမည်။

image19.png

ကြိုတင် Select မှတ်ခဲ့သည့် Product နှင့် Product Category Column များမှာ Group by feature တွင် အလိုအလျောက်ထည့်သွင်းရွေးချယ်ထားသည်ကို တွေ့ရပါမည်။

Aggregation Column နှစ်ခု ထည့်သွင်းပါမည်။ New Column Name နေရာတွင် Column နှစ်ခု အတွက် သင့်လျော်သည့်အမည်များပေးပြီး Operation တွင် Sum ကို ရွေးချယ်ကာ တွက်ချက်မည့် Column များအဖြစ် Cost နှင့် Price Column များကို ရွေးချယ်ပေးလိုက်ပါမည်။

image20.png

OK ပေးလိုက်ပြီးသည့်အခါ Price Table နှင့် Cost Table နှစ်ခုသည် အောက်ပါအတိုင်း Analysis ပြုလုပ်ရန် သင့်လျော်သည့် Dataset တစ်ခုအဖြစ် ပေါင်းစည်းသွားသည်ကို တွေ့ရှိရပါမည်။

image21.png
3.2.5 Inner ( Only Matching Rows )

ဤနည်းလမ်းသည် Merge ပြုလုပ်သည့် Table နှစ်ခုစလုံးတွင် ပါရှိသည့် Row များကိုသာ Output Table တွင် ပြန်လည်ထည့်သွင်း ပေးသွားမည်ဖြစ်သည်။ Left Table တွင် ပါဝင်ပြီး Right Table တွင် မပါဝင်သည့် Row များ၊ Right Table တွင်ပါဝင်ပြီး Left Table တွင် မပါဝင်သည့် Row များကို ပြန်လည်ရယူပေးမည် မဟုတ်ပဲ Left Table နှင့် Right Table နှစ်ခုစလုံးတွင် ပါဝင်သည့် Row များကိုသာ ပြန်လည် ရယူပေးသွားမည် ဖြစ်ပါသည်။

Merge Box တွင် Join Kind အဖြစ် Inner ကို ရွေးချယ်ပြီး OK ပေးပါမည်။ ယခင်နည်းများ အတိုင်း Cost Table ၏ Column များအား Price Column နှင့် အတူ တွေ့ရှိရမည်ဖြစ်သည်။ Price Column ၏ Heading ရှိ Expand Column ကို ကလစ်ပြီး Price Table အတွင်းရှိ Price Column တစ်ခုကိုသာ အမှန် ခြစ်၍ ကျန်သည့် Column များကို အမှန်ခြစ်ဖြုတ်ခဲ့ပါမည်။ အကြောင်းမှာ ရလဒ် Table တွင် ထည့်သွင်းမည့် Product များသည် Cost Table တွင် ပြည့်စုံစွာ ပါရှိနှင့်ပြီးဖြစ်သည်ကြောင့်  Price Table မှ Product Column နှင့် Product Category Column တို့ကို ထည့်သွင်းရန် မလိုအပ်တော့ခြင်းကြောင့် ဖြစ်ပါသည်။

image22.png

OK ပေးလိုက်ပါက Table နှစ်ခုစလုံးတွင် ပါဝင်သည့် Product များ၏ Cost နှင့် Price များ မှန်ကန်စွာ ရရှိသည်ကို တွေ့ရပါမည်။

image23.png
3.2.6  Left Anti ( Rows only in First )
image24.png

ဤနည်းလမ်းသည် Left Table တွင်သာ ပါဝင်သည့် Row များကိုသာ Output Table တွင် ပြန်လည်ထည့်သွင်းပေးသွားမည်ဖြစ်သည်။ Left Table နှင့် Righ Table နှစ်ခုစလုံးတွင် ပါဝင်သည့် Row များနှင့် Right Table တွင်သာပါဝင်သည့် Row များကို ပြန်လည်ရယူပေးမည် မဟုတ်ပဲ Left Table တစ်ခုတည်းတွင်သာ ပါဝင်သည့် Row များကိုသာ ပြန်လည် ရယူပေးသွားမည် ဖြစ်ပါသည်။

Merge Box တွင် Join Kind အဖြစ် Left Anti ကို ရွေးချယ်ပြီး OK ပေးပါမည်။ ယခင်နည်းများ အတိုင်း Cost Table ၏ Column များအား Price Column နှင့် အတူ တွေ့ရှိရမည်ဖြစ်သည်။ Price Column ၏ Heading ရှိ Expand Column ကို ကလစ်ပြီး Price Table အတွင်းရှိ Price Column တစ်ခုကိုသာ အမှန် ခြစ်၍ ကျန်သည့် Column များကို အမှန်ခြစ်ဖြုတ်ခဲ့ပါမည်။

OK ပေးလိုက်ပါက Left Table တွင်သာ ပါဝင်သည့် Row များသာ ပြန်လည် ရရှိသည်ကို တွေ့ရပါမည်။

image25.png

Price.1 Column သည် မည်သည့် Data မျှ မပါဝင်သည့်အတွက် အဆိုပါ Column အား ဖျက်လိုက်သည့်အခါ လိုအပ်သည့်အတိုင်း မှန်ကန်သည့် Dataset ကို ရရှိမည် ဖြစ်ပါသည်။

image26.png
3.2.7  Right Anti ( Rows only in Second )
ယခုစာမျက်နှာတွင် ပါဝင်သည့် သင်ခန်းစာများ
ဆက်လက်လေ့လာရမည့် သင်ခန်းစာ
Left Outer Merge
Right Outer Merge
Full Outer Merge
Full Outer Alternative
Inner Only
Left Anti
Right Anti

Photo Credit: Mr. Abhay Gadiya

ဤနည်းလမ်းသည် Left Anti နှင့် သဘောတရား အတူတူပင်ဖြစ်သည်။ သို့သော် Right Anti ဖြစ်သည့် အတွက် Right Table တွင်သာ ပါဝင်သည့် Row များကိုသာ Output Table တွင် ပြန်လည်ထည့်သွင်းပေးသွားမည်ဖြစ်သည်။

Merge Box တွင် Join Kind အဖြစ် Right Anti ကို ရွေးချယ်ပြီး OK ပေးပါမည်။ ယခင်နည်းများ အတိုင်း Cost Table ၏ Column များအား Price Column နှင့် အတူ တွေ့ရှိရမည်ဖြစ်သည်။ Price Column ၏ Heading ရှိ Expand Column ကို ကလစ်ပြီး Price Table အတွင်းရှိ Column များ အားလုံးအား ရယူလိုက်ပါမည်။

image27.png

OK ပေးလိုက်သည့်အခါ Left Table ဖြစ်သည့် Cost Table ၏ တန်ဖိုးများက null အဖြစ် မြင်တွေ့ရမည် ဖြစ်ပြီး Price ၏ Column များတွင်သာ တန်ဖိုးများ ရှိနေသည်ကို တွေ့ရှိရပါမည်။

image28.png

မလိုအပ်သည့် null Column များ ကို ဖျက်၍ ကျန်ရှိသည့် Column အမည်များကို သင့်လျော်သည့် အမည်များ ရရှိရန် ပြောင်းလဲလိုက်သည့်အခါ လိုအပ်သည့်အတိုင်း မှန်ကန်သည့် Dataset ကို ရရှိမည် ဖြစ်ပါသည်။

image29.png
bottom of page