使用 BigQuery ML 在 SAP 中获得业务洞见

本文档介绍了一种参考架构,可让您使用本地或任何云版本的 ABAP SDK for Google Cloud,通过 BigQuery ML 在 SAP 环境中构建机器学习解决方案。借助本文档中介绍的参考架构,您可以构建可提取数据驱动型洞见的解决方案,从而加快在 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 价格计算器中预先计算的估算值。

开始使用 BigQuery 扩缩时,您可以通过多种方式来提高查询性能并减少总支出。这些方法包括更改数据的物理存储方式、修改 SQL 查询以及使用槽预留来确保性价比。如需详细了解帮助扩缩和运行数据仓库的方法,请参阅优化查询性能简介

设计替代方案

虽然本文档重点介绍的是本地版本或任何云版本的 ABAP SDK for Google Cloud,但您也可以使用 ABAP SDK for Google Cloud 的 SAP BTP 版本来实现类似的结果。您可以调整所提供的资源,以便在 SAP BTP 环境中构建类似的解决方案。

部署

本部分将介绍如何将数据从来源 SAP 系统加载到 BigQuery,创建适合您的业务要求的机器学习模型,并最终生成可用于在 SAP 中制定业务决策的数据洞见。

准备工作

在根据此参考架构实现解决方案之前,请确保您已完成以下前提条件:

将数据从 SAP 源系统加载到 BigQuery

如需使用 ABAP SDK for Google Cloud 将数据从 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。

或者,如果您想要寻找一个无需编码的 BigQuery 数据提取解决方案,同时处理初始加载和增量 (CDC) 处理,则可以考虑使用 BigQuery Connector for SAPCloud Data FusionSAP Datasphere

创建机器学习模型

BigQuery 提供了一个全面的机器学习模型和 AI 资源列表,可帮助您从企业数据中获取数据洞见。其中一个模型就是 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 机器学习模型,请参阅每个模型的端到端用户体验历程
  • 您可以使用 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 | 技术文档撰写者