共通列でデータテーブルを結合する(内部・左の違いを確認)
同じ顧客表と注文表で、内部結合は1行、左結合は2行になる理由を、入力と結果の表で確認します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。
実行前に確認
- 左結合で残すのは「最初のデータテーブル」です。この例ではCustomersを左側に固定します。左右を入れ替えると残る未一致行も変わります。
- 結合結果はJoinedDataTableで確認します。不一致行が結果に含まれなくても、元のCustomersやOrdersから行を削除する手順ではありません。空の金額を自動で0に置き換える例でもありません。
- キーの型・空白・大文字小文字をそろえます。キーが重複すると組み合わせ分の行が増え、左結合でも顧客1件につき1行とは限りません。この練習のIDは各表内で一意です。
- WindowsのPADを起動・実行できる環境を用意してください。利用できる実行方法はライセンスや組織の設定に依存します。この例には外部コネクターの接続・メール送信・ファイルの書き込みはありません。
1使うアクション
- アクション 1新しいデータ テーブルを作成するCustomers:顧客C01・C03の2行
- アクション 2新しいデータ テーブルを作成するOrders:注文先C01・C02の2行
- アクション 3データ テーブルを結合するまず内部で実行し、次にレフトへ変更して再実行
図で見る処理のイメージ
概念図Customersを左、Ordersを右に固定し、結合操作だけを変えます。C01は一致、C03は左側だけ、C02は右側だけのIDです。
注文がない顧客C03は、結果に残る?
左 最初:Customers
| 顧客ID | 顧客名 |
|---|---|
| C01 | 青空商店 |
| C03 | 夕凪商店 |
C03は左側だけ
注文表に相手がいない顧客です。
右 2番目:Orders
| 注文先ID | 金額 |
|---|---|
| C01 | 1200 |
| C02 | 500 |
C02は右側だけ
顧客表に相手がいない注文です。
内部(Inner)1行
| 顧客ID | 顧客名 | 注文先ID | 金額 |
|---|---|---|---|
| C01 | 青空商店 | C01 | 1200 |
一致するC01だけ
C03は結果に含まれません。
レフト(Left)2行
| 顧客ID | 顧客名 | 注文先ID | 金額 |
|---|---|---|---|
| C01 | 青空商店 | C01 | 1200 |
| C03 | 夕凪商店 | (空) | (空) |
左側のC03も残る
相手がない注文先IDと金額は空の欄です。
右側だけのC02は、どちらの結果にも入りません「左」は最初の表です。表を左右逆にすると、残す未一致行も変わります。
内部は一致したC01だけ。左は未一致のC03も残し、右の注文欄を空にします。右側だけのC02はどちらにも入りません。
架空データと指定した結合規則から示した期待値です。実際のPower Automateフローを実行して確認した結果ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する9ステップの設定と確認方法
- 1
準備:WindowsのPower Automate for desktopで練習用フローを作り、Power Fxをオフにします。以下は架空の表をフロー内で作る例です。Excelファイルやクラウドの接続は使いません。
- 2
1つ目の「新しいデータ テーブルを作成する」でビジュアルエディターを開き、列を「顧客ID」「顧客名」の順にします。C01/青空商店、C03/夕凪商店の2行を入力し、生成された変数の名前をCustomersにします。IDは文字列で、前後に空白を付けません。
- 3
2つ目も同じアクションを置き、列を「注文先ID」「金額」の順にします。C01/1200、C02/500の2行を入力し、生成された変数の名前をOrdersにします。顧客表にはC02がなく、注文表にはC03がないことを確認します。
- 4
「データ テーブルを結合する」:最初のデータテーブルを %Customers%、2番目を %Orders%、結合操作を「内部(Inner)」にします。「左側」は最初のCustomersです。出力変数はJoinedDataTableを使います。
- 5
結合規則:最初の列を「顧客ID」、比較を「等しい」、2番目の列を「注文先ID」にして、規則を1つだけ設定します。列名そのものが同じである必要はありません。今回は列の値C01などを照合します。
- 6
確認A・内部:保存して先頭から実行します。終了後、変数ペインのJoinedDataTableをダブルクリックして開き、4列・1行で、C01/青空商店/C01/1200だけがあることを確認します。C03とC02は結果に含まれません。
- 7
確認B・左:入力2表と結合規則は変えず、同じ結合アクションの結合操作だけを「左/レフト(Left)」へ変更します。保存して先頭から再実行し、JoinedDataTableが4列・2行になることを確認します。C01の一致行に加え、C03/夕凪商店が残り、その行の注文先IDと金額は相手がない空の欄になります。図の「(空)」という文字を入力する必要はありません。
- 8
結果の見比べ:左結合でも、右側にしかないC02/500は入りません。2つの結合アクションを直列に増やす必要はなく、JoinedDataTableにはその回の結果が入ります。行順に頼らずIDと内容を照合し、練習が終わったら結合操作を「内部」へ戻して保存します。
- 9
うまくいかない場合:列名が存在しないエラーなら顧客IDと注文先IDの綴り・空白を確認します。エラーなく0行なら内部結合の入力IDと等しい規則、左で2行にならないなら最初の表とCustomersのC03行を確認します。意図せず行が増えたら両表の重複キーを調べます。
- 対象環境
- Power Automate for desktop(Windows)
- 更新日
- 2026年10月12日