データフロー(Power Query)を使用して、リレーション(参照列)を含めてデータをインポートする方法を調査したので、メモ。
やりたいこと
例えばこんな感じで親テーブルと、

子テーブルがあって、

親テーブルと子テーブルが「1:N」のリレーションでつながっているとする。

このときに、CSVとかから子テーブルに「リレーションを含めて(親テーブルを参照列に指定して)データをインポートしたい」ときのお話。
デフォルトではリレーションはインポートできない
何も設定せずに「データフローでデータをインポート」から、

子テーブルに対しデータをインポートしようとすると、

Parentテーブルへの参照列を選択することができない。

解決方法:リレーションを含めたデータをインポートするときは「代替キー」を指定する
解決方法は、参照される側(親側)のテーブルにキーとなる列を指定すること。
まず、参照される側のテーブル(今回はParentテーブル)に一意の値が入る列(IDとかオートナンバーとか)をつくり、[キー]を押す。

[新しいキー]から先ほどの一意の値が入る列を選択して、キーを保存する(名前はわかりやすければなんでもOK)。

以上で準備は完了。

再度インポートすると
こんな感じで、先ほど設定した親テーブルのキー列の値を含むCSVを用意して、

再度子テーブルに対しインポートをしようとすると、

キー列を指定できるようになっている。

CSVに入力した値とマッピングして、

[公開]を押すと、

無事、リレーションを含めたデータのインポートが完了する。

ということで、リレーションを含めたデータインポートをしたいときは、参照される側のテーブル(親テーブル)に代替キーを追加する必要がある。
コメント