LoginSignup
3
0

More than 1 year has passed since last update.

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

Posted at

はじめに

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

本記事は、組織の Azure Portal にアクセスして認証を取得する場面があります。
組織内ユーザーの中には自由にアクセスできない方も多いと思いますので、読み物としてもぜひ楽しんでいただけたら幸いです!

これまでの歩み

ひとつめの投稿では、ベースの知識を付けた後に Jupyter Notebook のインストールを行いました。
今回は Azure AD アプリ登録をやっていきます。作業量が多くヘビーですが、一緒に頑張りましょう!
(太字が今回の範囲です)

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

2. Azure に Azure AD アプリケーションを登録する

Jupyter Notebook から Power BI サービスに REST API 接続するには、Azure AD が提供するサービスを利用しなければいけません。
しかし、そのままでは Azure AD 側としては

「あなた誰??知らない人はアクセスできないよ!」

となってしまいますので、

「このアプリケーションIDとシークレット使うよ!ちゃんと通行証もってるよ!」

と言えるようにあらかじめ 通行証を発行 しておかないといけないのです。
以下ドキュメントにも機能と理由の記載があったので、気になる方は読んでみてください。
アプリケーションを Azure AD に追加する方法と理由

アプリ登録する

Azure AD にアプリ登録するために参考にした記事はこちらです。
HOW TO REGISTER AN AZURE APP TO USE WITH POWER BI
公式ドキュメントはこちら
Power BI Embedded を設定する

アプリ登録するための方法は2つ

  • Azure Portal から登録する
  • Power BI 埋め込み分析セットアップツールを使う

どちらも手順的にはほとんど変わりませんが、セットアップツールを使うと、Power BI の API アクセス権が選択しやすく、コンテンツ埋め込みに使う場合はワークスペースを同時に作れる等 Power BI 専用の機能がいくつか含まれています。 今回は最初の設定についてはセットアップツールからやってみましょう。
(どのみちあとで Azure Portal 側の操作も必要になるのですが…)

要件

Azure AD にアプリ登録してシークレットを発行するには以下の要件を満たすユーザーが必要です。

  • (セットアップツール用) Power BI Pro アカウント
  • (必須) Azure Active Directory テナントと組織 (マスター) ユーザー

セットアップツールでアプリ登録をする

まず、セットアップツールのページに移動します。

埋め込みソリューションの選択画面がでてきます。

  • 組織向け埋め込み
  • 顧客向け埋め込み

の2種類があり、いったい何のことやらわからないと思います。
この 「埋め込み」 とは、Power BI で作ったコンテンツを外部で独自開発したアプリや他のサービスに埋め込むことを指していて、たとえば Teams や Sharepoint への埋め込みは「組織向け埋め込み」にあたります。
今回やりたいのは埋め込みではなく外部サービスから認証を通したいだけなのですが、アプリ登録する最初のステップは一緒なのでこのままOKです。
アクセスするユーザーごとに Azure AD 認証する方法ではないので 「顧客向け埋め込み」 を選択してください。

埋め込みについての詳細は、サポート部門が出しているブログをご覧ください。
Power BI Embedded とは?ライセンスと埋め込み方法

image.png


  • サインインし、次に進みます。

image.png

  • 登録名を入力し、API アクセスで [Select All] を選びます。登録ボタンで次に進みます。
    (特定の API に限定したい場合はそれだけ選ぶこともできます。)

セットアップツールから選択できるアクセス許可には

  • Tenant.Read.All
  • Tenant.ReadWrite.All

は含まれません。
このままでは Admin がつく API は実行できないので必要であれば Azure Portal で付与してください。

image.png


ワークスペースとコンテンツについては [スキップ] します。
image.png

image.png


  • 最後に、 [アクセス許可を付与する] をクリックしてポップアップウィンドウで承諾しましょう。

image.png

こちらの操作ですが、以下のような意味合いがあるとドキュメントに記載があります。

[アクセス許可の付与] を選択し、ポップアップ ウィンドウで [承諾] を選びます。 この手順により、Azure AD アプリから、サインインしているユーザーで選択した API (スコープともいう) にアクセスできるようになります。 このユーザーは、マスター ユーザーとも呼ばれます。

以上で、セットアップツールの操作は終了です。

Azure Portal で作成確認、シークレット取得

それでは、Azure Portal にアクセスして登録したアプリの確認をしてみましょう!

image.png

Azure サービス一覧から [アプリの登録] を選択し、

image.png

[すべてのアプリケーション] から、先ほど作成したアプリ名をクリックします。

image.png

作成したアプリに関して、基本情報がでてきます。
いろいろと難しそうに感じますが、実際にこの後 Jupyter Notebook (や Postman) から値を使うのは

  • アプリケーション(クライアント) ID
  • シークレット

の2つだけです。
アプリを登録した段階では、アプリケーション ID 作成されていますがシークレットは作成されていません。 「シークレットってなんやねん」って感じですが、次のページにこう書いてありました。

トークンの要求時にアプリケーションが自身の ID を証明するために使用する秘密の文字列です。アプリケーション パスワードと呼ばれることもあります。

要は、パスワードのことを指しているのですね!あとはシークレットが作成できればよさそうです。

image.png

画面左側メニュー [証明書とシークレット] を選択して、 [新しいクライアントシークレット] から

  • 名前
  • 有効期間

を設定して [追加] しましょう。

image.png

作成できた画面がこちらです。 [値] に表示されている文字列がシークレットになるので、コピーしておきます。

[値] に表示されている文字列は、しばらくするとセキュリティ保護のため非表示になります。
作成したタイミングで必ず値をひかえておいてくださいね!

さて、これでやっと

  • アプリケーション(クライアント) ID
  • シークレット

がそろいました。これでやっと Power BI REST API が使えるようになりました!!頑張りましたね!
さて立ち止まっている暇はありません。実践編にうつっていきましょう。

おわりに

今回はここまでです。おつかれさまでした!
次回からはやっとツールを使った実践に入ります。
まずは簡単な Postman というツールから Power BI REST API を実行していきましょう。

それではこの後の記事も是非読んでいただけたら嬉しいです!

それでは!!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0