管理 BigQuery Toolkit for SAP 操作

本文档介绍了 SAP 管理员、SAP 开发者或其他人员如何为 BigQuery Toolkit for SAP 执行运维任务。

动态数据块大小

如果由于数据块的字节大小超过 BigQuery 接受的 HTTP 请求的最大字节大小而遇到错误,您需要通过减小数据块大小来手动减小字节大小。动态数据块大小功能使您能够在数据块的字节大小超过 BigQuery 接受的 HTTP 请求的最大字节大小时自动减小数据块大小并重试复制到 BigQuery。动态数据块大小有助于防止因请求超过字节大小而导致的大多数复制失败。仅当数据块大小达到 1 时,您可能会收到错误,但字节大小仍然超过每个 HTTP 请求中的字节数的 BigQuery 限制。

您可以使用事务 /GOOG/BQTR_SETTINGS 在表的数据传输配置中启用动态数据块大小。动态数据块大小是可选设置。如需了解如何启用动态数据块大小,请参阅指定表创建和其他常规属性

当 BigQuery Toolkit for SAP 减小数据块大小时,系统会在参数 et_return 中向调用 ABAP 应用返回以下信息消息:

Dynamic chunking triggered. Chunk size reduced from INITIAL_CHUNK_SIZE_VALUE to FINAL_REDUCED_CHUNK_SIZE_VALUE

将批量传输设置传送到生产环境

如需将 BigQuery Toolkit for SAP 批量传输设置传送到生产环境,请先从开发系统导出设置,然后将其导入生产系统。

您也可以将批量传输设置的两个单独部分导入到生产环境中:

  • /GOOG/CLIENT_KEY 表中的客户端密钥设置,可通过 SM30 事务访问。
  • BigQuery Toolkit for SAP 批量传输设置,可通过 /GOOG/BQTR_SETTINGS 事务访问。

从开发系统导出批量传输设置

在 SAP 开发系统中,导出批量传输设置的每个部分:

  1. 导出 BigQuery Toolkit for SAP 批量传输设置:

    1. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

      或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

    2. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery 数据传输:设置维护

    3. 设置表字段中,选择批量传输

    4. 选择要传送到生产环境的批量传输记录。

    5. 点击传送批量传输

    6. 提示输入工作台请求中,输入传送请求编号并点击继续图标。对于每个选定的批量传输记录,以下自定义配置表中的设置都会包含在传送中:

      • /GOOG/BQTR_MASTR
      • /GOOG/BQTR_TABLE
      • /GOOG/BQTR_FIELD

    批量传输设置会保存到传送请求中。

  2. 您可以通过在传送请求中手动包含 /GOOG/CLIENT_KEY 表的内容来导出客户端密钥设置。

  3. 将文件保存到您的本地工作站。

将批量传输设置导入生产系统

导入包含批量传输设置的传送请求。

在 SAP 生产系统中,导入批量传输设置的每个部分:

  1. 在 SAP GUI 中,导入包含批量传输设置的传输请求。

  2. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

    或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

  3. 点击 ABAP SDK for Google Cloud > 基本设置 > 配置客户端密钥

  4. 根据需要更新生产环境的客户端密钥设置。

  5. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery Data Transfer:设置维护

  6. 验证批量传输屏幕中是否显示了正确的批量传输。

  7. 在后续的字段设置屏幕中,根据需要为生产环境更新表和字段映射的其他值。

  8. 运行调用 BigQuery Toolkit for SAP 的数据加载程序,以测试配置。

查看 BigQuery Data Transfer 设置

如需查看 BigQuery Data Transfer 模块的批量传输设置,请执行以下操作:

  1. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

    或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

  2. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery Data Transfer:设置显示

或者,您也可以使用 /GOOG/BQTR_SETTINGS 事务查看设置。

复制验证

当您在批量传输配置中指定额外字段标志选项时,BigQuery Toolkit for SAP 会向 BigQuery 中的表架构添加额外的列。这些列会捕获以下详细信息:

  • 有关每个记录触发复制的更改类型的信息。
  • 一个时间戳,表示 BigQuery Toolkit for SAP 收到包含该记录的部分的时间。

通过使用这些列中的信息,您可以验证复制过程,确保 SAP 系统和 BigQuery 之间数据的完整性和一致性。您可以使用更改类型和时间戳来查询以下类型的记录计数:

  • 在初始加载期间加载到 BigQuery 表中的记录数。
  • 在指定日期复制到 BigQuery 表的记录数。
  • BigQuery 表中的唯一记录总数。

如需获取这些计数,您可以通过在 Google Cloud 控制台中提交 SQL 查询来直接查询 BigQuery 表。

如需大致了解额外字段标志,请参阅用于记录更改和计数查询的额外字段

用于记录计数的 SQL 查询

您可以使用 Google Cloud 控制台中的 BigQuery SQL 编辑器页面,运行 SQL 查询来检查 BigQuery 表中的记录计数。

查询在初始加载模式下插入的记录数

当 BigQuery 表架构包含可选的 operation_flag 列时,在初始加载模式下插入表的记录包括 L 操作标志。

如需获取 BigQuery 在初始加载期间收到的记录数,请执行以下查询:

SELECT COUNT(*)
  FROM
      `PROJECT.DATASET.TABLE`
  WHERE operation_flag = 'L'

查询在复制模式下插入的记录数

当 BigQuery 表架构包含可选的 operation_flag 列时,在复制模式下插入表的记录包括以下操作标志之一:

  • I:记录已插入源表中。
  • D:记录已从源表中删除。
  • U:记录在源表中已更新。

如需获取 BigQuery 在复制模式下接收的记录数,请运行以下查询:

SELECT COUNT(*)
  FROM
      `PROJECT.DATASET.TABLE`
  WHERE operation_flag = 'I' | 'D' | 'U'

查询 BigQuery 表中的记录总数

当 BigQuery 表架构包含可选的 recordstamp 列时,插入到表中的每个记录的相应 recordstamp 字段都包含指示 BigQuery Toolkit for SAP 将记录发送到 BigQuery 的时间戳。

如需获取可以与源表中的记录总数进行比较的 BigQuery 表中记录的总数量,您可以使用 recordstampis_deleted 字段计算 BigQuery 表中尚未从源表中删除的唯一记录。

如果在查询记录时源表正在更新或复制处于活跃状态,则源表和目标表中的记录数可能不完全匹配。

如需获取 BigQuery 目标表中唯一记录的当前计数,请运行以下查询:

SELECT COUNT(*)
  FROM (
    SELECT
      *,
      ROW_NUMBER() OVER (PARTITION BY KEY_FIELD_1, ..., KEY_FIELD_N ORDER BY recordstamp DESC) row_num
    FROM
      `PROJECT.DATASET.TABLE` )
  WHERE row_num = 1 AND is_deleted = false

在 CSV 文件中修改 BigQuery 字段映射

以下部分介绍了如何导出默认字段映射,以便数据工程师或 BigQuery 管理员无需访问 SAP 系统即可修改目标字段值。

修改目标字段值时,请遵循以下规则:

  • 请勿修改 SAP 数据源名称SAP 字段名称列中的值。
  • 发送未压缩标志列中,如需启用记录压缩,请仅使用 X 标记该字段。否则,请将此字段留空。

创建默认字段映射的电子表格或文本文件

如需创建 CSV 文件以在 SAP 服务器外部进行修改,请执行以下操作:

  1. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

    或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

  2. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery Data Transfer:设置维护

  3. BigQuery Data Transfer 设置维护屏幕中,指定以下值:

    • 设置表字段中,指定字段
    • 大规模转移键字段中,指定要更新的大规模转移的 ID。
    • 表名称字段中,将该字段留空以处理所有表中的所有字段,或指定表名称以处理特定表。
    • 将其他所有字段留空。
  4. 点击执行图标。此时将显示 BigQuery Data Transfer Settings Maintenance - Fields 屏幕。

  5. BigQuery 数据传输设置维护 - 字段屏幕上,如需隐藏以下列表中的列之外的所有列,请右键点击列标题并从下拉菜单中选择隐藏

    • SAP 数据源名称
    • SAP 字段名称
    • 外部数据元素
    • 外部字段名称
    • 字段说明
    • 发送未压缩标志
  6. 在显示其余六个列后,点击导出图标。

  7. 导出菜单中,选择以下选项之一:

    • 电子表格
    • 本地文件。为了便于将文件内容转换为 CSV 格式,我们建议您以文本文件(制表符分隔)格式保存文件。
  8. 点击对勾标记图标,以保存默认字段映射。

将电子表格或文本文件转换为 CSV 格式

如果要使用自定义事务 /GOOG/BQTR_SETTINGS 上传修改后的字段映射,字段映射必须采用 CSV 格式。

如果您使用的是电子表格,请在上传该文件之前将电子表格另存为 CSV 文件。

如果是使用制表符分隔格式或任何其他格式的本地文件,则需要修改该文件以符合 CSV 格式。

例如:

SAP Table,SAP Field Name,External Data Element,External Field Name,Field Description, Send Uncompressed Flag
SAP_TABLE_NAME,SAP_FIELD_NAME1,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME1,BIGQUERY_FIELD_DESCRIPTION1, SEND_UNCOMPRESSED_FLAG1
SAP_TABLE_NAME,SAP_FIELD_NAME2,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME2,BIGQUERY_FIELD_DESCRIPTION2, SEND_UNCOMPRESSED_FLAG2
SAP_TABLE_NAME,SAP_FIELD_NAME3,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME3,BIGQUERY_FIELD_DESCRIPTION3, SEND_UNCOMPRESSED_FLAG3

上传 CSV 文件

如需上传修改后的 CSV 文件,请执行以下操作:

  1. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

    或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

  2. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery Data Transfer:设置维护

  3. BigQuery Data Transfer:设置维护屏幕中,指定以下值:

    • 设置表字段中,指定字段
    • 大规模转移键字段中,指定要更新的大规模转移的 ID。
    • 选中从文件上传复选框。
  4. 点击执行图标。此时将打开选择要上传的文件对话框。

  5. 选择要上传的文件对话框中,选择包含修改后的字段值的 CSV 文件。

  6. 点击打开

  7. 如果您收到安全警告,请点击允许。系统会加载该文件,并且该文件中的已修改值将显示在 BigQuery 设置维护 - 字段屏幕的适用行中。

  8. 点击保存图标。

  9. 如需确认是否已应用值,请将 CSV 文件中的值与 SAP 系统中显示的值进行比较。

处理源数据中的错误

当 BigQuery 流处理 API 从 BigQuery Toolkit for SAP 收到一个记录数据块后,会先检查数据错误,然后再将任何记录插入 BigQuery 表中。

通过在批量传输设置中指定以下标志,您可以控制 BigQuery API 和 BigQuery Toolkit for SAP 在发现数据错误时的响应方式:

  • Skip Invalid Records (SKIP) 标志
  • Break at First Error Flag (BREAK) 标志

SKIP 标志

如果指定了 SKIP 标志,则当 BigQuery API 收到记录数据块并发现包含数据错误的记录时,BigQuery API 会舍弃或跳过包含错误的记录,并继续将数据块中的所有其他记录插入 BigQuery 表中。

如果未指定 SKIP 标志,则当 BigQuery 发现包含数据错误的记录时,BigQuery 会舍弃整个数据块,而不会将任何记录插入 BigQuery 表中。这是默认行为。

在开发和质量检查环境中最适合指定 SKIP 标志,不建议在生产环境中指定此标志。

您可以在配置复制时在 /GOOG/BQTR_SETTINGS 事务中指定 SKIP 标志。该规范存储在 /GOOG/BQTR_MASTR 配置表中。

如需了解 SKIP 规范如何与 BREAK 规范交互,请参阅 SKIPBREAK 交互矩阵表

BREAK 标志

如果指定了 BREAK 标志,则当 BigQuery API 通知 BigQuery Toolkit for SAP 发现记录中存在数据错误时,BigQuery Toolkit for SAP 会停止向 BigQuery 发送记录,并且终止复制作业。这是默认行为。

如果未指定 BREAK 标志,则当 BigQuery 通知 BigQuery Toolkit for SAP 发现记录中存在数据错误时,BigQuery Toolkit for SAP 通过发送下一个数据块继续向 BigQuery 发送记录,并且复制作业将继续执行。

建议在生产环境中指定 BREAK 标志。

您可以在配置复制时在 /GOOG/BQTR_SETTINGS 事务中指定 BREAK 标志。创建新的批量传输键时,系统会默认启用 BREAK 标志。

该规范存储在 /GOOG/BQTR_MASTR 配置表中。

如需了解 BREAK 规范如何与 SKIP 规范交互,请参阅 SKIPBREAK 交互矩阵表

SKIPBREAK 交互矩阵表

您可以配置 BigQuery Data Transfer 模块,以便通过以下方式处理数据错误:

SKIP 标志 BREAK 标志 行为
FALSE TRUE

BigQuery 会舍弃当前记录数据块,而不会将当前数据块中的任何记录插入 BigQuery 表。

BigQuery Toolkit for SAP 不会从当前部分发送更多记录数据块,并且会终止复制作业。

这是默认和建议的设置。

FALSE FALSE

BigQuery 会舍弃当前记录数据块,而不会将当前数据块中的任何记录插入 BigQuery 表。

BigQuery Toolkit for SAP 会发送当前部分中的全部剩余记录数据块,并检索下一部分。BigQuery Toolkit for SAP 不会终止复制作业。

TRUE TRUE

BigQuery 仅舍弃包含错误的记录,并将当前数据块中的其余记录插入 BigQuery 表。

BigQuery Toolkit for SAP 不会从当前部分发送更多记录数据块,并且会终止复制作业。

TRUE FALSE

BigQuery 仅舍弃包含错误的记录,并将当前数据块中的其余记录插入 BigQuery 表。

BigQuery Toolkit for SAP 会发送当前部分中的全部剩余记录数据块,并检索下一部分。BigQuery Toolkit for SAP 不会终止复制作业。

SAP 字典对象结构变更

本部分介绍了如何处理 SAP 中字典对象定义的更改。

向字典对象添加列

如果您要向字典对象添加列,请执行以下操作:

  1. 停止使用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的自定义数据复制应用。
  2. 向 SAP 中的字典对象添加新列。
  3. (可选)更新事务 /GOOG/BQTR_SETTINGS 中的字段级映射。
  4. 重启自定义数据复制应用。
  5. 验证 BigQuery 中的复制结果。

从字典对象中删除列

如需从字典对象中删除现有列,请执行以下操作:

  1. 停止使用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的自定义数据复制应用。
  2. 从字典对象中删除列。
  3. 在 BigQuery 中,从目标 BigQuery 表中删除该列。如需详细了解从现有表中删除列的步骤,请参阅 BigQuery 文档
  4. (可选)更新事务 /GOOG/BQTR_SETTINGS 中的字段级映射。
  5. 重启自定义数据复制应用。
  6. 验证 BigQuery 中的复制结果。

更改现有列的数据类型

更改 SAP 字典对象中现有列的数据类型时,您需要遵循特定步骤,具体取决于您是将数据类型更改为与目标 BigQuery 表兼容还是不兼容的数据类型。

当现有列的现有数据类型和新数据类型映射到目标 BigQuery 表中的相同数据类型时,数据类型与目标 BigQuery 表中的数据类型兼容。例如,如果源表中某个列的数据类型从 INT1 更改为 INT2,那么这两个数据类型都与目标 BigQuery 表中的数据类型 INTEGER 兼容。

如需详细了解 BigQuery Data Transfer 模块中的数据类型映射,请参阅数据类型映射

将数据类型更改为兼容的数据类型

如需将现有列的数据类型更改为兼容的数据类型,请执行以下操作:

  1. (可选)停止使用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的自定义数据复制应用。
  2. 在源系统中将数据类型更改为兼容的数据类型。
  3. (可选)更新事务 /GOOG/BQTR_SETTINGS 中的字段级映射。
  4. 如果您已停止自定义数据复制应用,请重启该应用。
  5. 验证 BigQuery 中的复制结果。

将数据类型更改为不兼容的数据类型

如需将现有列的数据类型更改为不兼容的数据类型,请执行以下操作:

  1. 停止使用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的自定义数据复制应用。
  2. 在 BigQuery 中,删除目标表。
  3. 更改源系统中的数据类型。
  4. (可选)更新事务 /GOOG/BQTR_SETTINGS 中的字段级映射。
  5. 启动自定义数据复制应用。根据需要,您可能需要开始初始加载现有数据。

增强出口位置

BigQuery Toolkit for SAP 在其代码中提供了多个增强点,ABAP 开发者可在其中插入代码以添加自定义功能。

下表列出了这些增强点支持的函数、方法以及包含增强点的类。

函数 方法 Spot 选项
更新一个字段的映射,例如外部字段名称和数据类型。 /GOOG/CL_BQTR_DATA_LOAD_BASE CREATE_FLD_MAPPINGS /GOOG/ES_BQTR_DATA_LOAD_BASE /GOOG/UPDATE_FIELD_MAPPING
通过添加或移除字段来更新字段表的映射。 /GOOG/CL_BQTR_DATA_LOAD_BASE CREATE_FLD_MAPPINGS /GOOG/ES_BQTR_DATA_LOAD_BASE /GOOG/UPDATE_FIELD_MAPPINGS
在将字段转换为目标字段之前,更改源字段的值。 /GOOG/CL_BQTR_DATA_LOAD FILL_TARGET_RECORDS /GOOG/ES_BQTR_DATA_LOAD /GOOG/CHANGE_SOURCE_FIELD
在源字段转换为目标表中的目标字段后,更改目标字段的值。 /GOOG/CL_BQTR_DATA_LOAD FILL_TARGET_RECORDS /GOOG/ES_BQTR_DATA_LOAD /GOOG/FILL_TARGET_FIELD
向源表到目标表的转换期间,向目标表添加源表中不存在的字段。 /GOOG/CL_BQTR_DATA_LOAD FILL_TARGET_RECORDS /GOOG/ES_BQTR_DATA_LOAD /GOOG/FILL_EXTRA_FIELD
在创建 BigQuery 表之前准备 BigQuery 架构字段。 /GOOG/CL_BQTR_CLIENT_BQ_BASE PREP_BQ_TABLE_SCHEMA /GOOG/ES_BQTR_CLIENT_BQ /GOOG/PREPARE_SCHEMA_FIELD
如果出现源自 BigQuery 服务器端的 HTTP 错误,您可以在对 BigQuery API 进行 HTTP 调用后收集日志记录数据,以进行问题排查。 /GOOG/CL_BQTR_CLIENT_BQ_REPL INSERT_TABLEDATA /GOOG/ES_BQTR_CLIENT_BQ_REPL /GOOG/LOG_INSERT_ERROR

报告

下表列出了这些增强点支持的函数、方法以及包含增强点的报告。

函数 举报 方法 Spot 选项
向 BigQuery Data Transfer 设置程序添加授权检查。 /GOOG/R_BQTR_SETTINGS AUTHORITY_CHECK /GOOG/ES_BQTR_SETTINGS /GOOG/AUTHORITY_CHECK

高级设置

(可选)您可以修改 BigQuery Toolkit for SAP 的高级设置。我们建议您仅在全面分析新值对性能的影响之后修改高级设置参数。您负责确保 BigQuery Toolkit for SAP 的新高级设置不会导致故障和性能问题。

BigQuery Toolkit for SAP 的高级设置在系统级应用,并且适用于所有大规模转移密钥。如果未修改高级设置参数,则 BigQuery Toolkit for SAP 将使用默认设置。

如需修改高级设置参数,请执行以下操作:

  1. 在 SAP GUI 中,执行事务代码 /GOOG/SDK_IMG

    或者,执行事务代码 SPRO,然后点击 SAP Reference IMG

  2. 依次点击 ABAP SDK for Google Cloud > 基本设置 > BigQuery Data Transfer:设置维护

  3. 设置表下拉菜单中,选择参数

  4. 点击执行图标。此时将显示 BigQuery Data Transfer 设置维护 - 参数屏幕。

  5. 点击插入行图标。

  6. 在所显示的行中,指定以下设置:

    1. 参数名称字段中,输入参数的名称。系统会自动填充参数说明。
    2. 参数值字段中,输入一个值。

      如需了解“高级设置”参数,请参阅高级设置参数

  7. 点击保存

    您的高级设置将以记录形式存储在 /GOOG/BQ_PARAM 配置表中,系统会自动填充更改者更改时间更改位置字段。

高级设置参数

下表显示了 BigQuery Toolkit for SAP 的高级设置参数。

参数名称 说明 默认值 有效值
CHUNK_SIZE_DEF 此设置是 BigQuery Toolkit for SAP 支持的默认数据块大小。
如果设置中未维护数据块大小,则使用默认数据块大小。
10000 该值必须在 BigQuery 配额限制范围内。
PERC_REDUC_DEF 数据块大小百分比缩减。
如果已启用动态数据块大小,则数据块大小会按此百分比减小,直到达到理想的数据块大小并且数据块中的数据已成功转移到 BigQuery。
50 该值必须介于 1 到 99 之间。

获取支持

Google Cloud 针对与 BigQuery Toolkit for SAP 的安装、配置、操作和维护相关的问题和疑问提供支持。不过,支持仅限于该工具包本身。

Google Cloud 不支持其他环境组件,例如网络基础架构、数据库、操作系统或第三方软件。对于与 BigQuery Toolkit for SAP 以外的任何环境组件相关的问题,请与相应的供应商或支持提供商联系。

对于 SAP 提供的功能(例如操作性数据配置 [ODP] 和 SAP Landscape Transformation [SLT]),请与 SAP 支持团队联系以寻求帮助。

如需排查 BigQuery Toolkit for SAP 的问题,请参阅BigQuery Toolkit for SAP 问题排查

如果您在解决 ABAP SDK for Google Cloud 问题时需要帮助,请执行以下操作: