本文档介绍了一种参考架构,可让您使用本地或任何云版本的 ABAP SDK for Google Cloud,通过 BigQuery ML 在 SAP 环境中构建机器学习解决方案。借助本文档中介绍的参考架构,您可以构建可提取数据驱动型洞见的解决方案,以加快在 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 价格计算器中预先计算的估算值。
开始使用 BigQuery 扩缩时,您可以通过多种方式来提高查询性能并减少总支出。这些方法包括更改数据的物理存储方式、修改 SQL 查询以及使用槽预留来确保性价比。如需详细了解帮助扩缩和运行数据仓库的方法,请参阅优化查询性能简介。
设计替代方案
虽然本文档重点介绍的是本地版本或任何云版本的 ABAP SDK for Google Cloud,但您也可以使用 SAP BTP 版本的 ABAP SDK for Google Cloud 实现类似的结果。您可以调整所提供的资源,以便在 SAP BTP 环境中构建类似的解决方案。
部署
本部分将介绍如何将数据从 SAP 源系统加载到 BigQuery,创建适合您的业务需求的机器学习模型,并最终生成可用于在 SAP 中制定业务决策的数据洞见。
准备工作
在根据此参考架构实现解决方案之前,请确保您已完成以下前提条件:
您拥有一个 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
方法。这些数据是训练机器学习模型的基础。
以下代码示例说明了如何将数据从 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 SAP、Cloud Data Fusion 或 SAP Datasphere。
创建机器学习模型
BigQuery 提供了一个包含机器学习模型和 AI 资源的完整列表,可帮助您从企业数据中获取数据洞见。其中一个模型就是 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 机器学习模型,请参阅每个模型的端到端用户体验历程。
- 您可以使用 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 SDK for Google Cloud。
- 收集所有可用的诊断信息,并与 Cloud Customer Care 联系。如需了解如何与 Customer Care 团队联系,请参阅获取 Google Cloud 上的 SAP 支持。
贡献者
作者: Ajith Urimajalu | SAP 应用工程师团队主管
其他贡献者: Vikash Kumar | 技术文档撰写者