Power QueryでPythonにパラメーターを渡して実行する方法があります。試しにこんなコードを書いてみます。
argv2table.py
import pandas as pd
import csv
my_argv = [r'MY_ARGVS']
l = list(csv.reader(my_argv, delimiter=' '))[0]
df = pd.DataFrame(l, columns=['argv'])
ここで注意したいのは、冒頭のMY_ARGVS
の部分は後々置換対象となるので、コード中に二度と登場させてはいけないということです。
Power Queryではこう書きます
(argv) =>
let
Source = Text.FromBinary(File.Contents("c:\temp\argv2table.py")),
rep = Text.Replace(Source, "MY_ARGVS", argv),
pyexe = Python.Execute(rep),
df1 = pyexe{[Name="df"]}[Value]
in
df1
こちらを実行して、適当なパラメーターをスペース区切りで入れてみます。
こんなふうに、各パラメータから構成されるテーブルが返されます。
csv.readerで分割しているので、ダブルクォーテーションによる引用も可能です。Power BIのParameterを渡せば、レポート画面からPythonに渡す引数を変えることもできますね。
ただ、まいどまいどPermissionを尋ねられるので実用性は疑問です。