BigQuery ML による SAP のビジネス分析情報

このドキュメントでは、オンプレミス エディションまたはクラウド エディションの ABAP SDK for Google Cloud を使用して、BigQuery ML を使用して SAP 環境に ML ソリューションを構築するためのリファレンス アーキテクチャについて説明します。このドキュメントで説明するリファレンス アーキテクチャを使用すると、データドリブンの分析情報を抽出して SAP 内のビジネス上の意思決定プロセスを加速させるソリューションを構築できます。

このドキュメントは、ABAP デベロッパー、SAP ソリューション アーキテクト、クラウド アーキテクトを対象としています。このドキュメントは、BigQuery と SQL に精通していることを前提としています。

アーキテクチャ

次の図は、SAP ERP システムのデータに基づいてビジネス分析情報を提供する ML ソリューションのリファレンス アーキテクチャを示しています。

SAP のビジネス分析情報向けの ML ソリューション

この ML ソリューション アーキテクチャには、次のコンポーネントが含まれています。

コンポーネント サブシステム 詳細
1 データソース SAP S/4HANA などの SAP ERP システム。エンタープライズ データのソースです。
2 データ ウェアハウス BigQuery。ソースシステムの元データと ML 生成の分析情報を保存します。
3 ML: トレーニング ソースデータでトレーニングされ、ビジネス分析情報を生成する ML モデル。
4 ML: 分析情報を提供する ML によって生成されたビジネス分析情報を SAP に返すコンポーネント。

使用するプロダクト

このリファレンス アーキテクチャでは、次の Google Cloud プロダクトを使用します。

  • ABAP SDK for Google Cloud: SAP システムを BigQuery などの Google Cloud サービスに接続する ABAP アプリケーションを開発できます。
  • BigQuery: エンタープライズ データの管理と分析に役立ちます。

ユースケース

BigQuery ML を使用すると、SAP ユーザーは BigQuery に保存されているエンタープライズ データを使用して、意思決定とビジネス成果の向上に役立つ有益な分析情報を得ることができます。このセクションでは、BigQuery ML を使用して ML ソリューションを構築できるユースケースの例を示します。

予測

BigQuery ML の予測では、過去の時系列データを分析して将来の傾向を予測します。たとえば、複数の店舗の過去の販売データを分析して、それらの店舗での将来の販売を予測するようなことが考えられます。予測は、ARIMA_PLUS モデルまたは ARIMA_PLUS_XREG モデルで ML.FORECAST 関数を使用して行います。

異常検出

異常検出は、データ内の異常なパターンを見つけて、潜在的な問題や機会に事前に対応できるようにします。ラベル付きデータを使用すると、このタスクにさまざまな教師あり ML モデルを利用できます。異常検出には、線形回帰とロジスティック回帰ブーストツリーランダム フォレストディープ ニューラル ネットワークワイド&ディープ モデルAutoML モデルを使用できます。

レコメンデーション システム

レコメンデーション システムは、ユーザーが膨大なコレクションの中から関連性の高いコンテンツを見つけられるようにする、ビジネスにとって強力なツールです。これらのシステムは機械学習を使用して、ユーザーが自分で見つけられないアイテムを提案し、検索の制限を克服します。レコメンデーション システムでは主に次の 2 つのアプローチが採用されています。

設計上の考慮事項

このセクションでは、このリファレンス アーキテクチャを使用して、セキュリティ、プライバシー、コンプライアンス、費用、パフォーマンスに関する特定の要件を満たすアーキテクチャを開発するためのガイダンスを示します。

セキュリティ、プライバシー、コンプライアンス

データ ガバナンス ポリシーを実装するには、BigQuery の機能を使用します。データ ガバナンスは、データのライフサイクル全体を通じてデータのセキュリティと品質を管理し、アクセスと正確性がポリシーと規制に準拠するようにします。詳細については、BigQuery のデータ ガバナンスの概要をご覧ください。

費用とパフォーマンス

BigQuery を使用したデータ ウェアハウス ソリューションが使用する Google Cloud リソースの費用を見積もるには、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。

BigQuery でのスケーリングを開始すると、クエリのパフォーマンスを向上させ、合計費用を減らす方法を多数利用できます。これらの方法には、データを物理的に保存する方法の変更、SQL クエリの変更、コスト パフォーマンスを確保するためのスロット予約の使用が含まれます。データ ウェアハウスのスケーリングと実行に役立つ方法の詳細については、クエリ パフォーマンスの最適化の概要をご覧ください。

代替案の設計

このドキュメントでは、ABAP SDK for Google Cloud のオンプレミス エディションまたはクラウド エディションに焦点を当てていますが、ABAP SDK for Google Cloud の SAP BTP エディションを使用して同様の結果を得ることができます。提供されているリソースを適宜変更して、SAP BTP 環境内で同様のソリューションを構築できます。

デプロイ

このセクションでは、ソースの SAP システムから BigQuery にデータを読み込み、ビジネス要件に適した ML モデルを作成し、最後に SAP でのビジネス上の意思決定に使用できる分析情報を生成する方法について説明します。

始める前に

このリファレンス アーキテクチャに基づいてソリューションを実装する前に、次の前提条件を満たしていることを確認してください。

SAP ソースシステムから BigQuery にデータを読み込む

ABAP SDK for Google Cloud を使用して SAP ソースシステムから BigQuery テーブルにデータを読み込むには、/GOOG/CL_BIGQUERY_V2 クラスの INSERT_ALL_TABLEDATA メソッドを使用します。このデータは、ML モデルをトレーニングするための基盤として使用されます。

次のコードサンプルは、SAP ソースシステムから BigQuery テーブルにデータを読み込む方法を示しています。

TRY.
    DATA(lo_client) = NEW /goog/cl_bigquery_v2( iv_key_name = 'CLIENT_KEY' ).

    TYPES:
      BEGIN OF t_timeseries,
        date  TYPE string,   "YYYY-MM-DD
        value TYPE string,   "Numeric value
      END OF t_timeseries.

    DATA: lt_data TYPE STANDARD TABLE OF t_timeseries.
    "Developer TODO - populate lt_data

    DATA: ls_input        TYPE /goog/cl_bigquery_v2=>ty_133.

    LOOP AT lt_data INTO FIELD-SYMBOL(<ls_data>).
      APPEND INITIAL LINE TO ls_input-rows ASSIGNING FIELD-SYMBOL(<ls_row>).
      CREATE DATA <ls_row>-json TYPE t_timeseries.
      FIELD-SYMBOLS: <lfs_json> TYPE t_timeseries.
      ASSIGN <ls_row>-json->* TO <lfs_json> CASTING.
      <lfs_json> = <ls_data>.
    ENDLOOP.

    "Call API method: bigquery.tabledata.insertAll
    CALL METHOD lo_client->insert_all_tabledata
      EXPORTING
        iv_p_dataset_id = 'BIGQUERY_DATASET'
        iv_p_project_id = CONV #( lo_client->gv_project_id )
        iv_p_table_id   = 'BIGQUERY_TABLE'
        is_input        = ls_input
      IMPORTING
        es_output       = DATA(ls_output)
        ev_ret_code     = DATA(lv_ret_code)
        ev_err_text     = DATA(lv_err_text).

    lo_client->close( ).

  CATCH cx_root.
    "handle error
ENDTRY.

次のように置き換えます。

  • CLIENT_KEY: 認証用に構成されたクライアント キー。
  • BIGQUERY_DATASET: ターゲット BigQuery データセットの ID。
  • BIGQUERY_TABLE: ターゲット BigQuery テーブルの ID。

初期読み込みと差分(CDC)処理の両方を処理するノーコードの BigQuery データ取り込みソリューションを探している場合は、BigQuery Connector for SAPCloud Data FusionSAP Datasphere を検討してください。

ML モデルを作成する

BigQuery には、エンタープライズ データから分析情報を導き出すためのML モデルと AI リソースの包括的なリストが用意されています。そのようなモデルの 1 つが ARIMA_PLUS です。これは、過去のデータに基づいて将来の時系列値を予測するために使用できます。たとえば、ARIMA_PLUS モデルを使用して、過去のデータに基づいて将来の販売数を予測できます。BigQuery に読み込んだ SAP データを使用して新しいモデルをトレーニングするには、CREATE MODEL ステートメントを使用します。データのサイズによっては、実行に数分から数時間かかることがあります。モデルの作成後、BigQuery Studio でモデルを表示できます。

モデルを作成してトレーニングするには、CREATE MODEL ステートメントを実行します。

  1. Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。

  2. クエリエディタに次の GoogleSQL クエリを入力します。

       CREATE OR REPLACE MODEL `MODEL_NAME`
           OPTIONS
           (model_type = 'ARIMA_PLUS',
           time_series_timestamp_col = 'TIME_SERIES_TIMESTAMP_COL',
           time_series_data_col = 'TIME_SERIES_DATA_COL',
           auto_arima = TRUE,
           data_frequency = 'AUTO_FREQUENCY',
           decompose_time_series = TRUE
             ) AS
         SELECT
           {timestamp_column_name},
           {timeseries_data_column_name}
         FROM
           `{BigQuery_table}`
    

    次のように置き換えます。

    • MODEL_NAME: 分析情報の生成用にトレーニングしたモデルの名前。
    • TIME_SERIES_TIMESTAMP_COL: モデルのトレーニングに使用される時点を指定する列の名前。
    • TIME_SERIES_DATA_COL: 予測するデータを含む列の名前。

    引数の詳細については、CREATE MODEL 構文をご覧ください。

  3. [実行] をクリックします。モデルがナビゲーション パネルに表示されます。

分析情報を生成して提供する

機械学習モデルを使用して分析情報を生成できます。たとえば、ARIMA_PLUS モデルを作成した場合は、そのモデルを使用して、将来の売上予測などの時系列値に関する分析情報を生成できます。

分析情報を生成

トレーニング済みモデルに基づいて分析情報を生成する手順は次のとおりです。

  1. Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。

  2. クエリエディタに次の GoogleSQL クエリを入力します。

    SELECT
    *
    FROM
    ML.FORECAST(MODEL `MODEL_NAME`,
    STRUCT(HORIZON AS horizon, CONFIDENCE_LEVEL AS confidence_level));
    

    次のように置き換えます。

    • MODEL_NAME: 分析情報の生成用にトレーニングしたモデルの名前。
    • HORIZON: 予測する時点の数を指定する INT64 値。
    • CONFIDENCE_LEVEL: 予測間隔に含まれる将来の値の割合を指定する FLOAT64 値。

    引数の詳細については、ML.FORECAST 関数をご覧ください。

  3. [実行] をクリックします。ML モデルは、将来の日付の予測値を出力します。

  4. クエリが完了したら、[結果] タブをクリックします。結果は次のようになります。

    BigQuery ML を使用して分析情報を生成して提供する

分析情報を提供する

ABAP SDK for Google Cloud を使用して、SAP アプリケーションからデータドリブンのビジネス上の意思決定のために生成された予測を提供する場合は、/GOOG/CL_BIGQUERY_V2 クラスの QUERY_JOBS メソッドを使用します。

このセクションで説明するサンプル ソリューションを最小限の労力でデプロイできるように、GitHub にコードサンプルが用意されています。このコードサンプルは、ARIMA_PLUS モデルとオンプレミスまたはクラウド エディションの ABAP SDK for Google Cloud を使用して、将来の時系列値の予測を生成するエンドツーエンドの例を示しています。

次のステップ

  • BigQuery ML の概要で BigQuery ML の概要を確認する。
  • ビジネスプロセスと要件に応じて使用可能な BigQuery ML モデルを評価するには、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。
  • アドホック クエリを実行して BigQuery ML 予測を取得する代わりに、Cloud Run を使用して、BigQuery 内の新規または変更されたデータに関する分析情報を自動的に生成できます。生成された分析情報を一時 BigQuery テーブルに書き込んで、SAP アプリケーションで取得できます。
  • SAP データからより多くの価値と分析情報を抽出するには、Google Cloud の Cortex Data Foundation を使用します。これは、スケーラブルで拡張可能なデータ基盤と、SAP に関連する一般的なビジネス ユースケース用の事前構築されたデータモデルとパイプラインを提供します。
  • Google Cloud コンソールの使用で、Google Cloud コンソールの詳細を確認する。
  • ABAP SDK for Google Cloud の詳細については、ABAP SDK for Google Cloud の概要をご覧ください。
  • ABAP SDK for Google Cloud の問題を解決するには、次の操作を行います。

寄稿者

作成者: Ajith Urimajalu | SAP アプリケーション エンジニア チームリード

その他の寄稿者: Vikash Kumar | テクニカル ライター