Share via


実装詳細

この記事は、Power Query SAP Business Warehouse コネクタの Implementation 2 で利用できる変換情報および特定の機能について説明します。

重要

SAP Business Warehouse コネクターのバージョン 1.0 は非推奨になりました。 新しい接続では、SAP Business Warehouse コネクターの 実装 2.0 が使用されます。 近い将来、バージョン 1.0 のサポートはすべて、コネクタから削除されます。 この記事の情報を使用して、既存バージョン 1.0 レポートを更新し、このコネクターの実装 2.0 を使用できるようにします。

実装 2.0 の新しいオプション

実装 2.0 では、次のオプションがサポートされています。

  • ExecutionMode は、サーバーでクエリを実行するために使用する MDX インターフェイスを指定します。 次のオプションが有効です:

    • SapBusinessWarehouseExecutionMode.BasXml

    • SapBusinessWarehouseExecutionMode.BasXmlGzip

    • SapBusinessWarehouseExecutionMode.DataStream

      既定値は SapBusinessWarehouseExecutionMode.BasXmlGzip です。

      SapBusinessWarehouseExecutionMode.BasXmlGzip を使用すると、大規模なデータ セットの待機時間が長い場合に、パフォーマンスが向上する場合があります。

  • BatchSize は、MDX ステートメントの実行時に一度に取得する行の最大数を指定します。 数値が小さいと、大規模なデータ セットを取得する際のサーバーへの呼び出しが多くなります。 行数が多いとパフォーマンスが向上する可能性がありますが、SAP BW サーバーでメモリの問題が発生する場合があります。 既定値は 50000 行です。

  • EnableStructures は、 特性構造が認識されるかどうかを示します。 このオプションの既定値は false です。 選択できるオブジェクトの一覧に影響します。 ネイティブ クエリ モードではサポートされていません。

この実装では、ScaleMeasures オプションは非推奨になりました。 この動作は、ScaleMeasures を False に設定する動作と同じになり、常にスケーリングされていない値を表示します。

実装 2.0 の追加強化

次の一覧では、新しい実装に伴う追加強化の一部について説明します。

  • パフォーマンスが向上しました。
  • 数百万データ行を取得し、バッチ サイズ パラメーターによって微調整する機能。
  • 実行モードを切り替える機能。
  • 圧縮モードのサポート。 これは、待ち時間が長い接続や大規模なデータ セットに役立ちます。
  • Date 変数の検出が向上しました。
  • Date (ABAP DATS 型) と Time (ABAP TIMS 型) のディメンションを、テキスト値ではなく、それぞれ日付と時刻として公開。 詳細については、「SAP BW の型指定された日付のサポート」を参照してください
  • 例外処理の向上。 BAPI の呼び出しで発生したエラーが表示されるようになりました。
  • BasXml モードと BasXmlGzip モードでの列フォールディング。 たとえば、生成された MDX クエリは 40 列を取得するが、現在の選択肢には、10 列しか必要ない場合、この要求は、サーバーに渡され、より少ないデータ セットが取得されます。

実装 2.0 を使用するように既存のレポートを変更する

インポート モードのみで、実装 2.0 を使用するように既存のレポートを変更できます。 次のステップを実行します。

  1. 既存のレポートを開き、リボンで [クエリを編集] を選択したら、更新する SAP Business Warehouse クエリを選択します。

  2. クエリを右クリックし、 [詳細エディター] を選びます。

  3. [詳細エディター] で、SapBusinessWarehouse.Cubes 呼び出しを次のように変更します。

    次の例のように、オプション レコードがクエリに既に含まれるかどうかを確認します。

    オプション レコードを含むプレーンテキスト クエリを示すスクリーンショット。

    その場合は、次に示すように、Implementation 2.0 オプションを追加し、ScaleMeasures オプションが存在する場合は削除します。

    Implementation = 2.0 の値が追加されたプレーンテキスト クエリを示すスクリーンショット。

    クエリにオプション レコードが含まれていない場合は、追加します。 次のオプションの場合:

    オプション レコードが追加されたプレーンテキスト クエリを示すスクリーンショット。

    次に変更します:

    Implementation = 2.0 の値が追加された新しいオプションのプレーンテキスト クエリを示すスクリーンショット。

SAP BW コネクタの Implementation 2.0 がバージョン 1 と互換性を持つように、あらゆる努力を払っています。 ただし、使用されている SAP BW MDX 実行モードが異なるため、いくつかの違いがある場合があります。 何らかの不一致を解決するには、実行モードを切り替えてみてください。

SAP BW の型指定された日付のサポート

SAP BW コネクタの Implementation 2.0 には、型指定された日付と時刻のサポートが含まれています。 ABAP の DATS または TIMS 型のディメンションを持つレポートをクエリする場合、テキストではなく、日付として出力できるようになりました。

この機能を使用する場合の制限事項は次のとおりです。

  • SAP BW コネクタの Implementation 2.0 でのみ使用できます。
  • インポート モードでのみ使用できます。
  • SAP BW サーバーへの接続に使用するアカウントには、BAPI_IOBJ_GETDETAIL を呼び出すのに十分なアクセス許可が必要です。
let
   Source = SapBusinessWarehouse.Cubes("sapbwtestserver", "00", "837", [ExecutionMode=SapBusinessWarehouseExecutionMode.BasXmlGzip, Implementation="2.0"]),
   #"$INFOCUBE" = Source{[Name="$INFOCUBE"]}[Data],
   #"$0D_DECU" = #"$INFOCUBE"{[Id="$0D_DECU"]}[Data],
   #"Added Items" = Cube.Transform(#"$0D_DECU",
   {
      {Cube.AddAndExpandDimensionColumn, "[0CALDAY]", {"[0CALDAY].[LEVEL01]"}, {"Calendar day.Calendar day Level 01"}},
      {Table.AddColumn, "Calendar day.Calendar day Level 01.Key", each Cube.AttributeMemberProperty([Calendar day.Calendar day Level 01], "[20CALDAY]")},
      {Cube.AddMeasureColumn, "Billed Quantity", "[Measures].[0D_INV_QTY]"}
   }) 
in
     #"Added Items"

型指定された日付にアクセスするには、キーを追加する必要があります。 たとえば、[0CALDAY] というディメンション属性がある場合、キー [20CALDAY] を追加して、型指定された値を取得する必要があります。

上の例では、次の意味があります。

  • Calendar day.Calendar day Level 01 [0CALDAY] はテキスト (キャプション) になります (ディメンションが追加されるときに既定で追加されます)。
  • Calendar day.Calendar day Level 01.Key [20CALDAY] は日付になります (手動で選択する必要があります)。

インポート モードでキーを手動で追加するには、[プロパティ] を展開し、キーを選択します。

Power Query ナビゲーターで [キー] プロパティを選択する。

キー列は日付型になり、フィルター処理に使用できます。 この列をフィルター処理すると、サーバーに折りたたまれます。

SAP BW の機能のサポート

次の表に、完全にはサポートされていない、または Power Query SAP BW コネクタを使用した場合に動作が異なる SAP BW の機能をすべて示します。

機能 説明
ローカル計算 BEX クエリで定義されたローカル計算では、BEx アナライザなどのツールで表示される数値が変更されます。 ただし、SAP からパブリックの MDX インターフェイスを介して返される数値には反映されません。

そのため、Power Query に表示される数値が、SAP ツールの対応するビジュアルのものとは必ずしも一致しません。

たとえば、集計が累積される (集計の実行などの) クエリ キューブに BEx クエリから接続する場合、Power Query ではこの設定は無視され、基本の数値が返されます。 この場合、アナリストは Power BI などでローカルで実行中の合計の計算を適用できますが、これが行われない場合に数値がどのように解釈されるか、注意する必要があります。
集計 場合によっては (特に複数の通貨を扱う場合)、SAP パブリック インターフェイスから返される集計数値が SAP ツールで表示されるものと異なることがあります。

そのため、Power Query に表示される数値が、SAP ツールの対応するビジュアルのものとは必ずしも一致しません。

たとえば、異なる通貨の合計が、BEx アナライザでは "*" と表示されますが、SAP パブリック インターフェイスからは合計が返され、そのような集計数値は無意味であるという情報は付きません。 そのため、数値 (たとえば、$、EUR、AUD の集計) が Power Query に表示されることになります。
通貨のフォーマット 通貨の書式設定 (たとえば、$2,300 や 4000 AUD) は Power Query では一切反映されません。
測定単位 測定単位 (たとえば、230 KG) は Power Query では反映されません。
キーとテキスト (短い、中間、長い) CostCenter など SAP BW の指標には、ナビゲーターでコスト センター レベル 01 という列が 1 つ表示されます。 この項目を選択すると、フィールド リストにコスト センターの既定のテキストが含まれます。 また、キー値 (短、中、長の名前の値) は、指標の [プロパティ] ノードで選択できます (SAP BW で保持されている場合)。

これは、インポート接続モードにのみ適用されます。 DirectQuery モードの場合、既定のテキストだけがデータ セットに含まれます。
属性 指標の属性は、指標の [プロパティ] で選択できるようになります。 これは、接続モードのインポートにのみ適用されます。 DirectQuery モードの場合、属性は使用できません。
指標の複数の階層 SAP では、指標には複数の階層を持たせることが可能です。 そのようにすると、BEx アナライザーなどのツールでは、指標がクエリに含まれると、ユーザーが使用する階層を選択できるようになります。

Power BI では、このさまざまな階層は、同じディメンションの別の階層として、フィールド リストに表示されます。 ただし、同じディメンションの 2 つの異なる階層から複数のレベルを選択すると、SAP から空のデータが返されます。
不規則な階層の処理方法 SAP BW は、レベルが欠けることがある不規則階層をサポートします。例:

   大陸
      米国
         カナダ
         米国
   指定なし
      オーストラリア

Power BI では、欠落しているレベルに (空白) と表示されます。

   大陸
      米国
         カナダ
         米国
   指定なし
      (空白)
         オーストラリア
スケール係数/符号の反転 SAP では、主要指標に、書式設定オプションで定義するスケール係数 (1000 など) を持つことができます。これは、すべての表示がその係数を使用してスケールされることを意味します。

同様に、符号を逆にするプロパティ セットを持たせることもできます。 Power BI で (ビジュアルで、または計算の一部として) このような主要指標を使用すると、スケーリングされない数値が使用される (符号は反転されない) 結果となります。 基になるスケール係数は使用されません。 Power BI ビジュアルでは、軸 (K、M、B) に表示されるスケール ユニットは、ビジュアルの書式設定の一部として制御することができます。
レベルが動的に表示/非表示となる階層 最初に SAP BW に接続すると、階層のレベルに関する情報が取得され、フィールド リストに一連のフィールドが作成されます。 これはキャッシュされ、レベルのセットが変更された場合、フィールドのセットは更新が呼び出されるまで変更されません。

これは、Power BI Desktop でのみ可能です。 レベルに変更を反映するこのような更新は、発行後は、Power BI サービスで呼び出すことができません。
既定のフィルター BEX クエリには、SAP Bex アナライザが自動的に適用するデフォルト フィルタを含めることができます。 これらは公開されないため、Power Query での同等の使用方法では既定で同じフィルターが適用されません。
非表示の主要指標 BEx クエリでは主要指標を表示するかどうかを制御でき、非表示のものは SAP BEx アナライザでは表示されません。 これはパブリック API を使用した場合は反映されないため、このような非表示の主要指標はフィールド リストに引き続き表示されます。 ただし、その後に Power Query 内で非表示にすることはできます。
数値のフォーマット Power Query には、数値の書式設定 (小数点以下の桁数、小数点など) は自動では一切反映されません。 ただし、その後に Power Query 内でこの書式を制御することはできます。
階層のバージョン管理 SAP BW では、たとえば、コスト センターの 2007 年と 2008 年の階層など、さまざまなバージョンの階層を維持できます。 Power Query では、パブリック API でバージョン情報が公開されないため、最新のバージョンのみ使用できます。
時間依存の階層 Power Query を使用する場合、時間依存の階層は現在の日付で評価されます。
通貨の換算 SAP BW では、キューブで保持されている率に基づく、通貨換算がサポートされています。 このような機能はパブリック API で公開されないため、Power Query では使用できません。
並べ替え順序 特性のソート順 (テキスト別またはキー別) は、SAP で定義できます。 この並べ替え順序は Power Query には反映されません。 たとえば、月は "April"、"Aug" の順序で表示されます。

Power Query でこの並べ替え順序を変更することはできません。
技術名 ナビゲーターでは、[表示オプション] セレクターを使用して、指標/メジャー名 (説明) と技術名の両方を表示できます。 フィールド リストには、指標/メジャー名 (説明) が含まれます。
エンドユーザーの言語設定 SAP BW への接続に使用されるロケールは、接続の詳細の一部として設定され、レポートの最終コンシューマーのロケールは反映されません。
テキスト変数 SAP BW では、フィールド名に変数のプレースホルダー ("$YEAR$ Actuals" など) を含めることができ、これは、選択した値に置き換えられます。 たとえば、変数に 2016 年を選択した場合、BEx ツールでは、フィールドに「2016 Actuals」と表示されます。

Power Query の列名は、変数の値に応じて変化しないため、"$YEAR$ Actuals" と表示されます。 ただし、その後に Power Query で列名を変更することはできます。
Customer Exit 変数 Customer Exit 変数はパブリック API で公開されないため、Power Query ではサポートされていません。

パフォーマンスに関する考慮事項

次の表に、SAP BW からのデータの読み込みと更新のパフォーマンスを向上させるための推奨事項の一覧を示します。

推奨事項 説明
指標とプロパティ (属性) の選択を制限する SAP BW から Power Query にデータを読み込むのにかかる時間は、データ セットのサイズ、つまり、フラット化された結果セットの列と行の数に応じて長くなります。 列の数を減らすには、レポートまたはダッシュボードに最終的に表示する指標とプロパティのみをナビゲーターで選択します。
パラメーターを使用する フィルター/パラメーターを使用すると、結果セットのサイズを小さくすることができ、クエリ ランタイムが大幅に改善します。

パラメーターは、顧客、素材、ドキュメント番号など、メンバー数が多い大きなディメンションで使用する場合に特に役立ちます。
主要指標の数を制限する BEx クエリ/BW モデルから多くの主要指標を選択すると、単位のメタデータの読み込みに時間がかかるため、クエリ実行中のパフォーマンスに大きな影響を与える可能性があります。 Power Query に必要な主要指標のみを含めます。
非常に大きなクエリを複数の小さなクエリに分割する InfoCubes クエリまたは BEx クエリに対する非常に大きなクエリの場合、クエリを分割すると役立つことがあります。 たとえば、1 つのクエリで主要指標を取得しているときに、別のクエリ (または他のいくつかのクエリ) で指標データを取得するということができます。 Power Query では、個々のクエリの結果を結合できます。
仮想プロバイダー (MultiProviders または InfoSets) を避ける VirtualProviders は、永続的なストレージのない構造と似ています。 これらは、多くのシナリオで役に立ちますが、実際のデータの上に追加のレイヤーを表すため、クエリのパフォーマンスが低下する可能性があります。
BEx クエリでのナビゲーション属性の使用を避ける ナビゲーション属性を持つクエリでは、値に到達するための指標として同じオブジェクトを持つクエリと比較して、追加の結合を実行する必要があります。
RSRT を使用して実行速度の遅いクエリを監視およびトラブルシューティングする SAP 管理者は、SAP BW (トランザクション RSRT) のクエリ モニタを使用して SAP BW クエリのパフォーマンスの問題を分析できます。 詳細については、SAP note 1591837 を確認してください。
制限された主要指標と計算された主要指標を避ける どちらもクエリの実行中に計算され、クエリのパフォーマンスが低下する可能性があります。
パフォーマンスを向上させるために増分更新の使用を検討する Power BI では、更新のたびにデータ セット全体が更新されます。 大量のデータを処理している場合、更新のたびにデータ セット全体を更新することが最適ではない可能性があります。 このシナリオでは、増分更新を使用でき、データのサブセットのみを更新します。 詳細については、Power BI での増分更新に関するページを参照してください。

Analysis for Office (AFO) との比較

Analysis for Office (AFO) ツールと Power Query SAP Business Warehouse コネクターには基本的な違いがあるため、データの出力が異なる場合があります。 AFO は MDX を使用しませんが、代わりに、Power Query SAP Business Warehouse コネクターなど、サード パーティでは使用できない SAP が開発した独自のプロトコルを使用します。 SAP は、MDX インターフェイスを使用するコネクターのみを認定します。 AFO は多次元クエリ戦略を使用します。データ間の移動方法は異なりますが、Power Query SAP Business Warehouse コネクターでは、テーブルとして表すことができるようにデータをフラット化する必要があります。 そのため、同じデータであっても、クエリが実行され、表現され、最終的に出力が異なります。

関連項目