Partager via


Power BI におけるデータ アクセス方法 まとめ (DirectQuery と ライブ接続の違い)

Microsoft Japan Data Platform Tech Sales Team

土井

Power BI にはデータ アクセスの方法が大きく 3 種類あります。

  • インポート
  • DirectQuery
  • ライブ接続

それぞれの使いわけや制限がいまいちわかりにくい、と相談を頂くケースが多いので、まとめてみます。

(ストリーミング データセットREST API によるプッシュ型のデータセットについては本記事の対象外とします)

◆ 本題に入る前に・・・

Power BI Desktop は無償提供しているデータ活用アプリケーションですが、実は裏側では商用データベースである SQL Server が動いているのをご存知でしたでしょうか?

Power BI Desktop を起動した状態でタスクマネージャーを見てみると、 SQL Server の分析用データベース機能である SQL Server Analysis Services がバック グラウンド プロセスとして動いているのが見ていただけます。

image

無償で商用データベースの一機能を使えてしまうという営業泣かせのプロダクトです。まだ触ったことがない、という方はぜひ こちら からダウンロードしてみてください。

それでは、それぞれのデータ アクセス方法について見ていきましょう

 

◆ インポート

インポート ではこの、Power BI Desktop 内で動いている SQL Server Analysis Services のメモリ内 (データモデル) にデータを取り込みます。image

・取り込めるデータソースの一覧

フラットファイル や SQL Server 、 Azure の各サービスはもちろん、3rd Party のデータベースや、クラウドサービスからもデータを取得できるようになっています。詳細は以下のリンクを参照ください。

[Power BI Desktop のデータ ソース]

 

・Power BI Desktop にインポートできるデータサイズ

特に制限はありませんが、クライアント PC のメモリにデータを保持するため、お使いの PC のスペックにより上限が決まります。また、Power BI サービス にレポートを発行する場合は、クラウドサービス側に取り込めるデータセットの上限容量が決まっており、圧縮後 1GB まで となっています。(Power BI Premium をご利用の場合、この制限はありません。※2017/6/1更新)

[Power BI サービス のデータソース]

 

・データのリフレッシュ

更新ボタンを押すとデータソースにクエリを発行し、データモデル内のデータを最新化することができます。また、Power BI サービス にアップロードした場合、スケジュールを指定してデータ更新をすることができるようになっています。無償ライセンスでは 1 日 1 度、**有償ライセンス (Power BI Pro) では ともに1 日 8 回まで**更新スケジュールを指定できます。(※2017/6/1更新) オンプレミスのデータソースに対してアクセスする場合は別途 オンプレミス データ ゲートウェイ を構成する必要があります。

[Power BI でのデータの更新]

[スケジュールされた更新の構成]

[オンプレミス データ ゲートウェイ]

 

◆ DirectQuery

DirectQuery では Power BI Desktop 内で動いている SQL Server Analysis Services が DAX (場合によっては MDX) で問い合わせを受け付け、SQL に変換してデータソースにクエリを発行します。データソース側で処理された結果だけを Power BI で表示をします。データモデル内にデータをインポートしないので、Power BI サービスにおけるデータ容量の上限 (圧縮後 1GB) の制限を受けません。一方で、その都度データソースにクエリを発行するため、レスポンスタイムはインポートの場合と比較すると遅くなります。

image

・サポートされているデータソース

SQL Server や Oracle など主要な RDBMS や SQL Data Warehouse や Amazon Redshift などのクラウド DWH に対応しています。詳細は以下リンクを参照ください。

[Power BI Desktop の DirectQuery]

 

・DirectQuery を使用する場合の重要な考慮事項

一般的な ROLAP の BI 製品における共通の考慮事項です。

- DAX を SQL に変換するため意図せず複雑なクエリを発行してしまう可能性がある

- データソースへの接続は代表ユーザでの接続となる (ログインユーザの情報はデータソースに渡さない)

- 一部の機能やDAX関数は未対応です。

詳細は下記ドキュメントをご確認ください。

[DirectQuery の制限]

[DirectQuery を使用する場合の重要な考慮事項]

 

・Power BI サービスにおける DirectQuery

Power BI Desktop で DirectQuery がサポートされているデータソースでも、Power BI サービスからは利用できない場合があるためご注意ください。Power BI サービスにおける最新のサポート情報は Power BI Blog を参照ください。

例 : [Announcing support for Amazon Redshift connectivity in the Power BI service]

 

また、Power BI 料金表 における “完全対話型のライブ データ ソースを使用する” は DirectQuery および 後述のライブ接続 を指しますので、**有償ライセンス (Power BI Pro) が必要な機能**となります。 (※2017/6/1更新)

 

◆ ライブ接続

・ライブ接続ではデータソースとなる SQL Server Analysis Services もしくは Azure Analysis Services に対して直接接続して DAX で問い合わせをします。DirectQuery と異なり、ネイティブなクエリでデータソースとやりとりするため、変換時のオーバーヘッドが無く高速なレスポンスが期待できます。

image

・ライブ接続のメリット

■セキュリティ

Analysis Services ではデータソース側でアクセス制御を一元管理ができます。Power BI サービス では 行レベルアクセス制御 (RLS) の機能を提供していますので、インポート、DirectQuery の場合もユーザの権限に応じたアクセス制御を実現することができますが、Power BI Desktop のみを使用している場合、アクセス制御はデータソース側で設定する必要があります。

また、Analysis Services では EffectiveUserName と呼ばれる属性情報を使って、ユーザを特定した状態でデータソースにアクセスします。これにより いつ、どのユーザが どんなクエリを発行したのか、といった詳細レベルの情報を取得することも可能です。

[接続文字列プロパティ (Analysis Services)]

 

■要件に応じて二つのモードを使い分けできる

Analysis Services は二つのモードを提供しています。Power BI Desktop のエンジンと同じ技術が使われている 表形式モード と、従来バージョンから長く利用されてきた 多次元モード です。メモリに乗り切らないような大量データを扱う場合には後者の多次元モードを使用してあらかじめ集計を作成しておくなど、データモデルの設計が必要となるケースもあります。1 つのライセンスで 2 つのモードを利用いただけますので、要件に応じて最適なモードをお選びいただけます。

Analysis Services についての詳細は以下の記事を参照ください。

[SQL Server Analysis Services入門]

[SQL Server 2016 Analysis Services のご紹介]

 

◆ まとめ

本記事では Power BI における 3 つのデータアクセス方法について解説しました。

ほとんどの場合、まずは インポート で手軽にお試しいただき、データ容量が増えてきたり、パフォーマンスを改善したい、ガバナンスを効かせたいといったエンタープライズの要件が出てきたりした場合に DirectQuery か ライブ接続をご検討いただくことになるかと思います。

ここまでご説明した内容を以下の一枚物でまとめましたので、データアクセス方法を検討する際の材料としていただければ幸いです。

image

 

◆関連記事

エンタープライズ環境における Power BI の使い方 (前編) エンタープライズ環境における Power BI の使い方 (後編) 2017/02/18 Power BI 勉強会 – 第 3 回 が開催されました 連載 : DAX 入門 [Power BI][SSAS][PowerPivot]

Comments

  • Anonymous
    October 18, 2017
    The comment has been removed
    • Anonymous
      November 13, 2017
      The comment has been removed