Jupyter NotebookからREST APIを使ってPower BI のデータセットを更新する (1/4)

# はじめに
こんにちは。Power BI 担当の松永です。
今回は **Jupyter Notebook** から **REST API** を使って **Power BI データセットを更新する** 方法について書いていきます。(1/4)
というのも、これまで筆者は REST API のことはさっぱりわからず Power BI Desktop やサービス、Power Automate など GUI 以外での更新方法に皆目見当がつきませんでした。
そこで、今回は Power BI REST API を理解するとともに、学生の頃研究で使っていた Jupyter Notebook 上での更新まで頑張ってみようと思います。
(長さがあるので4回に分けての投稿です)

[記事(2/4)はこちら](https://qiita.com/Minori_Matsunaga/items/2ab2c6d2d6af7c833139)

::: note warn
本記事は、組織の [Azure Portal](https://portal.azure.com) にアクセスして認証を取得する場面があります。
組織内ユーザーの中には自由にアクセスできない方も多いと思いますので、読み物としてもぜひ楽しんでいただけたら幸いです！

:::


ではさっそく始めてみましょう！

# ベースの知識
## Power BI REST API って？
### REST API
そもそも、REST API とはなんだ？というところから始まります。
とっても簡単に言うと、

**あるアプリケーションやサービスから、別のアプリケーションやサービスに接続する機能を
HTTP プロトコルを使って行う**

と理解しておけば本記事は読めると思います。
(当人もまだ理解浅く、ざっくりとした説明です…)
以下の記事が分かりやすくまとまっていたのでご参考までに。
https://gblogs.cisco.com/jp/2021/08/whats_rest-api_basic/
https://tech-parrot.com/programming/describe-about-restful-api/
https://camp.trainocate.co.jp/magazine/rest-api/

### Power BI REST API
Power BI でも、他のサービスから **Power BI サービス** に対して接続するための REST API を公開しています。
https://learn.microsoft.com/ja-jp/rest/api/power-bi/

ぜひリンク先を見ていただきたいのですが、
>Power BI REST API を使用すると、次の操作を行うことができます。
・Power BI コンテンツを管理する
・管理者の操作を実行する
・Power BI コンテンツを埋め込む

と記載があるように、ワークスペースの状態を確認したり、データセットの更新を仕掛けたり、別のサービス上にPower BI レポートを埋め込んだりと様々な機能が提供されています。

実は、Power Automate で Power BI に関するアクションを取るときも裏側では REST API を使っていたりします。
[コネクタのリファレンス-Power BI](https://learn.microsoft.com/ja-jp/connectors/powerbi/#refresh-a-dataset)

## Jupyter Notebookって？

Jupyter Notebookとは、PythonなどをWeb上で記述/実行できる統合開発環境です。
公開されているパッケージを手軽にインストールすることができ、コードを好きな行ずつ実行できるのが特徴で、Python初心者含め手軽な開発環境として広く利用されています。
https://jupyter.org/


# 構築
では、ベースの知識がついたところで早速進めていきましょう。

:::note info
単純に Power BI REST API を試したい場合、公式ドキュメントから簡単に実行できます。
例えば、データセット更新の場合は[こちら](https://learn.microsoft.com/ja-jp/rest/api/power-bi/datasets/refresh-dataset)のリンクからコードの横にある緑の**Try**ボタンを試してみてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/2145f46e-eb4c-1859-3127-beb0a9043477.png" width=500 />


認証も組み込まれているので非常に簡単です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/ad793cb6-8a84-e886-17dc-3101661f0977.png" width=400 />

データセット ID を入れて実行するだけで完了です。一番お手軽ですね！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/9a627db6-09b3-418a-53d6-3d8be2655e23.png" width=400 />

:::

### 環境
さて本題に戻ります。
私の手元に用意した環境は以下の通りです。
- Windows 11
- M365グローバル管理者アカウント
- Power BI Pro ライセンス
- Jupyter Notebook 6.4.12
- Python 3.9.13
- Postman for Windows Version 10.1.2


### ☆道のり☆

ここから Jyputer Notebook でデータセット更新するまでの道のりは以下のような感じです。
(太字が今回の範囲です)

1. **Jupyter Notebook のインストール**
2. Azure に Azure AD アプリケーションを登録する
2. (Postman で実行検証)
2. Jupyter Notebook の環境を整える
2. Jupyter Notebook から Oauth2 認証でアクセストークンを得る
2. Power BI REST API を使ってデータセットに更新をかける

さて…先は長そうですが順番にやってみましょう！

## 1.　Jupyter Notebook のインストール

まずは、Jupyter Notebook を使えるようにインストールしておきます。方法としては、
- コマンドプロンプトから Jupyter Notebook のみインストールする
- Anaconda (Jupyter Notebook とよく使うライブラリが一緒になったもの) をインストールする

があります。私は Anaconda をインストールしました。
以下では、参考サイトに従って Jupyter Notebook を入れていく方法を解説します。
参考サイト:[【初心者向け】Jupyter Notebookの使い方！インストール方法から解説](https://udemy.benesse.co.jp/development/python-work/jupyter-notebook.html)

### Anaconda のインストール
Anaconda をインストールするには[こちら](https://www.anaconda.com/)の公式サイトにアクセスします。
(セットアップに4GBほど使うので、容量のない方は Jupyter Notebook だけインストールでもいいかもしれません。)

Download をクリックして exe. ファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/df3ecd92-062c-16df-97f3-804641bb4031.png)

exe. ファイルを実行して下画像のようにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/74c0b1ef-e72a-57fd-9a9c-3cf713498bb9.png)

これで Anaconda のインストールは完了です。

### Jupyter Notebook を立ち上げる

インストールが完了したら、スタートメニューから Jupyter Notebook を起動しましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/7746396e-c1e7-d27c-e109-c8def6380087.png" width=450 />


立ち上がったコマンドプロンプトに
*「Notebook を立ち上げるために以下の URL にアクセスしてください。」*
と表示が出るので、コピーしてブラウザで開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/94e6641a-759c-77d2-1993-056c2c22d228.png)

以下のような画面が立ち上がります。これが Jupyter Notebook のホーム画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/1e8d5db4-4907-4066-f33a-6f074b278dc6.png)

本記事では Jupyter Notebook の各機能について詳細には語りませんが、簡単に図説しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/398ddcd2-6d22-6832-2b82-bcc73f5f4166.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2542710/bb9b1cae-6ca5-93e9-07e3-109f77ade20d.png)



使い方は Qiita に記事がたくさん出ています。たとえば[こちら](https://qiita.com/taruto1215/items/df754a395e53834e17e4#:~:text=Jupyter%20notebook%E8%B5%B7%E5%8B%95%E7%9B%B4%E5%BE%8C%E3%81%AE%E7%94%BB%E9%9D%A2%201%20Upload%20%3A%20%E6%96%B0%E3%81%97%E3%81%84%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%81%93%E3%81%93%E3%81%AB%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%202%20New,%E3%81%93%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%A8jupyter%20notebook%E5%BD%A2%E5%BC%8F%E3%81%A7%E9%96%8B%E3%81%91%E3%82%8B%205%20%E2%96%A1%20%3A%20%E2%98%91%EF%B8%8E%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%20%E5%89%8A%E9%99%A4%E3%83%BB%E8%A4%87%E8%A3%BD%E3%83%BB%E7%B7%A8%E9%9B%86%E3%81%AA%E3%81%A9%E3%81%8C%E3%80%81%E3%81%9D%E3%81%AE%E5%BE%8C%E9%81%B8%E6%8A%9E%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%20)を参考にしてみてください。

さて、これでJupyter Notebook のインストールが終わりました。


# おわりに

あらもう終わり？と思った方もいると思いますが、次の **Azure AD アプリケーション登録** が長いのでここまでにしておきます。
引き続き読んでもらえたら嬉しいです！

[つづきはこちらから！](https://qiita.com/Minori_Matsunaga/items/2ab2c6d2d6af7c833139)

それでは！！