DWH のデータが多すぎてPower BI で使えない?DirectQuery を活用しましょう!

by 加藤龍彦 | 2023年09月11日

こんにちは、ウェブ担当の加藤です。

多くの企業がDX(デジタルトランスフォーメーション)やデータ活用に取り組むようになり、業績や事業を改善する意思決定に繋がるインサイトを得るためにさまざまなSaaS や基幹システム、データベースのデータをデータウェアハウス(DWH)に統合して活用する、という事例が増えてきました。企業によっては、さらにデータマートやデータレイクを活用している場合もあるでしょう。

しかし、DWH にデータを集約すると今度はBI ツールでのデータインポートの際に困ったり・・・。データが増えれば増えるほど、通常のやり方ではインポート処理や整形に時間がかかり、分析に活用するのが難しくなりますよね。

ということで今回は、Power BI のDirectQuery 機能とCData Power BI コネクタを使って、大規模データを分析に活用する際のデータインポートのお悩みを解消する方法をご紹介します!Google BigQuery を例に使いますが、同様の機能はどんなDWH との連携にも欠かせません。

リアルタイムクエリを使う

ほとんどのBI・アナリティクスツールは、データをローカル環境にインポートせずにデータソースからデータとリアルタイムに連携・クエリする方法を用意しています。リアルタイム連携には次のような利点があります。

  • 最初に全データをインポートすることが難しい(またはできない)巨大なデータセットから、レポート、可視化、ダッシュボードを作成できる。
  • ほぼリアルタイムで参照先データの変更を反映できる。データをいちいち再インポートしていると、それだけでかなりの時間とリソースが必要となります。
  • ツール固有のデータセットサイズ上限を回避できる。例えば、Power BI では1GB までしかデータセットにインポートできません。

CData のドライバーはツール、プラットフォーム、アプリケーションに関わらずデータへのリアルタイムアクセスをサポートします。特にCData Power BI Connectors は、あらゆるデータソースでDirectQuery を使ったリアルタイム連携をサポートしています。

Power BI からGoogle BigQuery をDirectQuery で使う

Google BigQuery は、Google Cloud(GCP)上で使えるフルマネージドのクラウド型データウェアハウスです。高性能、従量課金かつクラウド提供で始めやすい、Google アナリティクスやGoogle 広告など他のGoogleエコシステムとの連携が強いなどの特徴があります。

Power BI のリアルタイムクエリ機能であるDirectQuery をビルトインでサポートすることで、CData Power BI Connector はPower BI レポート、ダッシュボードからBigQuery データへのリアルタイム連携を実現します。

Power BI の1GB というデータセットサイズ上限とデータをインポート・処理するのに必要なリソースを考慮すると、DirectQuery は大規模データセットを扱う上で唯一の選択肢と言っていいでしょう。本記事ではニューヨーク市タクシー&リムジン委員会(nyc-tlc)のデータセットの、特にイエロータクシーの走行データを使用して、Power BI からBigQuery へのリアルタイム連携を実際にやってみます。

次は使用したテーブルの詳細です。

タクシー走行テーブルの詳細

テーブルID: nyc-tlc:yellow.trips  
テーブルサイズ:139.29 GB  
行数:1,108,779,463 

見て分かるように、このテーブルには10億行以上のデータがあり、テーブルサイズはPower BI の1GB インポート制限を優に超えています。分析用にPower BI にデータセット全体をインポートするのは不可能で、他のどのツールやプラットフォームでも時間とリソースの面でかなりコストがかかります。それでは、Power BI コネクタとDirectQuery を使ってこのデータに接続していきましょう。

データに接続するために、テーブル(とデータセット)をBigQuery のローカルのプロジェクトにコピーして、CData Power BI Connector のProject Id、Dataset Id を設定しました。以下はDSN の設定画面です

BigQuery をOAuth 経由で認証して(ブラウザからGoogle の資格情報でログイン)、Power BI に直接接続することもできます。

可視化を作成

リアルタイムでデータに接続することで、フィルター、集計などの複雑な操作の多くをもとのデータソース上で実行できるため、大規模データセットからでも高速で可視化を作成できます。複雑なクエリをデータソースに渡すことでサーバーサイドの計算リソースを活用でき、レポーティングを高速化すると同時にクライアントサイドのリソースを節約できます。フィルターの変更やドリルダウンなどに応じてリアルタイムで更新されるさまざまな可視化を作成できます。

タクシー会社毎の走行回数

まずは、データセット内の各タクシー会社毎の走行回数を円グラフで示してみました。データをインポートする場合、10億行以上の走行データをクライアントサイドでインポート、グループ化、カウントすることになります。それに対してDirectQuery を使えば、BigQuery 側でグループ化やカウントを行わせて、Power BI に結果をリアルタイムで連携できます。この機能のおかげで、もとは10億行あったものがPower BI 側ではBigQuery で処理・グループ化された3行のデータ(各会社毎に1行)から可視化を作るだけで済むわけです。

乗客数とタクシー会社毎の平均料金総額

次の可視化では、各走行を乗客数とタクシー会社毎にまとめて、その料金総額の平均を求めています。0から10人の乗客数の走行でフィルタリングしているので、さらに複雑です。ここでも10億行を扱うのにローカルリソースに頼るのではなく、Power BI はBigQuery に平均、グループ化、フィルタリング、順序づけを行わせることができます。これだけ複雑な処理が含まれていても、Power BI 側では33行のデータ(会社3つ分に乗客数11をかけた数)をグラフ化するだけで良いのです。

タクシー会社と場所毎の降車状況

最後の可視化では、タクシー会社毎に色分けして各運転の(緯度と経度に基づく)降車場所を示します。可視化ではごく単純なクエリを使っているので、結果セットはかなり大きなものになります。

ダッシュボード全体

ライブクエリを活用することで、他の可視化上でデータをドリルダウンする際にはいつでも、これまでの可視化すべてをリアルタイムでフィルタできます。DDS 社の乗客数6人の走行を表すバーをクリックすることで、同じフィルタを他の可視化にも適用できます。各可視化用のフィルタがクエリに追加され、Power BI はBigQuery にリアルタイムデータをリクエストすることで結果は秒単位で返されます。やったね。

おわりに

いかがでしたか?CData Power BI Connectors を使えば、BigQuery をはじめとする人気のデータストア、DWH でDirectQuery が使用できます。DirectQuery をサポートすることで、円グラフ・棒グラフから地図や散布図など、もとのデータセットのサイズに関わらずPower BI のあらゆる可視化を使ったリアルタイムレポーティングを実現できます。

この記事ではBigQuery を使用しましたが、ここで説明した技術や手順はCData がサポートする250のSaaS、Big Data、NoSQL データソースにも当てはまります。

すべてのPower BI Connectors で30日間無料のトライアルをダウンロードできるので、ぜひビッグデータとのリアルタイム連携をお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。