← 手順一覧へ戻る
Power Automate Desktopデータテーブル初心者向け

共通列でデータテーブルを結合する(内部・左の違いを確認)

同じ顧客表と注文表で、内部結合は1行、左結合は2行になる理由を、入力と結果の表で確認します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • 左結合で残すのは「最初のデータテーブル」です。この例ではCustomersを左側に固定します。左右を入れ替えると残る未一致行も変わります。
  • 結合結果はJoinedDataTableで確認します。不一致行が結果に含まれなくても、元のCustomersやOrdersから行を削除する手順ではありません。空の金額を自動で0に置き換える例でもありません。
  • キーの型・空白・大文字小文字をそろえます。キーが重複すると組み合わせ分の行が増え、左結合でも顧客1件につき1行とは限りません。この練習のIDは各表内で一意です。
  • WindowsのPADを起動・実行できる環境を用意してください。利用できる実行方法はライセンスや組織の設定に依存します。この例には外部コネクターの接続・メール送信・ファイルの書き込みはありません。

1使うアクション

  1. アクション 1新しいデータ テーブルを作成するCustomers:顧客C01・C03の2行
  2. アクション 2新しいデータ テーブルを作成するOrders:注文先C01・C02の2行
  3. アクション 3データ テーブルを結合するまず内部で実行し、次にレフトへ変更して再実行

図で見る処理のイメージ

概念図

Customersを左、Ordersを右に固定し、結合操作だけを変えます。C01は一致、C03は左側だけ、C02は右側だけのIDです。

注文がない顧客C03は、結果に残る?

左 最初:Customers
入力:顧客表 2行
顧客ID顧客名
C01青空商店
C03夕凪商店

C03は左側だけ
注文表に相手がいない顧客です。

右 2番目:Orders
入力:注文表 2行
注文先ID金額
C011200
C02500

C02は右側だけ
顧客表に相手がいない注文です。

顧客ID = 注文先ID入力は同じまま、結合操作だけを変えて別々に実行
内部(Inner)1行
内部(Inner):JoinedDataTableの期待値
顧客ID顧客名注文先ID金額
C01青空商店C011200

一致するC01だけ
C03は結果に含まれません。

レフト(Left)2行
レフト(Left):JoinedDataTableの期待値
顧客ID顧客名注文先ID金額
C01青空商店C011200
C03夕凪商店(空)(空)

左側のC03も残る
相手がない注文先IDと金額は空の欄です。

右側だけのC02は、どちらの結果にも入りません「左」は最初の表です。表を左右逆にすると、残す未一致行も変わります。

「(空)」は相手がない欄を示す図の表示で、入力する文字ではありません。内部型や行順を保証する図ではなく、IDと値で結果を照合します。実際のPAD実行画面ではありません。
結果の例

内部は一致したC01だけ。左は未一致のC03も残し、右の注文欄を空にします。右側だけのC02はどちらにも入りません。

架空データと指定した結合規則から示した期待値です。実際のPower Automateフローを実行して確認した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する9ステップの設定と確認方法
  1. 1

    準備:WindowsのPower Automate for desktopで練習用フローを作り、Power Fxをオフにします。以下は架空の表をフロー内で作る例です。Excelファイルやクラウドの接続は使いません。

  2. 2

    1つ目の「新しいデータ テーブルを作成する」でビジュアルエディターを開き、列を「顧客ID」「顧客名」の順にします。C01/青空商店、C03/夕凪商店の2行を入力し、生成された変数の名前をCustomersにします。IDは文字列で、前後に空白を付けません。

  3. 3

    2つ目も同じアクションを置き、列を「注文先ID」「金額」の順にします。C01/1200、C02/500の2行を入力し、生成された変数の名前をOrdersにします。顧客表にはC02がなく、注文表にはC03がないことを確認します。

  4. 4

    「データ テーブルを結合する」:最初のデータテーブルを %Customers%、2番目を %Orders%、結合操作を「内部(Inner)」にします。「左側」は最初のCustomersです。出力変数はJoinedDataTableを使います。

  5. 5

    結合規則:最初の列を「顧客ID」、比較を「等しい」、2番目の列を「注文先ID」にして、規則を1つだけ設定します。列名そのものが同じである必要はありません。今回は列の値C01などを照合します。

  6. 6

    確認A・内部:保存して先頭から実行します。終了後、変数ペインのJoinedDataTableをダブルクリックして開き、4列・1行で、C01/青空商店/C01/1200だけがあることを確認します。C03とC02は結果に含まれません。

  7. 7

    確認B・左:入力2表と結合規則は変えず、同じ結合アクションの結合操作だけを「左/レフト(Left)」へ変更します。保存して先頭から再実行し、JoinedDataTableが4列・2行になることを確認します。C01の一致行に加え、C03/夕凪商店が残り、その行の注文先IDと金額は相手がない空の欄になります。図の「(空)」という文字を入力する必要はありません。

  8. 8

    結果の見比べ:左結合でも、右側にしかないC02/500は入りません。2つの結合アクションを直列に増やす必要はなく、JoinedDataTableにはその回の結果が入ります。行順に頼らずIDと内容を照合し、練習が終わったら結合操作を「内部」へ戻して保存します。

  9. 9

    うまくいかない場合:列名が存在しないエラーなら顧客IDと注文先IDの綴り・空白を確認します。エラーなく0行なら内部結合の入力IDと等しい規則、左で2行にならないなら最初の表とCustomersのC03行を確認します。意図せず行が増えたら両表の重複キーを調べます。

Microsoft公式ページで確認する

設定を確認できる公式資料