Power BI で DirectQuery を使用して SAP Business Warehouse に接続する

DirectQuery を使用すると、SAP Business Warehouse (SAP BW) データ ソースに直接接続できます。 SAP BW は OLAP/多次元的な性質があるため、SAP BW での DirectQuery と SQL Server などのリレーショナル ソース間では多数の重要な違いがあります。 これらの相違点は次のとおりです。

  • リレーショナル ソース上の DirectQuery には、フィールド リストで使用できるデータを論理的に定義するクエリのセット ([データの取得] ダイアログまたは [Power Query エディター] ダイアログで定義される) があります。 この構成は、SAP BW などの OLAP ソースに接続する場合には該当 "しません"。 代わりに、[データの取得] を使用して SAP サーバーに接続する場合、インフォキューブまたは BEx クエリのみが選択されます。 この場合、フィールド リストで、選択されたインフォキューブまたは BEx クエリのすべての主要データとディメンションを使用できます。
  • 同様に、SAP BW に接続する際に、[Power Query エディター] はありません。 データ ソースの設定 (サーバー名など) は、[データの変換]>[データ ソース設定] の順に選択して変更することができます。 すべてのパラメーターの設定は、[データの変換]>[パラメーターの編集] の順に選択して変更することができます。
  • OLAP ソースの固有の性質上、DirectQuery に対して課せられる通常の制限に加えて、他にも、適用されるモデリングと視覚化の両方に対する制限があります。 これらの制限については、この記事の後半で説明します。

さらに、Power BI ではサポートされていない SAP BW の機能が多数あること、また SAP BW へのパブリック インターフェイスの性質のために、Power BI で表示される結果が SAP ツールを使用した場合の結果と一致しない重要なケースがあることを理解しておくことが "非常に重要" です。 これらの制限については、この記事の後半で説明します。 SAP パブリック インターフェイスによって返され、Power BI を介して表示される結果が確実に正しく解釈されるように、これらの制限と動作の違いを注意深く確認する必要があります。

注意

SAP BW で DirectQuery を使う機能は、Power BI Desktop の 2018 年 3 月の更新までプレビューでした。 プレビュー期間中のフィードバックや改善提案を基に、そのプレビュー バージョンを使って作成されるレポートに影響を与える変更が行われました。 SAP BW での DirectQuery が一般公開 (GA) されたことで、GA 前バージョンで作成された、SAP BW での DirectQuery を使う既存の (プレビュー ベースの) レポートをすべて破棄する "必要があります"。

SAP BW 上の DirectQuery の GA 前バージョンで作成されたレポートでは、基になる SAP BW キューブへの変更を含むメタデータを更新しようとした結果として、Refresh の呼び出し時にこれらの GA 前レポートでエラーが発生します。 このようなレポートは、SAP BW での DirectQuery の GA バージョンを使って、空のレポートから作り直してください。

その他のモデリングの制限

Power BI で DirectQuery を使用して SAP BW に接続する場合のモデリングに対するその他の主要な制限は次のとおりです。

  • 計算列のサポートがない: 計算列を作成する機能は無効です。 この事実は、計算列を作成するグループ化とクラスタリングを使用できないことも意味します。
  • メジャーに対するその他の制限: SAP Business Warehouse から提供されるサポート レベルを反映するために、メジャーで使用できる DAX 式に課せられる制限が他にもあります。
  • リレーションシップの定義のサポートがない: リレーションシップは、外部 SAP ソースに固有のものです。 他のリレーションシップをモデルで定義することはできません。
  • データ ビューがない:データ ビューでは通常、詳細レベル データはテーブルに表示されます。 SAP BW などの OLAP ソースの性質上、このビューは SAP BW では使用できません。
  • 列とメジャーの詳細が固定されている: フィールド リストに表示される列とメジャーのリストは、基になるソースによって固定されており、変更できません。 たとえば、列を削除したり、列のデータ型を変更したりすることはできません。 ただし、名前は変更できます。
  • DAX のその他の制限: ソースの制限を反映するために、メジャー定義で使用できる DAX には他にも制限があります。 たとえば、テーブルに集計関数は使用できません。

視覚エフェクトのその他の制限

Power BI で DirectQuery を使用して SAP BW に接続する場合の視覚化に対するその他の主要な制限は次のとおりです。

  • 列の集計ができない: ビジュアルでは列の集計を変更できません。 常に "集計しない" です
  • メジャーのフィルターは無効: SAP BW でのサポートと一致するようにメジャーのフィルターは無効になっています。
  • 複数選択と含める/除外する: ビジュアルでは、複数の列の値である場合、データ ポイントを複数選択する機能は無効です。 たとえば、国または地域別の売上を示す棒グラフがあり、凡例にカテゴリがある場合、(USA, Bikes) と (France, Clothes) のポイントを選択することはできません。 同様に、(USA, Bikes) のポイントを選択し、それをビジュアルから除外することはできません。 いずれも、SAP BW でのサポートと一致するよう制限されています。

SAP BW の機能のサポート

次の表では、完全にはサポートされていない、または Power BI の使用時に動作が異なるすべての SAP BW 機能を示します。

機能 説明
ローカル計算 BEx クエリで定義されたローカル計算によって、BEx アナライザーなどのツールで表示される数値が変更されます。 ただし、SAP からパブリックの MDX インターフェイスを介して返される数値には反映されません。
そのため、Power BI のビジュアルに表示される数値は、SAP ツールの対応するビジュアルのものとは必ずしも一致しません。
たとえば、集計を "累積する" に設定した BEx クエリからクエリ キューブに接続する場合、または合計を実行する場合、Power BI はその設定を無視して、底の値を返します。 もちろんアナリストは、Power BI で、ローカルで実行中の合計の計算を適用できますが、このアクションが実行されない場合、数値がどのように解釈されるかについて注意する必要があります。
集計 場合によっては (特に複数の通貨を扱う場合)、SAP パブリック インターフェイスから返される集計数値が SAP ツールで表示される結果と異なることがあります。
そのため、Power BI のビジュアルに表示される数値は、SAP ツールの対応するビジュアルのものとは必ずしも一致しません。
たとえば、BEx アナライザーではさまざまな通貨の合計は "*" と表示されますが、SAP パブリック インターフェイスでは、そのような集計数には意味がないという情報が表示されないまま、合計数が返されます。 したがって、たとえば、$、EUR、AUD を集計した数値は、Power BI によって表示されます。
通貨の書式設定 Power BI では、通貨の書式設定 (たとえば、$2,3004000 AUD など) は反映されません。
測定単位 Power BI では、測定単位 (たとえば、230 KG) は反映されません。
キーとテキスト (短い、中間、長い) CostCenter などの SAP BW の特性の場合、フィールド リストには Cost Center という 1 つの列が表示されます。 その列を使用すると、既定のテキストが表示されます。 非表示のフィールドを表示すると、SAP BW によって割り当てられた一意の名前を返す一意の名前列を確認することもできます。これは、一意性の基準です。
キーとその他のテキスト フィールドは使用できません。
指標の複数の階層 SAP では、指標には複数の階層を持たせることが可能です。 そのようにすると、BEx アナライザーなどのツールでは、指標がクエリに含まれると、ユーザーが使用する階層を選択できるようになります。
Power BI では、このさまざまな階層は、同じディメンションの別の階層として、フィールド リストに表示されます。 ただし、同じディメンションの 2 つの異なる階層のレベルを複数選択すると、SAP によって空のデータが返されます。
不規則な階層の処理方法 Screenshot of ragged content, showing the treatment of ragged hierarchies.
スケール係数/符号の反転 SAP では、主要データにスケーリング ファクター (1000 など) を書式設定オプションとして定義することができます。つまり、すべての表示がその係数でスケーリングされます。
同様に、符号を逆にするプロパティ セットを持たせることもできます。 ビジュアルで、または計算の一部として Power BI でこのような主要データを使用すると、スケーリングされていない数値が使用されます。 符号は反転されません。 基になるスケール係数は使用されません。 Power BI ビジュアルでは、軸 (K、M、B) に表示されるスケール ユニットは、ビジュアルの書式設定の一部として制御することができます。
レベルが動的に表示/非表示となる階層 SAP BW に初めて接続する場合、階層のレベルに関する情報が取得され、その結果、フィールド リストにフィールドのセットが表示されます。 この情報はキャッシュされ、レベルのセットが変更された場合、フィールドのセットは、Refresh が呼び出されるまで変更されません。
この状況は、Power BI Desktop でのみ可能です。 レベルに変更を反映するこのような更新は、発行後に Power BI サービスで呼び出すことはできません。
既定のフィルター BEx クエリには、既定のフィルターを含めることができます。これは、SAP BEx アナライザーによって自動的に適用されます。 これらのフィルターは公開されていないため、Power BI で同等に使用しても、既定では同じフィルターは適用されません。
非表示の主要指標 BEx クエリでは主要データを表示するかどうかを制御でき、非表示のそれらの主要データは SAP BEx アナライザーでは表示されません。 この事実はパブリック API には反映されないため、このような非表示の主要データは引き続きフィールド リストに表示されます。 ただし、その後 Power BI で非表示にできます。
数値の書式設定 数値の書式設定 (小数点以下の桁数、小数点など) は、Power BI に自動的に反映されません。 ただし、Power BI 内でそのような書式設定を制御することはできます。
階層のバージョン管理 SAP BW では、たとえば、コスト センターの 2007 年と 2008 年の階層など、さまざまなバージョンの階層を維持できます。 バージョンに関する情報はパブリック API によって公開されないため、Power BI では最新バージョンのみを使用できます。
時間依存の階層 Power BI を使用する場合、時間依存の階層は現在の日付で評価されます。
通貨の換算 SAP BW では、キューブで保持されている率に基づく、通貨換算がサポートされています。 このような機能はパブリック API によって公開されていないため、Power BI では使用できません。
[並べ替え順序] 特性の並べ替え順 ("テキスト別"、"キー別" など) は、SAP で定義できます。 この並べ替え順は、Power BI に反映されません。 たとえば、月は "April"、"Aug" の順序で表示されます。
この並べ替え順を Power BI で変更することはできません。
技術名 [データの取得] には、指標/メジャー名 (説明)、および技術名の両方があります。 フィールド リストには、特性およびメジャー名 (説明) のみが含まれます。
属性 Power BI で特性の属性にアクセスすることはできません。
エンドユーザーの言語設定 SAP BW への接続に使用されるロケールは、接続の詳細の一部として設定され、レポートの最終コンシューマーのロケールは反映されません。
テキスト変数 SAP BW では、フィールド名に変数のプレースホルダー ($YEAR$ Actuals など) を含めることができます。これは、その後、選択した値に置き換えられます。 たとえば、変数に 2016 年を選択した場合、BEx ツールでは、フィールドに 2016 Actuals と表示されます。
Power BI の列名は変数の値に応じて変更されないため、$YEAR$ Actuals と表示されます。 ただし、Power BI で列名を変更することはできます。
Customer exit 変数 Customer Exit 変数はパブリック API によって公開されないため、Power BI ではサポートされていません。
特性構造 基になる SAP BW ソースに特性構造があると、Power BI で公開されるメジャーが急増します。 たとえば、2 つのメジャー (SalesCosts) と、Budget と Actual を含む 1 つの特性構造がある場合、4 つのメジャー (Sales.BudgetSales.ActualCosts.BudgetCosts.Actual) が公開されます。

DirectQuery の詳細については、次のリソースを参照してください。