Power BIでのデータ取得にPythonスクリプトを使用する方法
やりたいこと
Power BIでデータの取得にPythonを使いたいです。
AzureのBlobやSQL DB、SharePointやローカルのCSV、Excelファイルなど色々な取得方法がありますが、公開されているAPIを直接叩いて取得したいため、Pythonを使ってデータを取得できないか調べてみました。
事前準備
Power BIでPythonスクリプトを使うためにはローカルのPythonと紐づける必要があります。
Power BI Desktopを開いて、左上の「ファイル」を選択
左下の「オプションと設定」を選択
「オプション」を選択
左のメニュー一覧から「Pythonスクリプト」を選択
Pythonのディレクトリパスを設定する必要があります。
自分はpyenvを使っていますので、pyenv内の対象バージョンを選択
これで設定はOK
データ取得
「データを取得」の一番下にある「詳細」を選択
左のメニューから「その他」をクリックすると「Pythonスクリプト」があるので選択
各ユーザーごとにAPIを叩いて、DataFrameに追加して、出力するスクリプトを中に入れました。
中身のスクリプトは以下になります、参考までに。
import requests
import pandas as pd
zenn_user_id = [
<ZennのユーザーID>,
<ZennのユーザーID>,
<ZennのユーザーID>,
...
]
df_post_all = pd.DataFrame()
for i in zenn_user_id:
response_post = requests.get(f"https://zenn.dev/api/articles?username={i}")
post_data = response_post.json()
articles = post_data["articles"]
if len(articles) != 0 and articles[0]["publication"] != None:
df_post = pd.DataFrame(articles)
df_post["user_id"] = df_post["user"].apply(lambda x: x["id"])
df_post = df_post.drop(columns=["user", "publication"])
df_post_all = pd.concat([df_post_all, df_post], ignore_index=True, axis=0)
df_post_all
無事データを取得できました。
データを加工したい場合は「データの変換」、そのまま読み込みたい場合は「読み込み」を選択
適当にビジュアライズ化してみます。
最後にレポートを発行します。
右上の「発行」を選択
少し待つと、レポートが発行されました。
注意点(超大事)
Pythonスクリプトをつかったデータ取得方法だと、更新設定がサポートされていません。
ですので、定期的にAPIを叩いて新しい情報にアップデートさせたいレポートだと向いてないので別の方法を検討してください。
僕はMicrosoft Fabricを利用して、データの取り込み・管理・加工・ビジュアライズ化までを全て完結させています。
以下の記事で方法を書いているのでぜひ
Discussion