運用 BigQuery ML 在 SAP 中取得業務洞察資料

本文說明參考架構,說明如何使用 BigQuery ML 在 SAP 環境中建構機器學習解決方案,方法是使用 Google Cloud 適用的 ABAP SDK 的內部或任何雲端版本。您可以利用本文件說明的參考架構,建構可擷取資料導向洞察資料的解決方案,加快在 SAP 中制定業務決策的流程。

本文件的目標對象包括 ABAP 開發人員、SAP 解決方案架構師和雲端架構師。這份文件假設您熟悉 BigQuery 和 SQL。

架構

下圖顯示機器學習解決方案的參考架構,可根據 SAP ERP 系統的資料提供商業洞察:

適用於 SAP 的商業洞察機器學習解決方案

此機器學習解決方案架構包含下列元件:

元件 子系統 詳細資料
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_PLUSARIMA_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 中的業務決策洞察資料。

事前準備

在根據這個參考架構導入解決方案之前,請確認您已完成下列先決條件:

將 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 SAPCloud Data FusionSAP Datasphere

建立機器學習模型

BigQuery 提供機器學習模型和 AI 資源的完整清單,協助您從企業資料中找出洞察。ARIMA_PLUS 就是其中一種模型,可根據歷來資料預測未來的時間序列值。舉例來說,您可以使用 ARIMA_PLUS 模型,根據歷來資料預測未來的銷售量。如要使用已載入至 BigQuery 的 SAP 資料訓練新模型,請使用 CREATE MODEL 陳述式。視資料大小而定,這項作業可能需要幾分鐘或數小時才能完成。建立模型後,您可以在 BigQuery Studio 中查看模型。

如要建立及訓練模型,請執行 CREATE MODEL 陳述式:

  1. Google Cloud 控制台中,按一下「Compose new query」按鈕。

  2. 在「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 語法

  3. 按一下「執行」。模型會顯示在導覽面板中。

產生及提供洞察資料

您可以使用機器學習模型產生洞察資料。舉例來說,如果您建立了 ARIMA_PLUS 模型,就可以使用該模型產生時間序列值的洞察資料,例如未來銷售預測。

產生深入分析資訊

如要根據訓練完成的模型產生洞察資訊,請執行下列步驟:

  1. Google Cloud 控制台中,按一下「Compose new query」按鈕。

  2. 在「Query editor」(查詢編輯器) 中輸入下列 GoogleSQL 查詢:

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

    更改下列內容:

    • MODEL_NAME:您為產生洞察資料而訓練的模型名稱。
    • HORIZONINT64 值,可指定要預測的時間點數量。
    • CONFIDENCE_LEVELFLOAT64 值,可指定未來值落在預測間隔內的百分比。

    如要進一步瞭解引數,請參閱「ML.FORECAST 函式」。

  3. 按一下「執行」。機器學習模型會輸出未來日期的預測值。

  4. 查詢完成後,按一下「Results」分頁標籤。結果應如下所示:

    使用 BigQuery ML 產生及提供洞察資訊

放送洞察資料

如要使用 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 的問題,請按照下列步驟操作:

貢獻者

作者:Ajith Urimajalu | SAP 應用程式工程師團隊主管

其他協作者: Vikash Kumar | 技術撰稿人