本文档介绍了使用本地或任何云版本的 ABAP SDK for Google Cloud 在 SAP 环境中使用 BigQuery ML 构建机器学习解决方案的参考架构。借助本文档中所述的参考架构,您可以构建提取数据驱动型洞见的解决方案,以便在 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 系统连接到 BigQuery 等 Google Cloud 服务。
- BigQuery:可帮助您管理和分析企业数据。
使用场景
BigQuery ML 让 SAP 用户能够利用存储在 BigQuery 中的企业数据,得出有价值的洞见,从而改善决策和业务成果。本部分提供了一些使用 BigQuery ML 构建机器学习解决方案的用例示例。
预测
BigQuery ML 中的预测涉及分析历史时序数据以预测未来趋势。例如,您可分析多个位于不同位置的店面的历史销售数据,以预测这些店面的未来销售情况。您可以将 ML.FORECAST
函数与 ARIMA_PLUS
或 ARIMA_PLUS_XREG
模型搭配使用来执行预测。
异常值检测
异常检测可发现数据中的异常模式,从而主动应对潜在问题或机会。借助标记数据,您可以利用各种监督式机器学习模型来完成此任务。您可以使用线性回归和逻辑回归、提升树、随机森林、深度神经网络、Wide & Deep 模型或 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 API 的身份验证。如需了解如何设置身份验证,请参阅本地版本或任何云版本的 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
函数。点击运行。机器学习模型会提供未来日期的预测值输出。
查询完成后,点击结果标签页。结果应如下所示:
提供数据洞见
如需通过 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 团队联系,请参阅获取 SAP on Google Cloud支持。
贡献者
作者:Ajith Urimajalu | SAP 应用工程师团队负责人
其他贡献者:Vikash Kumar | 技术文档工程师