Power BIで、テーブルをJOIN(行レベルで二つのテーブルを合成)しようとするとパラメータ設定項目が多く悩みます。関数も二種類あります。最近行き詰ることがあり、少し自分なりに整理してみました。
それにしてもMSのこの手のドキュメントはほんと不親切で、どうしたらいいのかさっぱりわかりません。日本語翻訳は理解できないところがよくありますが、この場合、英語の原文読んでも理解できないことが多いです(そもそも難解ではないかと)。。
DAXでJOINもできますが、高度なJOINが出来るPowerQueryでのJOINについて整理を試みてみます。PowerQueryではテーブルのJOINをクエリマージと呼んでいます。
JOINには、Table.NestedJoinとTable.Joinの二つの関数があります。
JOINの種類(joinKind)は以下の種類があります。この時に、注意しないといけないのはドキュメントやPBI Desktopアプリで表示される説明等でJOINする二つのテーブルの呼び方が異なります。左側・右側はなんとなくわかりますが、1番目・2番目と呼ばれることもあり、最近まで何を言っているのかよくわかりませんでした。左側のテーブルが1番目ということでした。また、Key列は1列だけでなく複数列で指定することが出来ます、これも説明が見つからず、最近まで複数列必要な時はわざわざ列を合成していました。
2つの関数の違いは、joinAlgorithmのあるかないかです。joinAlgorithmはJOINするときのアルゴリズムを指定します。これによりパフォーマンスの最適化が出来ると思います。ただし、joinAlgorithmは、公式ドキュメントがなく、なんとPowerQueryの編集窓で、joinAlgorithm.Typeと打つと説明が出てきます。これMSのサポートに教えてもらいました(こんなのどこにも書いていなく、完全な裏技です)。なお、Power Queryの画面のボタンでコードを自動生成する場合は前者の関数が使われています。
= Table.NestedJoin(
左側テーブル名(1番目), {"列名1", "列名2",…},
右側テーブル名(2番目), {"列名1", "列名2",…},
"結合後の右側テーブルのデータを入れ子にする列名",
(オプション) joinKind, (オプション) keyEqualityComparers)
= Table.Join(
左側テーブル名(1番目), {"列名1", "列名2",…},
右側テーブル名(2番目), {"列名1", "列名2",…},
"結合後の右側テーブルのデータを入れ子にする列名",
(オプション) joinKind, (オプション) joinAlgorithm,
(オプション) keyEqualityComparers)
joinAlgorithm.Type
サポートに聞いてもわからないという不思議なオプションです。
0 件のコメント:
コメントを投稿