実のところ必要性はそれほど感じていないんですが、やれるかどうかに興味があったので「クエリ名の文字列からクエリを呼び出す方法」を考えてみました。
予め、上記の3つのテーブルは「テーブル1」「テーブル2」「テーブル3」として、クエリを作成済(接続のみ)とします。
クエリ名といってもただの文字列ですから、これをそのままクエリとして認識させることはできません。
ではどうするかというと、今回の記事の肝となる「セクション」を使います。
セクションで「Section1」を指定すると、エディタに表示されているクエリ情報のレコードが表示されます。
このレコードからフィールド名を指定して値(今回の場合はテーブル)を取り出せばいいんです。実際に文字列のクエリ名を使って、クエリを呼び出してみましょう。
クエリ名の文字列からクエリを呼び出すlet ソース = Excel.CurrentWorkbook(){[Name="テーブル名"]}[Content], 呼び出し = Record.Field(#sections[Section1], ソース{0}[名前]) in 呼び出し
やってみると意外に簡単でした。
次はこれの応用です。先ほどと同じ要領で、クエリ名のリストからクエリを呼び出して、ついでに結合してしまいましょう。
別サンプルで作った関係で、参照するテーブル名が「テーブル名」から「テーブルリスト」になっていますが、テーブルからクエリを作成するのは同じなので無視してください。
クエリ名の文字列からクエリを呼び出すlet ソース = Excel.CurrentWorkbook(){[Name="テーブルリスト"]}[Content], 呼び出し = Table.Combine( List.Transform( ソース[名前], each Record.Field(#sections[Section1], _) ) ) in 呼び出し
こっちも、やること自体はそんなに変わりませんね。
ただこれ、「クエリ名」ではなく「テーブル名」が分かっているなら、こんなことする必要ないんですよね。