このドキュメントでは、オンプレミス エディションまたはクラウド エディションの ABAP SDK for Google Cloud を使用して、BigQuery ML を使用して SAP 環境に ML ソリューションを構築するためのリファレンス アーキテクチャについて説明します。このドキュメントで説明するリファレンス アーキテクチャを使用すると、データドリブンの分析情報を抽出して SAP 内のビジネス上の意思決定プロセスを加速させるソリューションを構築できます。
このドキュメントは、ABAP デベロッパー、SAP ソリューション アーキテクト、クラウド アーキテクトを対象としています。このドキュメントは、BigQuery と SQL に精通していることを前提としています。
アーキテクチャ
次の図は、SAP ERP システムのデータに基づいてビジネス分析情報を提供する 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 でのビジネス上の意思決定に使用できる分析情報を生成する方法について説明します。
始める前に
このリファレンス アーキテクチャに基づいてソリューションを実装する前に、次の前提条件を満たしていることを確認してください。
Google Cloud のアカウントとプロジェクトがある。
プロジェクトで課金が有効になっている。プロジェクトで課金が有効になっていることを確認する方法については、プロジェクトの課金ステータスを確認するをご覧ください。
ABAP SDK for Google Cloud のオンプレミス版またはクラウド版がインストールされ、構成されている。
Google Cloud APIs にアクセスするための認証が設定されている。認証を設定する方法については、ABAP SDK for Google Cloud のオンプレミス エディションまたはクラウド エディションの認証の概要をご覧ください。
Google Cloud プロジェクトで BigQuery API が有効になっている。
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 SAP、Cloud Data Fusion、SAP Datasphere を検討してください。
ML モデルを作成する
BigQuery には、エンタープライズ データから分析情報を導き出すためのML モデルと AI リソースの包括的なリストが用意されています。そのようなモデルの 1 つが ARIMA_PLUS
です。これは、過去のデータに基づいて将来の時系列値を予測するために使用できます。たとえば、ARIMA_PLUS
モデルを使用して、過去のデータに基づいて将来の販売数を予測できます。BigQuery に読み込んだ SAP データを使用して新しいモデルをトレーニングするには、CREATE MODEL
ステートメントを使用します。データのサイズによっては、実行に数分から数時間かかることがあります。モデルの作成後、BigQuery Studio でモデルを表示できます。
モデルを作成してトレーニングするには、CREATE MODEL
ステートメントを実行します。
Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。
クエリエディタに次の 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
構文をご覧ください。[実行] をクリックします。モデルがナビゲーション パネルに表示されます。
分析情報を生成して提供する
機械学習モデルを使用して分析情報を生成できます。たとえば、ARIMA_PLUS
モデルを作成した場合は、そのモデルを使用して、将来の売上予測などの時系列値に関する分析情報を生成できます。
分析情報を生成
トレーニング済みモデルに基づいて分析情報を生成する手順は次のとおりです。
Google Cloud コンソールで、[クエリを新規作成] ボタンをクリックします。
クエリエディタに次の 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
関数をご覧ください。[実行] をクリックします。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 の問題を解決するには、次の操作を行います。
- ABAP SDK for Google Cloud トラブルシューティング ガイドをご覧ください。
- Cloud フォーラムのコミュニティで ABAP SDK for Google Cloud について質問したり、ディスカッションに参加したりする。
- 入手可能なすべての診断情報を収集し、Cloud カスタマーケアにお問い合わせください。カスタマーケアへのお問い合わせについては、Google Cloud での SAP に関するサポートを利用するをご覧ください。
寄稿者
作成者: Ajith Urimajalu | SAP アプリケーション エンジニア チームリード
その他の寄稿者: Vikash Kumar | テクニカル ライター