🐨

Power BIでのデータ取得にPythonスクリプトを使用する方法

2024/03/02に公開

やりたいこと

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を利用して、データの取り込み・管理・加工・ビジュアライズ化までを全て完結させています。

以下の記事で方法を書いているのでぜひ

https://zenn.dev/headwaters/articles/c69811c3ed54c0

ヘッドウォータース

Discussion