2019-11 に開催された Microsoft Ignite 2019 には参加しなかったけれども、Power BI を中心としたセッションをオンデマンドで視聴などしていました。その中のひとつ、
Power BI is Microsoft's enterprise BI Platform that enables you to build comprehensive, enterprise-scale analytic solutions that deliver actionable insights. This session will dive into the latest capabilities and future roadmap. Various topics will be covered such as performance, scalability, management of Power BI artifacts, and monitoring. Learn how to use Power BI to create semantic models that are reused throughout large, enterprise organizations.
について、聴いた内容、調べた内容など踏まえてメモをしていく。
なぜかというと、Microsoft Ignite The Tour 2019-2020 という関連するイベントがありまして、そのうち 東京 と 大阪 で担当することになっているからである。
Microsoft Power BI を使用した最新の分析とエンタープライズ ビジネス インテリジェンスを実現する - Microssoft Ignite The Tour Tokyo
マイクロソフトのエンタープライズ BI プラットフォーム、Power BI により、実用的なインサイトを導き出すエンタープライズ規模の包括的な分析ソリューションを構築できます。このセッションでは、最新機能と将来のロードマップについて詳しく説明します。パフォーマンス、スケーラビリティ、Power BI アーティファクトの管理、監視など、さまざまなトピックを取り上げ、Power BI を使用して、大規模なエンタープライズ レベルの組織全体で、繰り返し利用できるセマンティック モデルを作成する方法をご紹介します 。
Microsoft の BI プラットフォーム
Microsoft が提供する BI サービスは 現在 ふたつ存在しています。まずはこの観点から整理してみます。
Azure Analysis Services
SQL Server 2019リリースは割と最近なのですが、同時にSQL Server Analysis Services 2019 (SSAS 2019)のリリースを発表しました。 これまで、 SSAS 2016、SSAS 2017、Azure Analysis Services とローンチされているけれども、 これは Analysis Services の クラウド化です。 オンプレミスからクラウドへの移行が検討しやすいもののひとつでもあります。
SSAS も含めてもよいかと思いますが、Azure Analysis Services で 組織内の BI を運用するとき、多くの場合で 組織の ITチーム のみ もしくは ビジネスのキーマンを加えたチームがほとんどの作業を遂行、トップダウンでデータの活用が行われます。シンプルな理由としては組織のデータを活用しビジネスに役立てようというものですし、ガバナンス と データの保護が目的となる場合が多いでしょう。
Analysis Services とは | Microsoft Docs
Azure Analysis Services とは | MIcrosoft Docs
Power BI
Power BI には セルフサービスによる分析とレポーティングの機能が用意されています。組織がデータを利用することというより、ビジネスを担当するチームが中心となる要求によりレポートが作成されることが多いです。そして、ボトムアップで組織に浸透することになるかと考えられます。機能や使用の多くがセルフサービス BI を支援するものですし、ビジネス上のキーマンもしくはチームが直接手を動かすことで速やかなデータ利用が行われます。
Power BI Desktop
Power BI のコアなテクノロジーのひとつは Analysis Service です。これは Power BI Desktop を起動しタスクマネージャーを見てみるとすぐにわかる。
Power BI Desktop は レポートのデザインだけではなく、データの準備からデータモデリングそしてビジュアルをレポートに配置し Power BI service への発行まで行うことができる。
Power BI は Analysis Services のスーパーセットに
適切なデータが適切な状態で適切なユーザ向けたデータセットが Analysis Services で公開されていれば、組織のデータコンシューマ はそれらを利用し BIレポートをセルフサービスで作成することができる。ここまでの範囲であれば組織のポリシーに基づく管理に収まるでしょう。ただ、作成されたレポート、そしてエクスポートできるデータについて管理することも考慮しなければならない。Power BI には アクセスコントロール機能は用意されているけれども、Enterprise BI には 機微なデータや秘匿されるデータなどの管理や対応が必要になってくるのでしょう。
- エンタープライズ レベル のデータモデルの運用と管理を実現する Azure Analysis Services
- セルフサービス BI として機能が豊富 もしくは レポート/データセットを管理できる Power BI
これらふたつの要素を統合したものが Power BI のビジョンとなります。
Enterprise BI in Power BI
Enterprise BI をサポートする Power BI でいくつか知っておかなければならないこと、今後それらに向けてリリースされていく機能などについて整理します。
Semantic modeling
意味的データモデル ということなのでしょうけど、ここでは Power BI データセット のことを指していると思って差支えないでしょう。データセットにはたくさんのテーブルを配置でき、テーブルの行をひとつの事象やビジネスアイテムとしたとき、列はそれぞれの属性として整理されている状態になる。例えば、得意先一覧、商品一覧など 行がそれぞれビジネスアイテムを表現しているという状態。リレーションシップ は ビジネスエンティティであるテーブルの関連を示している。そして、集計する結果を定義するメジャーはデータモデルに記述されている。メジャーはデータモデル内で評価されるので、レポートやビジュアルごとにクエリを記述する必要はなく、例えば、見出しや軸に使用する列 と それぞれで評価されるメジャーを選択するだけで様々ビジュアルを作成することが可能なのです。
Semantic modeling は Power BI の コア
Power BI をデータ ビジュアライズ ツールと表現される方がいらっしゃいますが、それは正解ではあるけれども、残念ながら誤解の始まりです。たしかにPower BI はセルフサービスでレポートやダッシュボードを作成できるというポイントは重要視されるべきことだけれども、根底に利用されている技術は Analysis Services であり、データモデルベースの BI ツールなので モデリング はとても重要な要素なのです。ビジュアライズが Power BI の機能として重要なもののひとつであることに変わりはないですが、エンタープライズ レベルで考えたとき、より重要なのは モデリング です。
Power BI では特定のビジュアルのためにデータを集めテーブルをマージしたり、クエリを記述することはほとんどありません。たとえば、売上についてレポーティングが必要になったとき、データモデルでは得意先/担当者/商品/販売(実績) というビジネスエンティティをリレーションシップで関連付けするだけです。時系列で集計や分析するときは日付テーブルを追加してください。それらひとつのテーブルにマージする必要もありませんし、マージしないことをおススメします。結果として得たい集計やKPIなどはメジャーを記述しデータモデルに定義します。ビジュアルをレポートに配置するには ドラッグ&ドロップ、クリックするだけで完了しますが、このときデータモデルに定義 された "意味" に基づき集計が行われるのです。Excel で チャートを作成するときのように、ビジュアルありきでデータを加工(改変)するということはしないのです。
組織のデータを利用しやすく
組織のデータは多くの場合 "記録" のままなのかもしれません。それぞれの関連と集計を定義することで "記録" から ”意味"をもつものに変わるはずで、エンタープライズ レベルではこれらデータをどう利用するかを考えてみます。
セルフサービス BI という側面のままではレポートを作成するひとそれぞれがモデリングをするすることになります。アドホックなレポーティングでは依然このスタイルは残るでしょう。ただ、これを否定する必要はありません。
Power BI では モデリングが完了したデータモデルの共有や再利用できるようになっているので、レポートが必要なユーザは組織に公開されたデータモデルを参照し、必要な集計やビジュアルを含むレポートを作成するだけということも容易です。また、データモデルの利用/再利用をすることで様々な事情によりサイロ化された組織のデータも整理統合した状態を利用することができますし、組織で推奨されるデータモデルを利用したレポートは信頼性が高いという判断もできるようになるでしょう。
組織に公開されたデータモデルの更新についても自動的に伝搬していくので、継続したデータの運用を行うこともできるようになります。
Governance
組織のデータが最適かつ安全に利用されるよう Power BI には機能が追加されていきます。ポイントは、影響する範囲が Power BI の内部だけではなく Power BI からの出力や出力されるデータにまで及ぶ機能です
Power BI での データの保護
-
Power BI 内でデータの秘密度ラベルを有効にする (プレビュー) - Power BI | Microsoft Docs
-
Azure Information Protection ラベルを統合された秘密度ラベルに移行する - AIP | Microsoft Docs
-
Power BI で Microsoft Cloud App Security の制御を使用する (プレビュー) - Power BI | Microsoft Docs
-
Power BI 用の独自の暗号化キーを使用する (プレビュー) - Power BI | Microsoft Docs
Ignite 2019 関連セッション
- BRK3207 : Microsoft Power BI: Roadmap for enterprise information management – data lineage and impact analysis, data protection, and data discovery
- BRK3314 : Power BI and Microsoft Information Protection: The game changer for secure BI
Scalability
現在、Power BI Pro で利用できる データセットサイズの上限は 1 GB で 共有リソース上に配置されます。エンタープライズ レベルでのPower BI の利用を考慮したとき、容量不足にならないか?ということもあるでしょう。これはとても重要なことです。
オンプレミス の SQL Server Analysis Services(表形式モード)、Azure Analysis Services、Power BI それぞれで考慮すべきことから、主にデータセットに対する拡張性や可用性について考えてみます。
SQL Server Analysis Services は ハードウェア の設定/セットアップ/構成/アップデートなどすべてにおいて管理することができます。ただし、すべてのキャパシティはハードウェアのサイジングに大きく影響を受けますので、キャパシティの拡張にはハードウェアの更新から考慮する必要が出てきます。
ハードウェアの管理やサイジングを検討する必要がないということは、Azure Analysis Services に移行する理由として充分です。
Azure Analysis Services で 大規模なデータモデルを利用するとき、まず考慮しなければならないのはメモリサイズです。S9V2 で 最大 400 GBまでサポートします。この 400 GB には メモリ上にキャッシュされたデータベースの他、付帯するワークロードなどにも利用されるのでまるまるデータセットの許容されるサイズということではありません。
キャパシティがもっと必要になったときなどインスタンスの価格レベルつまりキャッシュメモリサイズは簡単に変更できます。
Power BI Premiumを 選択することで もっと多くの拡張性に期待することができます。
まず、許容されるデータモデルのサイズについて.
増分更新によるデータの更新が条件となりますが、Power BI でも 最大 400 GB のモデルをサポートできるようになります。ワークロードでもメモリは使用(20%ほど)されるので、実質 350 GB程度ということになるかもしれません。それでも十分すぎるくらいの容量になるし、容量としては Azure Analysis Services と同じレベルに達しつつあるということでしょう。
データモデルのサイズ以外でも Azure Analysis Services の スーパーセットということができる大きなアドバンテージが存在します。
・メモリ利用の最適化
割り当てられたメモリ上で実体化したデータモデルが配置されている状態で、新たなデータセット、シナリオとしてはレポートの呼び出しが行われたとき、割り当てられたキャパシティを超えることがないようメモリの利用について最適化が行われます。簡単にいうと最後に利用されてから一番古いモデルの削除が自動的に実施されます。
・Composite mode / 複合モード
インポートモード / DirectQuery モード それぞれの利点を持ち合わせたモードが利用できる。モデル内のデータを部分的(テーブル単位)でキャッシュされた状態にすることで集計パフォーマンスを向上させることができる。
・Aggregations
集計済みデータをキャッシュすることで集計パフォーマンスを向上させることができる。
・Incremental refresh / 増分更新
スクリプトを記述することなく設定することができる。
Open-platform connectivity
Power BI Premium キャパシティ に配置されたワークスペースを Analysis Services Server 同様に参照することができるようになっています。
SQL Server Analysis Services 多次元モードの時から XMLA エンドポイントが用意されていてデータセットを参照にすることはできていましたが、Power BI service でも XMLA エンドポイントを利用できるようになります。Microsoft が提供するエコシステムは Power BI に配置された 組織のデータ についても適用されるということでしょう。たとえば、Power BI service に配置されているデータセットに対し、Power BI レポートのソースとして参照する以外に Power BI Desktop / Excel そして サードパーティのアプリケーションからのアクセスを許容します。このポイントについては 別のスライドにて。
Application lifecycle management
これについては、
で詳しく説明していたのでこちらから。
Power BI アプリを発行するためには Power BI service のワークスペースで作業する必要がある。ワークスペースは以前 "アプリのワークスペース" と命名されていた。
現在では、Power BI アプリ それぞれのワークスペース環境でデータセット/レポート/ダッシュボードを管理し アプリに含め発行していたが、継続的に配置まで完了できるパイプラインが用意される計画。
この機能で、アプリ生産性の向上 / 速やかな展開 / エラーと手間を減らす 。
Power BI service 上の 配置パイプラインには、Deployment / Test / Production のステージが用意され アプリ発行までを支援する。各ステージ間の差分、データソースの変更(テスト環境から本番環境など)が機能として含まれる
Manageability
Power BI 管理ポータルや Office 365 管理ポータルで状況を確認したり設定することができるようになっています。今後追加されていくガバナンス強化に利用できる機能についても、それぞれログを参照などができるインサイト機能も追加されていきます。
Power BI の管理
Power BI では Microsoft 365 / Office 365 と同じく監査ログ(Power BI アクティビティ)を収集することができる。
Office 365 の完全な管理アクセス権を付与することなく、Power BI 管理ポータルにアクセスできるようにする必要があるユーザーには、Power BI サービス監理者ロールを割り当てることができます。
Large models
プレビューですが利用できるようになりました。Power BI データセットのキャッシュサイズが 10 GB までであるところ、最大 400 GB までサポートします。
-
Power BI データセットのキャッシュサイズは Azure Analysis Services と同等になります
-
Power BI Premium に割り当てられたキャパシティが必要です
-
Power BI Premium の SKU P もしくは A で利用可能
-
新しいワークスペースが必要
-
Power BI Premium の大規模なモデル (プレビュー) - Power BI | Microsoft Docs
-
Large models in Power BI Premium public preview | Microsoft Power BI ブログ | Microsoft Power BI
XMLA Endpoints
Azure Analysis Services では Visual Studio / SQL Server Data Tools および サードパーティの開発環境で管理ができ、配置されたデータモデルへ Power BI Desktop / Excel および サードパーティのクライアント製品から参照できるようになっています。
このシナリオが Power BI でも利用できるようになります。現在 read 機能がプレビュー、write についてはロードマップに載っている状態です。
これは、3 月の XMLA 読み取り専用サポートのプレビューのフォローアップであり、サード パーティの BI ツールから、Power BI Premium といくつかのパフォーマンス監視ソリューションのデータセットに接続できるようになりました。 データセットへの読み取り/書き込みのフル アクセスが可能になります。 これにより、監視、ライフサイクル管理、デバッグなどのシナリオを可能にする追加のサード パーティ ツールとの接続性を得るための大きな機会が生まれます。
- Power BI open-platform connectivity with XMLA endpoints public preview | Microsoft Power BI ブログ | Microsoft Power BI
- クライアント アプリケーションとツールでデータセットに接続する (プレビュー)- Power BI | Microsoft Docs
Incremental refresh
Performance
日本語に翻訳されたものはこちら
Power BI のホワイト ペーパー - Power BI | Microsoft Docs
Power BI Premium options when resolving issues
Optimize the model or workloads
・データモデルに問題があるとき
得たい結果が得られるものの非効率なメジャー(DAX) が利用されていることが多い。
関連して推奨される スキーマ構成になっていないため非効率な処理になっていることがある。Power BI / Analysis Service ですぐれたパフォーマンスを得るために推奨されるのは スタースキーマ。データモデルがどのような状態にあるか確認するべき。
・ワークロードの構成に問題があるとき
Premium キャパシティ のメモリキャッシュサイズから データセット、データフロー、AI など機能に対する割り当てを調整することができる。
Premium 容量でワークロードを構成する- Power BI | Microsoft Docs
Balance workspaces across capacities
Power BI Premium は占有できるキャパシティが利用できるのであるが、例えば 複数のキャパシティが準備されているとき、特定のキャパシティにのみ多くのワークスペースが割り当てられているとか、大きなデータモデルや頻繁に参照されるレポートを含むワークスペースが集中してしまうと、レポート表示までのレスポンスが低下していくことになる。程よく分散することを計画しておいた方がよいのでしょう。
また、レポートやダッシュボードで表現されるデータの重要性で仕分けることもありえる。例えば、できるだけ最新の情報が必要なワークスペースであるとか、エグゼクティブ向けのワークスペースであるとか加重して分散しておくことも必要かもしれない。
Scale capacity up
そもそもキャパシティが不足していることがあるので、スケールアップも考えておく必要がある。
データセットが使用できるメモリサイズは可能な限り消費していき、メモリサイズが超過してしまうときに新たなデータセットが呼び出されたとき、最も前にオンメモリになったデータセットから削除されていくことになる。新たに呼び出されたデータセットがメモリに読み込まれるまでの時間(約 1 min)待つことになるし、削除されたデータセットが再び呼び出されたときメモリに読み込まれるまでの時間が消費される。
データセットが保存されるストレージが 100 TB と充分ではあるが レポートが表示されるときにはオンメモリになる必要があるのです。
Premium Capacity Metrics App
Power BI Premium Capacity Metrics アプリで Premium キャパシティがどのように使用されているかなど調査や傾向を把握することができる。
アプリで Premium 容量を監視する - Power BI | Microsoft Docs
Find refresh issues with the capacity app
問題を調査する例として、データセットの更新について
クエリの待ち事象時間が大きいことがバーチャートで確認できていて定期的にスパイクを描いているとき、スケジュールされた更新が多く重なって実行されているケース。ワークロードで調整することも可能ではあるけれども、それ以前に同じ時間帯で実行されないよう分散していくことの検討ができるでしょう。