Power BI の SAP コネクタで起きるメモリ・パフォーマンス問題の解決方法
製造業やサプライチェーンの企業レポーティングにおいて、Power BI と SAP は欠かせない組み合わせです。ただ、本番環境の規模で両者を安定して連携させるのは、多くのチームにとって長年の課題になっています。Power BI は生産・在庫・財務にまたがる可視化を担い、SAP はそのレポートの元となる業務データを保持しています。
SAP と Power BI をつなぐ方法としてよく使われているのが、Microsoft 標準の SAP コネクタです。軽めのワークロードであれば問題なく動作しますが、データセットが大きくなりレポートが複雑になるにつれて、ドキュメントにも記載されている予測どおりのパターンで性能が低下していきます。
典型的なのは次のような症状です。レポートの途中で DirectQuery セッションがタイムアウトする、更新時に Power BI Desktop のメモリが枯渇する、SAP サーバー上に Remote Function Call(RFC)接続が溜まり続ける、といったものです。ところが問題をエスカレーションしても、Microsoft のトラブルシューティングドキュメントでは SAP への問い合わせを案内され、SAP の公式 FAQ ではセッションやメモリの問題は Power BI チームの担当だとされています。双方が責任を相手側に委ねていることがドキュメント上でも明らかで、どちらのベンダーも解決を約束していないのが現状です。
本記事では、こうした不具合の根本原因を解説したうえで、CData SAP Power BI Connector のセットアップ手順をインストールとライセンス認証から DSN の設定、レポートへの接続まで一通りご紹介します。既存の Power BI ファイルに手を加えることなく、ライブの SAP データに対してそのまま実行できるようになります。
標準 SAP コネクタで不具合が起きる根本原因
標準コネクタのパフォーマンス問題は、設計上の 3 つの制約に起因しています。多次元式(MDX)インターフェースを経由してクエリを送る仕組み、DirectQuery でのメモリ管理、そして SAP セッションのライフサイクルの扱い方です。
- SAP HANA での DirectQuery タイムアウト:このコネクタは、レポートの描画に実際に必要かどうかに関係なく、選択されたすべての列を HANA に送るサブセレクトに含めてしまいます。その結果について Microsoft 自身も、こうしたクエリは「一般にパフォーマンスが低く、タイムアウトが発生する可能性がある」と認めています。さらに、個別カウントや平均といった非加法メジャーは HANA 側のクエリプラン最適化を妨げ、不具合を起こりやすくします。(Microsoft Learn — Power BI での SAP HANA に対する DirectQuery)
- SAP Business Warehouse(BW)における BatchSize とメモリのトレードオフ:BatchSize パラメータは、1 回の MDX 呼び出しで取得する行数を制御します。値を大きくすれば呼び出しのオーバーヘッドは減りますが、「SAP BW サーバーでメモリの問題が発生する可能性」があります。デフォルトの 50,000 行はちょうどその中間に位置しており、企業規模のデータ量ではどちらに振っても安全とはいえません。(Microsoft Learn — Power BI Desktop の SAP BW コネクタ)
- MDX は大量データの抽出を想定していない:SAP の FAQ によると、メモリエラーは「99% のケースで要求された結果セットのサイズが原因」であり、「MDX インターフェースは大量データの抽出に使うことを想定していない」とされています。また、Power BI が生成する MDX には NON EMPTY ステートメントが含まれず、この動作はレポート開発者側では変更できません。(SAP KBA 2777473 — MDX: FAQ for Power BI accessing BW or BW/4HANA)
- RFC セッションが閉じられずに蓄積する:Power BI の操作によって SAP BW への RFC 接続が開かれますが、操作が完了またはキャンセルされた後も SAP サーバー上で開いたままになります。SAP のドキュメントでは、セッションのライフサイクル管理はフロントエンドツール側の責任とされており、BW 側のセッションのクリーンアップについて SAP サポートは対応していません。(SAP KBA 2777473)
- SAP BW での MDX セル数上限とメモリ枯渇:従来の MDX 実行モードでは、SAP BW の結果セットは 1,000,000 セルが上限です。標準コネクタの実装 2.0 ではこの上限が撤廃されましたが、根本的なメモリとタイムアウトの問題は解決されておらず、大きな結果セットは依然として「非常に大きく、処理に時間がかかる」ままです。(SAP SCN Wiki — MDX: 1 million cell limit · Microsoft Learn — クエリ オブジェクトの移動)
こうした不具合に関するサポートスレッドで特によく見かけるのが、次の 2 つのエラーメッセージです。
DataSource.Error: SAP Business Warehouse: SYSTEM_FAILURE No more memory available to add rows to an internal table
Error occurred when starting the parser: timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'
コネクタの不具合が製造現場にもたらす影響
生産計画のダッシュボードはシフト交代のタイミングで使われ、在庫可視化レポートは棚卸しの最中に開かれています。財務の照合作業は月末の締め切りに合わせて実行されます。いずれも時間的な制約のある定例業務のため、DirectQuery のタイムアウトや Power BI Desktop のクラッシュが起きると、すぐに後工程へ影響が及びます。サポートチケットの解決を待っている余裕はありません。
標準コネクタのドキュメント自体にも、こうした不具合の発生条件が業務的な観点で記載されています。Microsoft によると、列を選択しすぎるとサブセレクトクエリが「一般にパフォーマンスが低く、タイムアウトが発生する可能性がある」状態になり、非加法メジャーは「SAP HANA のクエリプラン最適化の効率を低下させる」とされています。(Microsoft Learn — Power BI での SAP HANA に対する DirectQuery)
SAP の FAQ でも、メモリエラーの大半は結果セットのサイズが原因であり、MDX インターフェースは「大量データの抽出に使うことを想定していない」と明記されています。つまりこれらは例外的なケースではなく、本番のレポーティングに必要なクエリパターンでコネクタを使った場合の、ドキュメント化された「仕様どおりの」動作なのです。(SAP KBA 2777473)
行数の上限を下げる、インポートモードに切り替える、事前フィルターを強めにかけるといった対策で不具合の頻度を減らすことはできます。しかし、どれもレポートのカバー範囲やデータの鮮度を犠牲にするもので、そもそも Power BI を SAP に接続する目的を損なってしまいます。
ドライバーレベルでコネクタを置き換えれば、レポートの作り直しやワークフローの変更をせずにこれらの不具合を解消できます。
CData SAP コネクタでこれらの問題を解決する仕組み
CData は、根底にあるクエリアーキテクチャそのものを置き換えることで、標準コネクタの不具合に対処します。以下の各機能は、前述の不具合パターンそれぞれに直接対応しています。
- サーバーサイドのクエリプッシュダウン:フィルター、結合、集計は、データが Power BI に送られる前に SAP 側で実行されます。コネクタは、表示中のレポートに必要な結果だけを返すため、元のデータセットのサイズにかかわらず、SAP 側と Power BI Desktop 側の両方でメモリ使用量を一定の範囲に抑えられます。(CData — SAP HANA Power BI Connector)
- SAP データへの直接 SQL アクセス:CData SAP コネクタは、各プラットフォームに対して最も効率的なネイティブインターフェースでクエリを実行します。HANA ビューには SQL、SAP ECC と BW には RFC/BAPI 呼び出し、S/4HANA Cloud には SQL プッシュダウン対応の OData を使います。いずれの経路も MDX インターフェースを完全に迂回するため、100 万セルの上限、BatchSize とメモリのトレードオフ、SAP KBA 2777473 に記載されている大量抽出の制約がデータ経路から取り除かれます。
- 管理されたコネクションプーリング:ドライバーはコネクションプールを保持し、セッションのライフサイクルを適切に管理します。接続は操作ごとに開かれ、実行後にプールへ戻されるため、標準の BW コネクタで起きるような RFC セッションの蓄積は発生しません。
- DirectQuery、インポート、複合モードに対応:Power BI の 3 つの接続モードすべてをフルサポートしています。DirectQuery モードでは、ローカルにコピーを保存せずにライブの SAP データへ直接クエリを実行します。そのため Power BI Pro のインポート上限(1GB)の影響を受けず、常に変化し続ける業務データに対してもダッシュボードを最新の状態に保てます。
- 完全な SQL 準拠:SELECT、WHERE、JOIN、GROUP BY、ORDER BY、集計関数といった標準 SQL 操作が、すべてのコネクタで SAP のテーブルやビューに対して正しく実行されます。データとメタデータの両方にフルアクセスできるので、追加のツールなしでスキーマの検出やレポート開発が行えます。
- ドライバーのパフォーマンス:CData ドライバーは SQL エンジンレベルでスループット効率を高めるよう設計されており、すべてのコネクタでソケットレベルのストリーミングと圧縮を採用しています。Microsoft 標準の SAP HANA コネクタとの直接比較ベンチマークでは、CData はコールドスタート時の接続が最大 11 倍高速、インポートモードでの 100 万行の読み込みが 65.9% 高速、DirectQuery セッション全体の完了が 37% 高速という結果になりました。(CData — Power BI SAP HANA コネクタ パフォーマンスベンチマーク)
- 窓口がひとつで済むサポート:CData は、Power BI から SAP までの接続経路全体をサポートします。接続の問題が起きたときも、Microsoft と SAP の間でたらい回しにされることなく、ひとつのチームとやり取りするだけで済みます。
CData SAP HANA Power BI Connector のセットアップ
NOTE:この手順では、CData SAP HANA Power BI Connector を例に説明します。インストール、ライセンス認証、DSN の設定、Power BI Desktop からの接続の手順は、CData のすべての SAP コネクタで共通です。プラットフォームごとに異なるのは、Step 3 の接続プロパティだけです。各 SAP 製品に対応するプロパティについては、後述の対応している SAP プラットフォームをご覧ください。
Step 1:ダウンロードとインストール

まずは CData Power BI Connector for SAP HANA をダウンロードして、インストーラーを実行しましょう。ウィザードがドライバーの登録を行い、デフォルトのインストールディレクトリにコネクタを配置します。
- インストールが完了したら、次の場所にある .pqx コネクタファイルを探します。
C:\Program Files\CData\CData Power BI Connector for SAP HANA\CData.SAPHANA.pqx - このファイルを Power BI Desktop の Custom Connectors フォルダにコピーします。
Documents\Power BI Desktop\Custom Connectors - Power BI Desktop を再起動します
- カスタム拡張機能を有効にするよう求められた場合は、ファイル > オプションと設定 > オプション > セキュリティを開き、データ拡張機能で(非推奨)検証やエラーを伴わずに、任意の拡張機能の読み込みを許可するを選択して再起動します
Step 2:ライセンスのアクティベーション
ライセンスキーは、CData のオーダーチームから XXXX-XXXX-XXXX-XXXX-XXXX の形式でメールにて届きます。トライアルとしてインストールする場合は、セットアップ時に Trial Key オプションを選択してください。インストール後に手動でアクティベーションする場合は、次の手順で行います。
- Windows のスタートメニューから ODBC データソースを開きます
- ユーザー DSN または システム DSN タブで CData PBI SAPHANA Source を選択し、構成をクリックします
- About タブに移動します
- License Information の Activation フィールドにライセンスキーを入力し、Activate! をクリックします
- コネクタのステータスが Licensed と表示されたら、OK をクリックします
NOTE:ライセンスを別のマシンに移行する場合や、ライセンスキーを紛失した場合は、サポートまでお問い合わせください。
Step 3:DSN の設定
コネクタは、SAP HANA の接続プロパティを DSN(データソース名)に保存します。Windows のスタートメニューから ODBC データソース アドミニストレーター(64 ビット)を開きましょう。Power BI Desktop は 64 ビットアプリケーションのため、64 ビット版を使う必要があります。
- システム DSN タブをクリックします。システム DSN はそのマシンのすべての Windows ユーザーが利用でき、Power BI ゲートウェイで運用する場合に必要です。ローカルの Power BI Desktop で使うだけであれば、ユーザー DSN でも問題ありません
- CData PBI SAPHANA Sys を選択して構成をクリックするか、追加をクリックして新しいエントリを作成します
- 接続プロパティを入力します。
- Server:SAP HANA サーバーのホスト名または IP アドレス
- Auth Scheme:ユーザー名とパスワードで認証する場合は Basic、HANA サーバーで SNC が構成されている環境で Kerberos ベースの SSO を使う場合は SNC(Secure Network Communications)
- User:SAP HANA データベースのユーザー名
- Password:上記ユーザーのパスワード
- Port:SAP HANA サーバーの TCP ポート。デフォルトはテナントデータベースが 39015、システムデータベースが 39013 です。正しいポート番号は SAP Basis 管理者に確認してください
- Database:接続先の SAP HANA データベース名またはテナント名。空欄にするとデフォルトのシステムデータベースに接続します
- Test Connection をクリックします。"The connection test was successful." というダイアログが表示されれば接続成功です
- OK をクリックして DSN を保存します

Step 4:Power BI Desktop から SAP HANA に接続
- Power BI Desktop を開き、データを取得 > 詳細をクリックします
- CData SAP HANA を検索し、一覧からコネクタを選択して接続をクリックします
- Data Source Name フィールドに CData PBI SAPHANA Sys と入力します
- 接続モードを選択します。
- DirectQuery:データの鮮度が求められる本番ダッシュボードにおすすめです。SAP HANA に対してライブでクエリが実行され、Power BI Pro のインポート上限(1GB)も適用されません
- インポート:複雑な変換が必要なレポートや、変化の少ない履歴データを扱うレポートに適しています。Power BI Pro では、1 日あたり最大 8 回までスケジュール更新を実行できます
- ナビゲーターダイアログで、レポートに必要な SAP HANA のテーブルまたはビューを選択し、読み込みをクリックします
Step 5:ビジュアライゼーションを作成して動作を確認
読み込みが終わったら、レポートビューに切り替えます。視覚化ペインでグラフの種類を選び、データペインからフィールドをキャンバスにドラッグしていきましょう。ここでは例として円グラフを作成してみます。
- 視覚化ペインで円グラフのアイコンを選択します
- Plant や MaterialNumber などのディメンションフィールドを凡例にドラッグします
- OrderQuantity や ProductionOrder などのメジャーフィールドを値にドラッグします
- 必要に応じて、フィルターペインからページレベルまたはレポートレベルのフィルターを適用します
- ツールバーの最新の情報に更新をクリックし、レポートがライブの SAP HANA データを取得していることを確認します
既存のレポートを接続し直す場合は、データの変換 > データ ソース設定でデータソースを新しい CData DSN に切り替えるだけです。ビジュアライゼーション、計算メジャー、フィルター、レポートのレイアウトはそのまま引き継がれます。

対応している SAP プラットフォーム
オンプレミスの SAP 環境向けに、CData はプラットフォームごとに専用の Power BI コネクタを提供しています。インストール、ライセンス認証、Power BI Desktop からの接続の手順はすべて共通で、プラットフォームごとに異なるのは Step 3 の DSN 接続プロパティだけです。SAP S/4HANA Cloud の場合は、CData SAP NetWeaver Gateway コネクタを使って同じ手順で OData エンドポイントに接続します。その際は、あらかじめ SAP 側で OData API を公開しておいてください。
| SAP プラットフォーム | CData コネクタ | 推奨される認証方式 | クエリ方式 | DirectQuery |
|---|---|---|---|---|
| SAP HANA(オンプレミス) | CData SAP HANA Power BI Connector | Basic(ユーザー名 + パスワード)または Kerberos SSO 用の SNC | HANA ビューへの直接 SQL | ✓ |
| SAP ERP / ECC(オンプレミス) | CData SAP ERP Power BI Connector | SAP ログオン資格情報:User、Password、Client、SystemNumber | RFC/BAPI による直接アクセス(MDX レイヤーなし)。接続元のマシンに RFC SDK ライブラリが必要です | ✓ |
| SAP BW / BW/4HANA | CData SAP ERP Power BI Connector | SAP ログオン資格情報:User、Password、Client、SystemNumber | RFC/BAPI による直接アクセス(MDX とそのセル数上限を回避)。BW on HANA 環境では、CData SAP HANA コネクタで直接接続することも可能です | ✓ |
| SAP S/4HANA Cloud | CData SAP NetWeaver Gateway Power BI Connector | SAP NetWeaver Gateway 経由の OData。接続前に SAP 側で OData API を公開・有効化しておく必要があります | SQL プッシュダウン対応の OData API | ✓ |
CData で Power BI と SAP の連携をシンプルに
製造・サプライチェーンのチームが、データの鮮度とレポートの安定性のどちらかを諦める必要はありません。CData SAP Power BI Connector なら、その両方を実現できます。サーバーサイドのクエリプッシュダウンでメモリ使用量を抑え、直接 SQL や RFC/BAPI アクセスで MDX の制約をすべて回避します。さらに、Power BI から SAP までの接続経路全体をひとつのベンダーがサポートします。現在タイムアウトやメモリ不足が起きているレポートも、同じ SAP データ、同じ Power BI ファイルのまま、手を加えずに実行できます。
まずは CData Power BI Connector for SAP HANA または SAP ERP の30 日間の無償トライアルをお試しください。クレジットカードは不要で、機能制限もなく、本番相当の負荷テストまで実施できます。設定や DSN のセットアップ、標準コネクタからの移行については、CData サポートチームがお手伝いします。