2023年3月25日土曜日

Power BIのPower Queryで環境変数を取得する方法

Power Queryで、読み込みファイルに(相対パスではなく)絶対パスを要求する場面があるが、Power Query M言語では環境変数にアクセスできないように見える。
なので、Pythonを利用して環境変数をとってみる。
まず、何とかして、以下を実行できるようにしてみる。
https://learn.microsoft.com/ja-jp/power-bi/connect-data/desktop-python-in-query-editor

私の環境では、pip install pandasだけでは動かなくて、pip install matplotlibもしてみた。


そのあと、PowerQueryで適当な名前のクエリを作り以下の内容にしてみた。


let
    ソース =#table({"a"},{{0}}),
    PyExe = Python.Execute("dataset[""name""]=os.environ['USERPROFILE']",[dataset=ソース]),
    ExpandTable = Table.ExpandTableColumn(PyExe, "Value", {"name"}, {"name.1"}),
    ExpandValue =ExpandTable{0}[name.1]
in
    ExpandValue


解説
Python.Executeでは、テーブルの入力が必要らしいので、ソースに、ダミーのテーブル(列名がaで、中身が0の1行レコードのテーブル)を入れる。
ダミーのテーブルに対して、name列を追加して、その内容を環境変数USERPROFILEの展開後のものとした。
PythonのテーブルがValueに入るため、Valueのテーブル内にアクセスできるように展開した。
展開後のテーブルの1行目、name.1列の内容をExpandValueとし、出力結果をExpandValueとした。


洗練されてはおらずいろいろとゴミがあるが、
これで、このクエリの結果がUSERPROFILEの展開後の結果となった。

1 件のコメント:

wgd さんのコメント...


PyExe = Python.Execute("for a in os.environ:#(lf) dataset[a]=os.environ[a]",[dataset=ソース]),
で、全環境変数をとってみても、pbixファイルの格納場所がみつからない。。。