Power Platform/Dataflows|Dataverse へのデータ投入——0落ち・Lookup・Choice・Upsert の4難所
SQL からエクスポートした Excel ファイルを Dataflows(Power Query ベースのデータフロー)経由で Dataverse(Power Platform のクラウドデータベース)に投入するとき、必ずといっていいほど4つの同じ壁にぶつかる。電話番号の0落ち・Lookup列のマッピングエラー・Choice型の内部値不一致・Upsert用の代替キー設定だ。 この4つはどれも「構造を知っていれば避けられる」種類のつまずきだ。本記事は、各難所の「なぜそうなるか」と「どう設定するか」を1本に収めた逆引きバイブルとして書いた。次の投入作業の前にブックマークしておくと、そのたびに調べ直す時間が不要になる。 なぜ「SQL → Excel → Dataflows」が有効なルートなのかDataverse にデータを投入する方法はいくつかある。SQL から直接連携するパイプライン、Power Automate による行単位の書き込み、そして Dataflows 経由のルート。 Dataflows が実務でよく選ばれる理由は3つだ。 可視性:Power Query エディターで変換内容を列ごとに確認しながら作業できる。何が起きているかが目に見える。 ノーコード操作:M言語の知識がなくても、GUIで型変換・列の追加・フィルタリングが完結する。 クラウド完結型:OneDrive for Business または SharePoint Online にファイルを置けば、オンプレミスデータゲートウェイが不要になる。 行数の上限については、公式ドキュメント(Microsoft Learn「Power Query Online Usage Limits」)で「制限なし」と明記されている。大規模な移行案件でもルートを変える必要はない。ただし1回の実行時間上限は4時間(Power Apps / Power Platform ライセンス)のため、数十万行を超えるような場合はバッチ分割を検討する。 Excel前処理——0落ちと型崩れを事前に防ぐDataflows に読み込む前の Excel ファイルで起きる型崩れを防ぐ。ここを飛ばすと、投入後に意図しないデータが静かに混入する。 電話番号・コードの「0落ち」対策Excel はデフォルトで数値として認識できる列を自動変換する。0901234567 は 901234567 になり、0001 は 1 になる。 対策は、列のセルを文字列フォーマットに設定してからデータを入力または貼り付けることだ。 手順: 対象列を選択 → ホームタブ → 「数値」グループのドロップダウン → 「文字列」に変更 この状態でデータを貼り付ける(既に数値化されている場合は再入力が必要) Dataflows 側で Power Query の「データ型」を「テキスト」に変更しても、Excel ファイル側で既に0が落ちていれば後の祭りだ。前処理の段階で封じる。 ...