Power BI 勉強会 @ 東京 #16でSharePointに格納した画像を使ってレポートを作りたいという質問があったので書きます。
ここでの検証は全て私の個人的な環境で行ったものなので、会社の環境や設定によっては異なる結果が出る場合があります。
(2020/3/2追記)Power BI王子こと清水 優吾さんの指摘を基に不明点や誤ってた部分を訂正、または追記しました。
ありがとうございます。
それに伴い想定した用途から外れるので、Power BI ServiceからWebに公開した埋め込みコードへの言及を削除しました。
結論
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
という名前のドキュメントライブラリを使っています。
そして画像を使用したレポートを共有したいユーザーにSharePointサイトのアクセス権を与えます。
これでSharePoint側の準備は終わりです。
Power BI側の準備
SharePoint ドキュメントライブラリに接続する
次にPower Queryで画像を格納したドキュメントライブラリImage
に接続します。
使うコネクターはSharePoint フォルダー
です。
ドキュメントライブラリへの接続の詳しい手順はPower BIでSharePointのデータを利用するをご覧ください。
接続に成功すると、以下のようにSharePointサイト内にある全てのドキュメントライブラリに格納されたファイルが表示されます。
画像データを読み出す
欲しいのはドキュメントライブラリImage
に格納した画像ファイルだけです。
なのでFolder Path
列を使ってフィルターをかけます。
Folder Path列でフィルターをかける
Folder Path
列にはファイルが存在するライブラリー、もしくはフォルダーのパスが格納されます。
ここを使う事でドキュメントライブラリImage
のデータだけに絞り込めます。
パスの命名規則はhttps://xxx.sharepoint.com/sites/サイト名/ドキュメントライブラリー名
なので、https://xxx.sharepoint.com/sites/サイト名/Image
だけを残します。
絶対URLを作成する
Power BIはhttps://.../Image.jpg
のような画像のURLを、レポートに画像として表示する事が出来ます。
その為には絶対URLが必要です。
今回の場合、Folder Path
列とName
列を組み合わせることで以下のURLを作成できます。
https://xxx.sharepoint.com/sites/サイト名/ドキュメントライブラリー名/Image.jpg
組み合わせには列のマージを使います。
まずCtrlキーを押しながらFolder Path
列、Name
列の順でクリックしてください。
列のマージ機能で列を結合する際、並び順はユーザーが選択した順になります。
そして列の追加タブから列のマージを選択します。
今回は単純にテキストを結合するだけなので区切り記号は--なし--
、新しい列名はURL
とします。
レポートに画像を表示する
レポートに画像を表示する手順、および画像を利用できるビジュアルについてはレポートのテーブル、マトリックス、スライサーに画像を表示するをご覧ください。
冒頭でも言及しましたが、Power BI DesktopではSharePoint Onlineの画像を表示することは出来ません。
なのでPower BI Serviceへレポートを発行します。
Power BI Serviceへ発行されたレポートでは正しく画像が表示されます。
番外編 画像のBinaryをBase64に変換してレポートに取り込む
Power Queryで画像のBinaryをBase64に変換する事で、Power BI DesktopでもレポートにSharePoint Onlineの画像を表示する事が出来ます。
これはPower Query上ではContent
列でBinaryが取得できるので可能です。
本筋から逸れるのでここでは詳しい解説はしませんが、興味のある方はStoring Large Images In Power BI Datasetsを参考に試してみて下さい。
この手法のデメリットとしては以下が挙げられます。
- 画像そのものを直接レポートに取り込むため、.pbixファイルのサイズが肥大化する。
- この手法を利用して取り込んだ画像を利用したビジュアルの読み込みが非常に遅くなる
- メジャーを使って画像を表示するため、スライサーには使えない
まとめ
-
匿名でアクセスできる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.