実装の詳細

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

Implementation 2.0 の新しいオプション

Implementation 2.0 は以下のオプションをサポートします。

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

    • SapBusinessWarehouseExecutionMode.BasXml

    • SapBusinessWarehouseExecutionMode.BasXmlGzip

    • SapBusinessWarehouseExecutionMode.DataStream

      既定値は SapBusinessWarehouseExecutionMode.BasXmlGzip です。

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

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

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

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

Implementation 2.0 でのその他の機能強化

次の一覧に、新しい実装でその他に強化された機能の一部を示します。

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

Implementation 2.0 を使用するための既存レポートの変更

Implementation 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 の機能をすべて示します。

機能 Description
ローカル計算 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 での増分更新に関するページを参照してください。

関連項目