Help us understand the problem. What is going on with this article?

Power BI でSharePoint Onlineに格納した画像を表示する

Power BI 勉強会 @ 東京 #16SharePointに格納した画像を使ってレポートを作りたいという質問があったので書きます。

ここでの検証は全て私の個人的な環境で行ったものなので、会社の環境や設定によっては異なる結果が出る場合があります。

(2020/3/2追記)Power BI王子こと清水 優吾さんの指摘を基に不明点や誤ってた部分を訂正、または追記しました。
ありがとうございます。
それに伴い想定した用途から外れるので、Power BI ServiceからWebに公開した埋め込みコードへの言及を削除しました。

結論

先に結論を言ってしまうと出来ます。
image.png

Power BIはテーブル、マトリックス、スライサー、または複数行カードに画像を表示する事ができます。
レポートに画像を表示する際の考慮事項は以下の通り。

  • 画像のファイル形式は、.bmp、.jpg、.jpeg、.gif、.png、.svg のいずれかである必要があります。
  • URL は、SharePoint などのサインインが必要なサイトのものではなく、匿名でアクセスできる必要があります。 ただし、画像が SharePoint または OneDrive でホストされている場合は、その画像を直接ポイントする埋め込みコードを取得できる場合があります。

詳しい内容はレポートのテーブル、マトリックス、スライサーに画像を表示するをご覧ください。

なお、Power BI Desktopの場合のみSharePointに置いた画像を表示することが出来ませんでした。
(2020/3/2追記)これはPower BI Desktopで作成中のレポートからではAzure ADの認証が出来ないからです。

検証結果は以下の通り。

Power BI 表示可否
Power BI Desktopで作成中のレポート ×
Power BI Serviceに発行したレポート

では手順を見ていきましょう。

手順

SharePointの準備

ドキュメントライブラリーに画像を格納する

ますSharePoint Onlineのドキュメントライブラリに画像をアップロードします。
今回はImageという名前のドキュメントライブラリを使っています。
image.png

そして画像を使用したレポートを共有したいユーザーにSharePointサイトのアクセス権を与えます。
これでSharePoint側の準備は終わりです。

Power BI側の準備

SharePoint ドキュメントライブラリに接続する

次にPower Queryで画像を格納したドキュメントライブラリImageに接続します。
使うコネクターはSharePoint フォルダーです。
image.png
ドキュメントライブラリへの接続の詳しい手順はPower BIでSharePointのデータを利用するをご覧ください。

接続に成功すると、以下のようにSharePointサイト内にある全てのドキュメントライブラリに格納されたファイルが表示されます。
image.png

画像データを読み出す

欲しいのはドキュメントライブラリImageに格納した画像ファイルだけです。
なのでFolder Path列を使ってフィルターをかけます。

Folder Path列でフィルターをかける

Folder Path列にはファイルが存在するライブラリー、もしくはフォルダーのパスが格納されます。
ここを使う事でドキュメントライブラリImageのデータだけに絞り込めます。

パスの命名規則はhttps://xxx.sharepoint.com/sites/サイト名/ドキュメントライブラリー名なので、https://xxx.sharepoint.com/sites/サイト名/Imageだけを残します。
image.png

絶対URLを作成する

Power BIはhttps://.../Image.jpgのような画像のURLを、レポートに画像として表示する事が出来ます。
その為には絶対URLが必要です。

今回の場合、Folder Path列とName列を組み合わせることで以下のURLを作成できます。
https://xxx.sharepoint.com/sites/サイト名/ドキュメントライブラリー名/Image.jpg
組み合わせには列のマージを使います。

まずCtrlキーを押しながらFolder Path列、Name列の順でクリックしてください。
列のマージ機能で列を結合する際、並び順はユーザーが選択した順になります。
そして列の追加タブから列のマージを選択します。
image.png

今回は単純にテキストを結合するだけなので区切り記号は--なし--、新しい列名はURLとします。
image.png

最後にレポートに使わない列を削除して完成です。
image.png

レポートに画像を表示する

レポートに画像を表示する手順、および画像を利用できるビジュアルについてはレポートのテーブル、マトリックス、スライサーに画像を表示するをご覧ください。

冒頭でも言及しましたが、Power BI DesktopではSharePoint Onlineの画像を表示することは出来ません。
image.png

なのでPower BI Serviceへレポートを発行します。
image.png

Power BI Serviceへ発行されたレポートでは正しく画像が表示されます。
image.png

Webに公開した埋め込みコードでも画像が表示されます。
image.png

番外編 画像のBinaryをBase64に変換してレポートに取り込む

Power Queryで画像のBinaryをBase64に変換する事で、Power BI DesktopでもレポートにSharePoint Onlineの画像を表示する事が出来ます。
image.png

これはPower Query上ではContent列でBinaryが取得できるので可能です。
image.png

本筋から逸れるのでここでは詳しい解説はしませんが、興味のある方はStoring Large Images In Power BI Datasetsを参考に試してみて下さい。

この手法のデメリットとしては以下が挙げられます。

  1. 画像そのものを直接レポートに取り込むため、.pbixファイルのサイズが肥大化する。
  2. この手法を利用して取り込んだ画像を利用したビジュアルの読み込みが非常に遅くなる
  3. メジャーを使って画像を表示するため、スライサーには使えない

まとめ

  • 匿名でアクセスできるURL、またはアクセス権のあるSharePoint Onlineの画像はレポートに利用できる
    • アクセス権の設定を抜かりなく。
  • Power BI DesktopでSharePoint Onlineの画像が表示されないのは正常な動作(2020年3月現在)
    • 何故かは分かりません。 Power BI Desktoppで作成中のレポートからではAzure ADの認証が出来ないのが理由でした。
  • SharePoint Onlineの絶対URLの作り方を学ぼう
    • 画像の表示に限らず、知っていればいろいろと便利です。

Power BI 勉強会 @ 東京 #16のサブタイトルは始めないといつまでたってもできるようにならないでした。
Microsoft Docsを読みながら弄るのも良し、Microsoft Learnで勉強するのも良し、ブログを書くのも良し。
好きなやり方でPower BIの学びと活用を深めて下さい。

No Data, No Life.

Yellow11
Office365ユーザーで部署の SharePoint 管理者みたいなことをやっています。 #SharePoint #Office365 #PowerPlatform #PowerBI #PowerApps #PowerAutomate #MicrosoftFlow
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした