本文說明參考架構,說明如何使用 BigQuery ML 在 SAP 環境中建構機器學習解決方案,方法是使用 Google Cloud 適用的 ABAP SDK 的內部或任何雲端版本。您可以利用本文件說明的參考架構,建構可擷取資料導向洞察資料的解決方案,加快在 SAP 中制定業務決策的流程。
本文件的目標對象包括 ABAP 開發人員、SAP 解決方案架構師和雲端架構師。這份文件假設您熟悉 BigQuery 和 SQL。
架構
下圖顯示機器學習解決方案的參考架構,可根據 SAP ERP 系統的資料提供商業洞察:
此機器學習解決方案架構包含下列元件:
元件 | 子系統 | 詳細資料 |
---|---|---|
1 | 資料來源 | SAP ERP 系統 (例如 SAP S/4HANA),這是企業資料的來源。 |
2 | 資料倉儲 | BigQuery:儲存來源系統的原始資料和機器學習產生的洞察資料。 |
3 | 機器學習:訓練 | 機器學習模型,可根據來源資料產生業務洞察資料。 |
4 | 機器學習:提供洞察資料 | 將機器學習產生的商業洞察資料傳回至 SAP 供使用者取用的元件。 |
使用的產品
此參考架構使用以下 Google Cloud 產品:
- ABAP SDK for Google Cloud:協助您開發 ABAP 應用程式,將 SAP 系統連結至 Google Cloud 服務 (例如 BigQuery)。
- BigQuery:協助管理及分析企業資料。
用途
BigQuery ML 可讓 SAP 使用者運用儲存在 BigQuery 中的企業資料,擷取有價值的洞察資訊,進而改善決策和業務成果。本節提供可使用 BigQuery ML 建構機器學習解決方案的用途範例。
預測
BigQuery ML 的預測功能會分析過去的時間序列資料,以預測未來趨勢。舉例來說,您可以分析多個門市的銷售資料,以便預測這些門市未來的銷售業績。您可以使用 ML.FORECAST
函式搭配 ARIMA_PLUS
或 ARIMA_PLUS_XREG
模型來執行預測。
異常偵測
異常偵測功能可找出資料中的異常模式,主動因應潛在問題或商機。有了標記資料,您就可以使用各種監督式機器學習模型來執行這項工作。您可以使用線性和邏輯迴歸、增強型樹狀模型、隨機森林、深層類神經網路、廣度和深度模型或AutoML 模型來偵測異常。
推薦系統
推薦系統是企業的強大工具,可協助使用者在龐大的內容庫中找到相關內容。這些系統會運用機器學習技術,推薦使用者可能不會自行找到的項目,克服搜尋功能的限制。推薦系統主要採用兩種方法:
設計須知
本節提供指引,協助您使用這個參考架構開發架構,以滿足您在安全性、隱私權、法規遵循、成本和效能方面的特定需求。
安全性、隱私權和法規遵循
如要實施資料治理政策,您可以使用 BigQuery 功能。資料治理可在資料的整個生命週期中管理資料安全性和品質,確保存取權和準確度符合政策和法規。詳情請參閱「BigQuery 資料治理簡介」。
費用和效能
如要預估「採用 BigQuery 的資料倉儲」解決方案所使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中的預先計算預估值。
開始使用 BigQuery 進行擴充時,您可以透過多種方式改善查詢效能,並降低總支出。這些方法包括變更資料的實際儲存方式、修改 SQL 查詢,以及使用空缺預留功能來確保成本效益。如要進一步瞭解如何擴充資料倉儲並執行相關作業,請參閱「最佳化查詢效能簡介」。
設計替代方案
雖然本文件著重於 ABAP SDK for Google Cloud 的內部部署或任何雲端版本,但您也可以使用 ABAP SDK for Google Cloud 的 SAP BTP 版本,獲得類似的結果。您可以調整提供的資源,在 SAP BTP 環境中建立類似的解決方案。
部署作業
本節將說明如何將來源 SAP 系統中的資料載入至 BigQuery,建立符合業務需求的機器學習模型,最後產生可用於 SAP 中的業務決策洞察資料。
事前準備
在根據這個參考架構導入解決方案之前,請確認您已完成下列先決條件:
您擁有 Google Cloud 帳戶和專案。
專案已啟用計費功能。如要瞭解如何確認專案已啟用計費功能,請參閱「驗證專案的帳單狀態」。
已設定驗證方法,以便存取 Google Cloud API。如要瞭解如何設定驗證機制,請參閱「ABAP SDK for Google Cloud 內部部署版或任何雲端版的驗證機制總覽」。
Google Cloud 專案已啟用 BigQuery API。
將 SAP 來源系統的資料載入 BigQuery
如要使用 Google Cloud 的 ABAP SDK 將資料從 SAP 來源系統載入 BigQuery 資料表,請使用 /GOOG/CL_BIGQUERY_V2
類別的 INSERT_ALL_TABLEDATA
方法。這項資料可做為訓練機器學習模型的基礎。
以下程式碼範例說明如何將 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。
建立機器學習模型
BigQuery 提供機器學習模型和 AI 資源的完整清單,協助您從企業資料中找出洞察。ARIMA_PLUS
就是其中一種模型,可根據歷來資料預測未來的時間序列值。舉例來說,您可以使用 ARIMA_PLUS
模型,根據歷來資料預測未來的銷售量。如要使用已載入至 BigQuery 的 SAP 資料訓練新模型,請使用 CREATE MODEL
陳述式。視資料大小而定,這項作業可能需要幾分鐘或數小時才能完成。建立模型後,您可以在 BigQuery Studio 中查看模型。
如要建立及訓練模型,請執行 CREATE MODEL
陳述式:
在 Google Cloud 控制台中,按一下「Compose new query」按鈕。
在「Query editor」(查詢編輯器) 中輸入下列 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 控制台中,按一下「Compose new query」按鈕。
在「Query editor」(查詢編輯器) 中輸入下列 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
函式」。按一下「執行」。機器學習模型會輸出未來日期的預測值。
查詢完成後,按一下「Results」分頁標籤。結果應如下所示:
放送洞察資料
如要使用 Google Cloud 的 ABAP SDK 為 SAP 應用程式提供資料導向的業務決策產生預測結果,請使用 /GOOG/CL_BIGQUERY_V2
類別的 QUERY_JOBS
方法。
為了讓您以最少的力氣部署本節所述的範例解決方案,我們在 GitHub 中提供程式碼範例。這個程式碼範例會顯示端對端範例,說明如何使用 ARIMA_PLUS
模型和 Google Cloud 的 ABAP SDK 內部或任何雲端版本,產生未來時序資料值的預測資料。
後續步驟
- 如需 BigQuery ML 的總覽,請參閱 BigQuery ML 簡介。
- 如要評估可用於業務流程和需求的 BigQuery 機器學習模型,請參閱「每個模型的端對端使用者歷程」。
- 您可以使用 Cloud Run 自動產生 BigQuery 中新資料或變更資料的洞察資料,而非執行臨時查詢來取得 BigQuery ML 預測結果。產生的洞察資料可寫入臨時 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 適用的 Google Cloud SDK。
- 收集所有可用的診斷資訊,然後聯絡 Cloud 客戶服務團隊。如要瞭解如何與 Customer Care 聯絡,請參閱「取得 SAP 支援 Google Cloud」一文。
貢獻者
作者:Ajith Urimajalu | SAP 應用程式工程師團隊主管
其他協作者: Vikash Kumar | 技術撰稿人