#はじめに
- Power BIのPower Query Editor(M言語)でデータの前処理を行うことができますが、 Pythonスクリプトの方が、やりたいことを実装しやすい場合もあります。
- ここでは、Pythonスクリプトの使用例として、変換テーブルを参照して文字列を置換する処理を作成してみます。
#サンプルデータ
Power Query Editorのデータ入力より、AttendanceテーブルとName_Conversionテーブルを作成します。
Attendance
参加日 | 名前 |
---|---|
2018.7.2 | 渡邊 |
2018.7.2 | 斎藤 |
2018.8.4 | 斉藤 |
2018.8.4 | 渡辺 |
2018.8.4 | 高橋 |
※注)渡邊と渡辺、斎藤と斉藤は、同一人物で異なる漢字表記が混在しています
Name_Conversion
変換前 | 変換後 |
---|---|
渡辺 | 渡邊 |
斉藤 | 斎藤 |
#Python処理の追加
Name_Conversionテーブルに従い、Attendanceテーブルの名前を置換する処理を追加します。
-
Power Query Editorより、クエリのAttendanceテーブルを選択し、クエリの設定でPythonスクリプトを実行するを追加します。
-
スクリプトの記述はそのままでOKを押します。(データ結合のプライバシー設定についてのメッセージが表示されることがあります。)
-
Power Query文を修正し、前ステップの結果とName_Conversionテーブルをスクリプトで使用できるように修正します。
Power Query | |
---|---|
修正前 | = Python.Execute("# 'dataset' はこのスクリプトの入力データを保持しています#(lf)",[dataset=変更された型]) |
修正後 | = Python.Execute("# 'dataset' はこのスクリプトの入力データを保持しています#(lf)",[dataset=変更された型,dataset2=Name_Conversion]) |
- 名前を置換するPythonスクリプトを追加します。
# 'dataset' はこのスクリプトの入力データを保持しています
for i in range(len(dataset2)):
dataset['名前']=dataset['名前'].replace(dataset2['変換前'][i],dataset2['変換後'][i])
- スクリプトの出力テーブルで、datasetとdataset2から、datasetのValueにあるTableを選択します。
#Pythonによるデータ前処理後のデータ
Attendance
参加日 | 名前 |
---|---|
2018.7.2 | 渡邊 |
2018.7.2 | 斎藤 |
2018.8.4 | 斎藤 |
2018.8.4 | 渡邊 |
2018.8.4 | 高橋 |
#参考
- Power BI ドキュメント クエリ エディターでの Python の使用
https://docs.microsoft.com/ja-jp/power-bi/desktop-python-in-query-editor