[[20220422162821]] 『パワークエリのマージ機能の完全外部一致時の挙動』(えん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『パワークエリのマージ機能の完全外部一致時の挙動について』(えん)

お世話になります。

パワークエリでマージ機能を使い、
完全外部一致を選んだ際、主キーにあたる列のマージ後のデータ順序がおかしくなるのは
回避の仕様がないのでしょうか。

例示が難しかったのですが、以下のサイトでも同様の症状(?)が確認されたようです。

※他サイトを引用するのが良いのかはわからないですが、
あまり言及されている方が見つからず。。。
https://www.kurumico.com/excel-powerquery-merge-fullouter/4498/

< 使用 Excel:Office365、使用 OS:Windows10 >


インデックス列を追加して、後でソートしてはどうでしょうか。

(マナ) 2022/04/22(金) 19:44


> 回避の仕様がないのでしょうか。
先に重複のない昇順の ID列を作っておいてそこにマージで紐づけすればいいと思います。

    ID結合 = Table.FromList(List.Sort(List.Distinct(左テーブル[ID] & 右テーブル[ID])), Splitter.SplitByNothing(), {"ID"}),
    クエリのマージ左 = Table.NestedJoin(ID結合, {"ID"}, 左テーブル, {"ID"}, "左", JoinKind.LeftOuter),
    左テーブルの展開 = Table.ExpandTableColumn(クエリのマージ左, "左", {"名前", "販売数"}),
    クエリのマージ右 = Table.NestedJoin(左テーブルの展開, {"ID"}, 右テーブル, {"ID"}, "右", JoinKind.LeftOuter),
    右テーブルの展開 = Table.ExpandTableColumn(クエリのマージ右, "右", {"所属店舗", "販売数"}, {"右.所属店舗", "右.販売数"})

マージのやり方は直接アイテムにアクセスする方法でもいいですね。

(d-q-t-p) 2022/04/23(土) 09:06


みなさま

ありがとうございます。
やはり整序のためにルール追加をする以外方法はないのですか......

一致列、不一致の左テーブル列、一致列のように並ぶことなどもあり、
この挙動の理由がよくわからないのですが、
マージの際に条件一致した順に並んでいるというわけでもないのですね。

(えん) 2022/04/25(月) 09:33


> やはり整序のためにルール追加をする以外方法はないのですか......
「回避の仕様がないのでしょうか」とあったので それが知りたいのかと思いましたが。

完全外部一致なのでマージすればどっちかのテーブルの順番が崩れるのは当然かと思い
ます。左テーブルを基準にした場合は逆に右テーブルで一致しないものは下行追加にな
ります。基準となる列がないのでそれ以外の仕様にはならないでしょう。
(d-q-t-p) 2022/04/25(月) 10:20


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.