BigQuery Connector for SAP 操作指南

本指南为 SAP LT Replication Server 管理员、SAP 数据工程师或其他人员介绍如何执行 BigQuery Connector for SAP 2.5 版(最新)的操作任务(例如性能调整和版本更新)。

微调复制性能

复制性能可能会受到多种因素的影响。适用的具体因素可能因安装而异,并且可能随时间而发生变化。

以下部分提供有关如何微调一些可能影响性能的较常见因素的指导。

如需详细了解使用 BigQuery Connector for SAP 时的复制性能,请参阅性能规划

为表设置性能选项

在 SAP LT Replication Server 中,您可以为每个影响性能的表指定复制选项。

具体而言,大型表在复制时需要更多的时间和资源,通过指定范围并增加可用于表的并行复制作业数上限可以优化性能。

通常会逐渐变大的表示例包括 MSEGACDOCAMATDOC 等。

为大型表指定并行复制作业时,您需要在任何给定表允许的并行作业数量与批量传输配置允许的并行作业总数之间取得平衡。您的组织也可能会限制您可以为给定服务器指定的并行复制作业的数量。

如需设置表的性能选项,请执行以下操作:

  1. 在 SAP GUI 中,输入 SAP 事务 LTRS

  2. 高级复制设置屏幕上,指定该表的批量传输设置 ID。

  3. 高级复制设置文件夹层次结构中,点击性能选项文件夹,以显示已定义性能选项的表。

  4. 如果所需表未列出,请右键点击性能选项文件夹,然后选择添加表

  5. 为表指定一个名称。

  6. 根据需要指定以下选项:

    • 常规性能选项下:
      • 并行作业数,用于设置可用于该表的并行复制作业的最大数量。
      • 序列号,用于确定此表相对于其他表的复制优先级。
    • 初始加载选项下:
      • 对于读取类型,如果您的表不是太大,请选择读取类型 1 范围计算。如需了解详情,请参阅性能和 LTRS 高级复制设置
      • 数据包大小中,指定发送到 SAP LT Replication Server 的记录部分的大小(以字节为单位)。
      • 如果选择了一种使用范围的读取类型,请定义适当的范围。
    • 复制选项下:
      • 对于日志记录表的范围,请指定无范围,这是最可靠的选项。
      • 如果您选择手动指定范围,则应定义适当的范围。
  7. 点击保存

基准性能的基准

为了帮助您评估复制性能,本部分包含在 Google Cloud 测试系统中观察到的基准性能数字。

由于很多不同因素会影响性能,您的性能数字可能会有所不同。

例如,如果您的 SAP 系统未在 Google Cloud 上运行,则由于网络延迟和与访问令牌相关的开销等因素,负载和复制率可能会低于基准速率。如果源表包含的列数更少,或者您在独立架构中 SAP LT Replication Server 自己的服务器上安装 SAP LT Replication Server,则速率可能会更快,因为 SAP LT Replication Server 不必与资源的源系统竞争。

观察到的基准性能数字

以下性能数字表示 Google Cloud 在测试期间针对每种来源系统类型观察到的基准性能。在每个测试系统中,SAP LT Replication Server 都安装在 Compute Engine 虚拟机上的嵌入式架构中的 SAP 源系统上。SAP 源系统与目标 BigQuery 数据集在同一 Google Cloud 区域中运行。

如需了解测试系统的配置,请参阅基准性能测试系统配置

要查看性能数字,请点击源系统类型:

S/4HANA

  • 表:ACDOCA
    • 3.43 亿条记录
    • 477 列
  • 初始加载大小
    • 加载速率:平均每小时 3.5 亿条记录
    • 加载时长:平均 59 分钟
  • 副本
    • 源表更改速率:平均每小时 5000 万条记录
    • 最大复制速率:平均每小时 5000 万条记录

ECC

  • 表:MSEG
    • 2.03 亿条记录
    • 188 列
  • 初始加载大小
    • 加载速率:平均每小时 3.85 亿条记录
    • 加载时长:平均 32 分钟
  • 副本
    • 源表更改速率:平均每小时 5000 万条记录
    • 最大复制速率:平均每小时 6900 万条记录

上述性能数字是 Google Cloud 测试人员观察到的基准。

观察到的性能在具有以下特性的测试系统中表现更佳:

  • SAP LT Replication Server 在独立架构中安装在自己的虚拟机上。
    • 对于 S/4HANA 系统,由于 SAP LT Replication Server 进程的独立扩缩,观察到独立架构的初始加载速率比嵌入式架构快约 42%。
    • 对于 ECC 系统,由于 SAP LT Replication Server 进程的独立扩缩,观察到独立架构的初始加载速率比嵌入式架构快约 10%。
  • 源表中的列较少。
  • 记录的整体字节大小较小。

如需了解可以修改以提升性能的系统属性,请参阅:

基准性能测试系统配置

本部分介绍的测试系统会生成上一部分观察到的基准性能数字中列出的基准性能数字。

测试系统(包括 SAP 源系统、SAP LT Replication Server 和 BigQuery 数据集)都在同一 Google Cloud 区域的 Compute Engine 虚拟机上运行。

在每个系统中,服务器和工作负载被指定为模拟可能在许多实际安装中找到的更重工作负载和更高复制量。

如需查看测试系统属性,请点击源系统类型:

S/4HANA

  • SAP LT Replication Server 安装架构
    • 嵌入式架构
  • 源系统服务器
    • 两台应用服务器,每台服务器都在具有以下规范且基于 N2 的 Compute Engine 自定义机器类型上:
      • vCPU 数:60
      • 内存:324 GB
      • CPU 平台:Intel Cascade Lake
    • m1-ultramem-80 Compute Engine 虚拟机上的一台 SAP HANA 服务器具有以下规范:
      • vCPU 数:80
      • 内存:1900 GB
      • CPU 平台:Intel Broadwell
  • 软件版本:
    • S/4HANA 1909
    • SAP LT Replication Server:S/4CORE 104 SP00
  • 表大小:
    • 表名:ACDOCA,总账日记账分录行项数据
    • 记录数:3.43 亿
    • 列数:477
  • 每个应用服务器上的工作进程数
    • 60 个对话进程
    • 220 个后台进程
  • SAP LT Replication Server 中的加载设置
    • 作业数:99
    • 读取类型:1 个范围
    • 计算方式:自动范围
  • 复制设置
    • 作业数:99
    • 使用键字段计算日志记录表的范围
    • 128 个范围

ECC

  • SAP LT Replication Server 安装架构
    • 嵌入式架构
  • 源系统服务器
    • 两个应用服务器,每个应用都在具有以下规范的 n2-highmem-48 Compute Engine 虚拟机上:
      • vCPU 数:60
      • 内存:348 GB
      • CPU 平台:Intel Cascade Lake
  • 软件版本:
    • SAP NetWeaver:7.0 EHP2
    • SAP LT Replication Server:DMIS 2011_1_700 SP17
  • 表大小:
    • 表:MSEG,材料库存管理文档
    • 记录数:2.03 亿
    • 列数:188
  • 每个应用服务器上的工作进程数
    • 60 个对话进程
    • 100 个后台进程
  • SAP LT Replication Server 中的加载设置
    • 作业数:99
    • 读取类型:5 个发送者
    • 队列:手动范围
  • 复制设置
    • 作业数:99
    • 日志记录表的范围:使用键字段计算范围
    • 范围数量:128

动态数据块大小

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

您可以使用事务 /GOOG/SLT_SETTINGS 在表的大规模转移配置中启用动态数据块大小。动态数据块大小是可选设置。如需了解如何启用动态数据块大小,请参阅:

启用动态数据块大小后,BigQuery Connector for SAP 允许的最大数据块大小保持在 BigQuery 配额限制内,即 50,000 条记录。

如需详细了解数据块大小,请参阅部分大小和数据块大小

动态数据块大小的工作原理

对于动态数据块大小,如果具有初始数据块大小的 HTTP 请求超过 BigQuery 字节大小限制,则 BigQuery Connector for SAP 会减小数据块大小并重试发送数据。BigQuery Connector for SAP 会不断减小数据块大小,并尝试将数据发送到 BigQuery,直到特定数据块的数据成功转移或数据块大小达到 1。

数据转移成功的最终缩减的数据块大小随后将用作该部分所有剩余数据块的数据块大小。您可以在 SAP LT Replication Server 应用日志中找到每个部分成功缩减的最后一个区块大小,以作为信息消息:

Dynamic chunking triggered. Chunk size reduced from INITIAL_CHUNK_SIZE_VALUE to FINAL_REDUCED_CHUNK_SIZE_VALUE

对于后续部分和任何后续复制,BigQuery Connector for SAP 开始使用在事务 /GOOG/SLT_SETTINGS 中配置的数据块大小向 BigQuery 发送数据,并在触发动态分块时继续减小数据块大小。

默认情况下,每次重试后,数据块大小会减小 50%。如果要降低或减小数据块大小的百分比,请修改高级设置参数。

让我们通过一个示例来了解当为表启用动态数据块大小时,在复制过程中如何确定数据块大小。对于此示例,SAP LT Replication Server 部分大小大于 BigQuery Connector for SAP 数据块大小,并且在事务 /GOOG/SLT_SETTINGS 中定义了 10,000 条记录的数据块大小。BigQuery Connector for SAP 将部分复制到 BigQuery,如下所示:

  1. 当对包含 20,000 条记录的部分开始复制时,第一个数据块的数据块大小为 10,000 条记录,但如果 HTTP 请求的字节大小大于 10 MB,则 BigQuery Connector for SAP 会将数据块大小减少 50%,并且新的数据块大小变为 5,000 条记录。

  2. BigQuery Connector for SAP 重试发送 5,000 条记录的数据块大小,但如果 HTTP 请求的字节大小仍然大于 10 MB,则 BigQuery Connector for SAP 将数据块大小进一步减小 50%,新的数据块大小变为 2,500 记录。

  3. BigQuery Connector for SAP 会重试发送 2500 条记录的数据块大小,如果此数据块的 HTTP 请求的字节大小小于 10 MB,则复制会成功且数据会插入 BigQuery。

  4. 只要每个 HTTP 请求的字节大小小于 10 MB,所有后续数据块的数据大小就会变为 2500 条记录。如果任何后续数据块的 HTTP 请求的字节大小超过 10 MB,BigQuery Connector for SAP 将再次减小数据块大小并重试将数据发送到 BigQuery,直到成功传输特定数据块的数据。减小的数据块大小仅用于当前复制的当前部分。

使用动态数据块大小时的性能

动态数据块大小可能会影响复制到 BigQuery 的性能。对于每个数据块,BigQuery SAP for Connector 都会计算数据块中的记录数,并检查 HTTP 请求的字节大小。如果字节大小超过 10 MB,则 BigQuery Connector for SAP 会减小数据块大小,并重试将数据发送到 BigQuery 以增加整体复制时间。

仅在特定情况下使用动态数据块大小,即使为某些数据记录配置了理想的数据块大小,请求大小可能也会超过 BigQuery 的 HTTP 请求限制,并且您不希望接收数据块大小错误。例如:

  • 包含字段数据稀疏方差的源表,即对于某些记录,维护的字段更少,而某些记录会保留许多字段。
  • 包含长文本字段(如 EDID4-SDATAVARI-CLUSTIDREPOSRC-DATA)的源表。

您还可以在测试阶段使用动态数据块大小来确定可在生产 SAP 系统中定义的表的理想数据块大小。

如需详细了解如何配置数据块大小,请参阅:

  • 如果 SAP LT Replication Server 在 Compute Engine 虚拟机上运行,请参阅指定表特性
  • 如果 SAP LT Replication Server 在 Google Cloud 外部的主机上运行,请参阅指定表特性

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

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

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

  • 高级复制设置,可通过 LTRS 事务访问。
  • /GOOG/CLIENT_KEY 表中的客户端密钥设置,可通过 SM30 事务访问。
  • BigQuery Connector for SAP 批量传输设置,可通过 /GOOG/SLT_SETTINGS 事务访问。

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

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

  1. 导出高级复制设置:

    1. 运行 LTRS 事务。
    2. 选择要传送到生产环境的批量传输记录。
    3. 文件下拉菜单中,选择导出所有设置
    4. 导出设置对话框中,选择一个目标位置,然后点击保存。这些设置会作为 CSV 格式的压缩文件保存在您的本地工作站上。
  2. 导出 BigQuery Connector for SAP 批量传输设置:

    1. 运行 /GOOG/SLT_SETTINGS 事务:

      /n/GOOG/SLT_SETTINGS
    2. 设置表字段中,选择批量传输

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

    4. 点击传送批量传输

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

      • /GOOG/BQ_MASTR
      • /GOOG/BQ_TABLE
      • /GOOG/BQ_FIELD

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

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

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

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

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

  1. 为批量传输设置创建 SAP LT Replication Server 复制配置。

  2. 导入高级复制设置:

    1. 运行 LTRS 事务。
    2. 选择您在第一步中创建的批量传输。
    3. 文件下拉菜单中,选择导入所有设置
    4. 选择文件对话框中,从您的本地工作站选择压缩文件,然后点击打开。这些设置将作为批量传输的设置导入。
  3. 导入包含批量传输设置的传送请求。

  4. 运行 SM30 事务。

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

  6. 运行 /GOOG/SLT_SETTINGS 事务:

    /n/GOOG/SLT_SETTINGS
  7. 验证批量传输屏幕中是否显示了正确的批量传输。

  8. 批量传输 ID 列中,将开发系统中的批量传输 ID 替换为您在第一步中创建的复制配置中的批量传输 ID。

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

  10. 通过启动初始加载或复制来测试配置。如需了解如何启动初始加载或复制,请参阅:

    • 如果 SAP LT Replication Server 在 Compute Engine 虚拟机上运行,请测试复制
    • 如果 SAP LT Replication Server 在 Google Cloud 外部的主机上运行,请测试复制

更新 BigQuery Connector for SAP

Google Cloud 以 SAP 传输的形式提供 BigQuery Connector for SAP 的新版本。

SAP 管理员可以按照以下步骤更新 BigQuery Connector for SAP:

  1. 在 SAP LT Replication Server 中停用配置。
  2. 导入新的 SAP 传输请求。
  3. 验证导入和对象激活均已成功后,在 SAP LT Replication Server 中激活配置。

更新 gcloud CLI

您需要确保 SAP LT Replication Server 主机上的 Google Cloud CLI 为最新版本。

如需详细了解如何管理 gcloud CLI,请参阅管理 gcloud CLI 组件

监控

您可以监控从 SAP 数据源到目标 BigQuery 表的数据路径中的几个不同点,包括:

  • 基础架构 - 网络、硬件和操作系统
  • SAP 数据库层
  • SAP 应用层
  • BigQuery Connector for SAP
  • BigQuery

以下各小节介绍供您在这些点进行监控的选项。

监控基础架构

在 Google Cloud 上,您可以在主机虚拟机上安装 Ops Agent,以进行高级监控和日志记录。Ops Agent 会将数据发送到 Google Cloud 控制台中的 Cloud Monitoring。

有关详情,请参阅:

对于不在 Google Cloud 上运行的系统,您还可以通过运行 SAP 事务(例如 ST06 事务)来获取服务器信息。

监控数据库层

使用标准 SAP 事务代码来监控数据库的运行状况。

事务代码 DBACOCKPIT 是监控数据库时最常用的事务。此事务还提供了详细日志,供您用于排查错误。

对于 SAP HANA,您可以使用 SAP HANA Studio 处理 SAP HANA 操作。 您可以在任何前端机器上安装 SAP HANA Studio。

在排查性能问题或其他问题时,请在源数据库中检查以下事项:

  • 耗费过多资源的 SQL 语句
  • 锁定
  • 加载历史记录
  • 索引
  • 进程

监控应用层

您可以使用 SAP 应用监控和问题排查工具来监控和排查 BigQuery Connector for SAP 的问题,因为它是在应用层运行的。

SAP 应用监控和问题排查可进一步分类如下:

  • 标准 SAP 监控和问题排查
  • BigQuery Connector for SAP 监控和问题排查

对于大型环境,您可以使用 SAP Solution Manager 作为中央监控工具。

您可以使用如下列表中的 SAP 事务代码来监控和诊断个别 SAP 应用系统的问题:

  • SLT 配置状态:LTRC
  • SLT 错误和日志:LTROSLG1
  • Internet Communications Manager(HTTP 和 HTTPS 调用):SMICM
  • 安全与证书:STRUST
  • SAP 传输:STMS
  • RFC 连接:SM59
  • 操作系统命令:SM69
  • 软件包检查:SE80
  • 授权检查:SU53
  • 后台作业:SM37
  • 系统日志:SM21

监控 BigQuery

使用 Cloud Monitoring 查看 BigQuery 指标并创建图表和提醒。每个指标都有一个资源类型(即 bigquery_datasetbigquery_projectglobal)和一组标签。

使用资源类型和标签以便使用 Monitoring Query Language (MQL) 构建查询。

您可以使用标签对每项指标进行分组或过滤。

如需详细了解 Monitoring,请参阅 Cloud Monitoring 文档

负载模拟工具

本部分简要介绍了负载模拟工具及其功能。

负载模拟工具是 BigQuery Connector for SAP 的支持工具,可让您模拟将 SAP 数据复制到 BigQuery 中。该工具是 Google Cloud 为 BigQuery Connector for SAP 提供的传输的一部分。您可以使用负载模拟工具通过直接调用 BigQuery Connector for SAP 的 Business Add In (BAdI) 将源 SAP 数据复制到 BigQuery。因为负载模拟工具不使用底层 SLT 框架,所以 SLT 触发器不受影响。不要在生产环境中使用负载模拟工具进行数据复制。

负载模拟工具提供了一份报告,您可以分析该报告以评估复制性能、识别潜在问题、了解问题的根本原因并在使用 BigQuery Connector for SAP 将 SAP 数据实际复制到 BigQuery 之前解决这些问题。

以下是您可以使用负载模拟工具的一些常见使用场景:

  • 重现并解决任何网络连接、授权或身份验证问题。
  • 生成 BigQuery API 调用的增强日志以排查问题。
  • 如需 Cloud Customer Care 提供的任何故障排除帮助,请运行负载模拟工具并向 Customer Care 团队提供日志。
  • 通过提供复制过程中每个步骤所需的时间来衡量性能指标。
  • 对于嵌入式体系结构中的 SAP LT Replication Server,确定 SAP 表的最佳数据块大小。

使用您通过自定义事务 /GOOG/SLT_SETTINGS 创建的负载模拟工具的示例质量传递配置。不要使用生产数据集和 BigQuery 表来运行负载模拟工具。

如果您的 SAP LT Replication Server 位于嵌入式架构中,则可以使用标准 SAP 表(例如 MARAT001)运行负载模拟工具。

当您的 SAP LT Replication Server 处于独立架构中时,您可以使用 Google Cloud 随 BigQuery Connector for SAP 提供的示例表 /GOOG/TEST_REPL 运行负载模拟工具。负载模拟工具不支持从远程系统读取源表。

如需详细了解 Google Cloud 上的 SAP 数据源架构,请参阅安装架构

前提条件

在运行负载模拟工具之前,请确保满足以下前提条件:

如何运行负载模拟工具

如需运行负载模拟工具,请执行以下步骤:

  1. 在 SAP GUI 中,输入以 /n 开头的 /GOOG/LOAD_SIMULATE 事务:

    /n/GOOG/LOAD_SIMULATE
  2. 点击执行图标。此时将显示 SLT 负载模拟屏幕。

  3. 处理选项中,确保选中执行模拟选项。

  4. 选择选项部分中,输入以下规范:

    • Google Cloud 合作伙伴字段的下拉菜单中选择 BigQuery
    • 大规模转移密钥字段中,输入大规模转移配置的大规模转移密钥。

      将大规模转移配置示例与负载模拟工具配合使用。请勿使用生产数据集和 BigQuery 表。

    • 表名称字段中,输入您在大规模转移作业配置示例中提供的源 SAP 表的名称。

    • (可选)在 Where 条件字段中,输入从源表中选择数据的条件。

      您最多可以输入 255 个字符。比方说,如果您运行适用于 SAP 表 MARA 的负载模拟工具,并且需要从特定范围选择材料编号,则在 Where 条件部分指定值,例如 MATNR GE '000000000400000001' AND MATNR LE '000000000600000001'

    • 周期计数字段中,输入负载模拟工具运行的处理周期数。

      如果您需要比较模拟报告在多个周期内的表现,这将非常有用。该值必须大于 1。

    • 每个周期的记录计数字段中,输入要在每个处理周期中发送给 BigQuery 的记录数。该值必须大于 1。

    • 部分大小字段中,输入 SAP LT Replication Server 在每个部分中发送到 BigQuery Connector for SAP 的 BAdI 的每个周期的记录数的记录数。

    • 根据需要选择一个或多个标志:

      • 确切记录计数:表示每个周期的记录计数字段中提供的完全相同数量的记录会在每个处理周期中发送到 BigQuery。如果表中没有足够的记录,则负载模拟工具会复制现有记录以实现所需的计数。复制记录只是为了将数据插入 BigQuery,而不是在源表中插入数据。

      • 使用 SLT 目标结构:使用 SLT 日志记录表的结构来获取源表字段。如果未设置此标志,则直接从源表中读取字段以生成目标结构。如需详细了解 SAP LT Replication Server 数据流,请参阅数据流的详细架构视图

      • 详细日志:表示已为 BigQuery Connector for SAP 中定义的所有方法创建日志记录。如果未设置此标志,则仅记录重要的方法。

      • 清除先前的结果:清除之前为同一大规模转移和 SAP 表创建的日志记录。如果未设置该标志,则日志将附加到先前的结果中。

  5. 如需运行负载模拟工具,请点击执行图标。

  6. 加载模拟完成后,在处理选项部分中,选择显示报告单选按钮。

  7. 选择选项部分中,输入以下规范:

    • Google Cloud 合作伙伴字段的下拉菜单中选择 BigQuery
    • 大规模转移密钥字段中,输入大规模转移配置示例的大规模转移密钥。
    • 表名称字段中,输入源 SAP 表的名称。
    • (可选)如需按负载模拟执行日期查看报告,请在报告日期字段中指定日期范围。
    • (可选)如需查看上次执行的报告以及当前报告,请选择仅上次执行标志。
  8. 如需显示报告,请点击执行图标。

下表介绍了模拟报告中显示的列:

名称 说明
转移密钥 大规模转移配置的大规模转移密钥。
SAP 表 正在复制到 BigQuery 的 SAP 表的名称。
执行开始时间戳 BigQuery Connector for SAP 方法的执行时间。
完成时间戳 BigQuery Connector for SAP 方法的执行时间。
作业编号 每次运行负载模拟工具时自动生成的每个已完成执行的唯一作业编号。
周期编号 生成报告的处理周期的序列号。模拟输入中提供的每个周期的记录计数会针对每个周期转移到 BigQuery。
部分编号 部分的序列号。模拟输入中提供的每个周期的记录计数会根据指定的部分大小拆分为多个部分。系统会为每个部分调用 BigQuery Connector for SAP 的 BAdI。
课程名称 BigQuery Connector for SAP 方法的类名称。
方法名称 BigQuery Connector for SAP 方法的名称。BigQuery Connector for SAP 调用的方法按顺序记录。如果在模拟输入中选择详细日志标志,则记录所有方法,或者仅记录重要方法。
由方法调用 调用当前 BigQuery Connector for SAP 方法的最后一个方法。
时长 执行 BigQuery Connector for SAP 所用的总时间。
记录计数 传递给 BigQuery Connector for SAP 方法的记录数。这仅针对记录传递到的方法显示。
URI 方法 HTTP 方法的名称(如果使用 ABAP 方法进行 BigQuery API 调用)。
URI 字符串 HTTP 网址(如果使用 ABAP 方法进行 BigQuery API 调用)。
令牌来源 负载模拟工具正在使用的身份验证令牌的来源。仅适用于 /GOOG/CLIENT_KEY 表中激活令牌缓存的情况。可能的值包括:
  • A:特定进程中的静态属性值。
  • M:跨多个进程共享的内存中的共享内存值。
  • L:带有内存锁的新值。如果存在内存锁,并且无法读取缓存的令牌,则会生成新令牌。
  • N:没有内存锁的新值。如果令牌过期或在内存中找不到,则会生成新的令牌。
到期时间 身份验证令牌的过期时间。
仅适用于 /GOOG/CLIENT_KEY 表中激活令牌缓存的情况。
令牌值 负载模拟工具用于访问 BigQuery 的身份验证令牌的值。
返回代码 方法执行返回的代码。可能的值包括:
错误文本 错误标题(如果有)。
错误说明 有关错误的详细信息。
载荷大小 BigQuery Insert API 的 HTTP 载荷大小。如果方法执行存在错误和载荷大小大于 10 MB,则可以调整数据块大小以减小载荷大小。
信息文字 BigQuery Connector for SAP 的 BAdI 提出的任何相关信息消息。例如,当触发动态分块时,会显示以下信息消息:Dynamic chunking triggered. Chunk size reduced from INITIAL_CHUNK_SIZE_VALUE to FINAL_REDUCED_CHUNK_SIZE_VALUE
状态 方法执行的状态。如果方法执行失败,请参阅 BigQuery Connector for SAP 问题排查指南来解决问题。

安排负载模拟工具

您可以使用程序名称 /GOOG/R_LOAD_SIMULATION 安排负载模拟工具,以自动在 SAP LT Replication Server 上作为后台作业运行。如需详细了解 SAP 提供的安排后台作业的相关信息,请参阅安排后台作业

复制验证

如果在使用事务 /GOOG/SLT_SETTINGS 创建目标 BigQuery 表时选择额外字段标志,则系统会将列添加到表架构中以存储每条记录中触发复制的更改类型,以及反映 SAP LT Replication Server 在何时收到包含该记录的部分的时间戳。

您可以使用更改类型和时间戳来查询以下类型的记录计数:

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

如需获取这些计数,您可以通过在 Google Cloud 控制台中提交 SQL 查询来直接查询 BigQuery 表,也可以运行复制验证工具以生成用于将 BigQuery 记录计数与 SAP LT Replication Server 统计信息或源表中的记录计数进行比较的报告。

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

如需了解如何指定额外字段标志,请参阅:

用于记录计数的 SQL 查询

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

然后,您可以将 BigQuery 记录计数与源表或 SAP LT Replication Server 统计信息中的计数进行比较。

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

当 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 字段都包含指示 SAP LT Replication Server 将记录发送到 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

复制验证工具

本部分简要介绍了复制验证工具及其功能。

复制验证工具会生成报告,可以比较 BigQuery 表中的记录数与 SAP LT Replication Server 统计信息和源表中的记录数。如果计数不完全匹配,则工具会用红色圆圈标记报告。

为了对 BigQuery 中的记录进行计数,该工具会使用上一部分中显示的 SQL 查询对记录数进行 SQL 查询

定期运行复制验证工具,以验证 SAP LT Replication Server 和 BigQuery Connector for SAP 是否按预期将记录复制到 BigQuery。

如需运行复制验证工具,请在 SAP GUI 中输入以 /n 开头的自定义事务 /GOOG/REPLIC_VALID。如需查看分步说明,请参阅:

复制验证报告

您可以使用复制验证工具生成以下验证报告:

  • 初始负载计数:比较 SAP LT Replication Server 在加载模式下发送的记录数和加载到 BigQuery 的记录数。
  • 复制计数:比较 SAP LT Replication Server 在复制模式下发送的记录数和在指定日期插入到 BigQuery 的记录数。
  • 当前计数:某一时间点上源表中记录数量与 BigQuery 中唯一记录数量的比较。

您可以单独生成每个报告,也可以在运行该工具时选择所有检查,以便在一次执行中生成所有三个报告。

显示复制验证报告

生成报告后,您可以通过选择复制验证工具界面的处理选项部分中的显示报告单选按钮来显示报告。

复制验证工具在每个报告中显示的信息略有不同,具体取决于报告类型。

所有报告都包含以下类型的信息:

  • 来自 SAP LT Replication Server 统计信息和源表的源记录计数。
  • 目标 BigQuery 表中的目标记录计数。
  • 两个计数之间的任何差异。计算差异的方法是从源记录计数中减去 BigQuery 计数。正值表示可能存在问题,因为它表示并非所有源记录都进入了 BigQuery。
  • 计数之间的差异显示为来源记录计数的百分比。
  • 直观呈现来源计数和目标计数是相同还是不同。

记录数不相等

复制验证工具包含一个状态字段,用于显示每个报告。

状态字段中的绿色方块表示源记录数等于 BigQuery 中的目标记录数。

状态字段中的红色圆圈表示记录计数不相等。

不相等的记录数并不总是表示存在问题。以下指标表明可能存在一个问题:

  • 对于“当前计数”报告,不等于值始终表示存在问题。
  • 对于初始负载计数或初始计数报告,正值表示可能存在问题。

    相对较低的负值不是问题。由于一些事件(例如导致 SAP LT Replication Server 重新发送数据的暂时性连接中断),目标 BigQuery 表中的计数有时会略高于源记录计数。

如果您看到计数不相等,请重新运行报告,以确保它不是由暂时性问题引起的。由于工具在生成报告时需要处理复制,因此记录数量可能不同。

对于非常大的源表或在 SAP LT Replication Server 中设置过滤条件以进行初始加载或复制的表,复制验证工具可能无法计算相等计数所需的所有记录。

安排验证检查

您可以使用 SAP 后台作业功能安排复制验证工具定期自动运行。

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

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

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

如需创建 CSV 文件以在 SAP LT Replication Server 外部进行修改,请执行以下操作:

  1. 运行 /GOOG/SLT_SETTINGS 事务。

  2. SLT 设置维护屏幕中,指定以下值:

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

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

    • SAP 表名称
    • SAP 字段名称
    • 外部数据元素
    • 外部字段名称
    • 字段说明
  5. 在显示其余五个列后,点击导出图标。

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

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

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

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

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

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

例如:

SAP Table,SAP Field Name,External Data Element,External Field Name,Field Description
SAP_TABLE_NAME,SAP_FIELD_NAME1,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME1,BIGQUERY_FIELD_DESCRIPTION1
SAP_TABLE_NAME,SAP_FIELD_NAME2,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME2,BIGQUERY_FIELD_DESCRIPTION2
SAP_TABLE_NAME,SAP_FIELD_NAME3,BIGQUERY_DATA_TYPE,BIGQUERY_FIELD_NAME3,BIGQUERY_FIELD_DESCRIPTION3

上传 CSV 文件

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

  1. 运行 /GOOG/SLT_SETTINGS 事务。

  2. SLT 设置维护屏幕中,指定以下值:

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

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

  5. 点击打开

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

  7. 点击保存图标。

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

处理源数据中的错误

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

通过在批量传输设置中指定以下标志,您可以控制 BigQuery API 和 BigQuery Connector 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/SLT_SETTINGS 事务中指定 SKIP 标志。该规范存储在 /GOOG/BQ_MASTR 配置表中。

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

BREAK 标志

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

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

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

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

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

SKIPBREAK 交互矩阵表

您可以配置 BigQuery Connector for SAP,以便通过以下方式处理数据错误:

SKIP 标志 BREAK 标志 行为
FALSE TRUE

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

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

这是推荐设置。

FALSE FALSE

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

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

这是默认设置。

TRUE TRUE

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

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

TRUE FALSE

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

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

表结构更改

本部分介绍如何修改现有 LTRC 复制正在进行的 SAP 源表结构。

向源表添加列

如需向源表添加新列,请按照以下步骤操作:

  1. 向源表中添加新列。完成此步骤后,复制状态将更改为 Load/Replication blocked

  2. 在 SLT 系统中,使用事务 LTRC 重置复制状态。如需详细了解 SAP 提供的关于如何重置复制状态的信息,请参阅 SAP 说明 2204955 - SLT 表处于“Load/Replication blocked”状态

  3. 添加、更新或删除源表中的条目。

  4. 验证 BigQuery 中的复制结果。

从源表中删除列

如需从源表中删除现有列,请按照以下步骤操作:

  1. 在您的 SLT 系统中,使用事务 LTRC 暂停复制。

  2. 从源表中删除列。完成此步骤后,现有的 SLT 触发器会被删除或更改为不一致状态。

  3. 在 BigQuery 中,从目标 BigQuery 表中删除该列。如需详细了解从现有表中删除列的步骤,请参阅 BigQuery 文档

  4. 在您的 SLT 系统中,使用事务 LTRC 恢复复制。

  5. 在 SLT 系统中,重新创建 SLT 触发器。如需详细了解 SAP 提供的关于重新创建 SLT 触发器的信息,请参阅 SAP 说明 2254376 - SLT 触发器处于不一致状态

  6. 如果复制状态为 Load /Replication blocked,则使用事务 LTRC 重置复制状态。如需详细了解 SAP 提供的关于如何重置复制状态的信息,请参阅 SAP 说明 2204955 - SLT 表处于“Load/Replication blocked”状态

  7. 清除日志(如果有)。

  8. 添加、更新或删除源表中的条目。

  9. 验证 BigQuery 中的复制结果。

更改现有列的数据类型

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

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

如需详细了解 BigQuery Connector for SAP 中的数据类型映射,请参阅数据类型映射

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

如需将现有列的数据类型更改为兼容的数据类型,请按照以下步骤操作:

  1. 在源系统中将数据类型更改为兼容的数据类型。完成此步骤后,现有的 SLT 触发器会被删除或更改为不一致状态。

  2. 在 SLT 系统中,重新创建 SLT 触发器。如需详细了解 SAP 提供的关于重新创建 SLT 触发器的信息,请参阅 SAP 说明 2254376 - SLT 触发器处于不一致状态

  3. 如果复制状态为 Load /Replication blocked,则使用事务 LTRC 重置复制状态。如需详细了解 SAP 提供的关于如何重置复制状态的信息,请参阅 SAP 说明 2204955 - SLT 表处于“Load/Replication blocked”状态

  4. 清除日志(如果有)。

  5. 添加、更新或删除源表中的条目。

  6. 验证 BigQuery 中的复制结果。

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

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

  1. 在您的 SLT 系统中,使用事务 LTRC 停止复制。
  2. 在 BigQuery 中,删除目标表。
  3. 更改源系统中的数据类型。
  4. 在您的 SLT 系统中,使用事务 LTRC 启动复制。

增强出口位置

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

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

函数 类别 方法 Spot 选项
更新一个字段的映射,例如外部字段名称、数据类型等。 /GOOG/CL_IUUC_REPL_RUNTIME CREATE_FLD_MAPPINGS /GOOG/ES_IUUC_REPL_RUNTIME /GOOG/UPDATE_FIELD_MAPPING
通过添加或移除字段来更新字段表的映射。 /GOOG/CL_IUUC_REPL_RUNTIME CREATE_FLD_MAPPINGS /GOOG/ES_IUUC_REPL_RUNTIME /GOOG/UPDATE_FIELD_MAPPINGS
在将字段转换为目标字段之前,更改源字段的值。 /GOOG/CL_IUUC_REPL_RUNTIME_BQ FILL_TARGET_RECORDS /GOOG/ES_IUUC_REPL_RUNTIME_BQ /GOOG/CHANGE_SOURCE_FIELD
在源字段转换为目标表中的目标字段后,更改目标字段的值。 /GOOG/CL_IUUC_REPL_RUNTIME_BQ FILL_TARGET_RECORDS /GOOG/ES_IUUC_REPL_RUNTIME_BQ /GOOG/FILL_TARGET_FIELD
向源表到目标表的转换期间,向目标表添加源表中不存在的字段。 /GOOG/CL_IUUC_REPL_RUNTIME_BQ FILL_TARGET_RECORDS /GOOG/ES_IUUC_REPL_RUNTIME_BQ /GOOG/FILL_EXTRA_FIELD
在创建 BigQuery 表之前准备 BigQuery 架构字段。 /GOOG/CL_GCP_CLIENT_BQ PREP_BQ_TABLE_SCHEMA /GOOG/ES_GCP_CLIENT_BQ /GOOG/PREPARE_SCHEMA_FIELD
如果出现 HTTP 错误,请在对 BigQuery API 进行 HTTP 调用后收集日志记录数据,以进行问题排查。 /GOOG/CL_GCP_CLIENT_BQ_SLT INSERT_TABLEDATA /GOOG/ES_GCP_CLIENT_BQ_SLT /GOOG/LOG_INSERT_ERROR

高级设置

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

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

如需修改高级设置参数,请完成以下步骤:

  1. 在 SAP GUI 中,输入以 /n 开头的 /GOOG/SLT_SETTINGS 事务:

    /n/GOOG/SLT_SETTINGS
  2. /GOOG/SLT_SETTINGS 事务的启动屏幕中,从设置表下拉菜单中选择参数

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

  4. 点击插入行图标。

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

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

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

  6. 点击保存

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

高级设置参数

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

参数名称 说明 默认值 有效值
CHUNK_SIZE_DEF 这是 BigQuery Connector for SAP 支持的默认数据块大小。
如果设置中未维护数据块大小,则使用默认数据块大小。
10,000 该值必须在 BigQuery 配额限制范围内。
PERC_REDUC_DEF 数据块大小百分比缩减。
如果已启用动态数据块大小,则数据块大小会按此百分比减小,直到达到理想的数据块大小并且数据块中的数据已成功转移到 BigQuery。
50 该值必须介于 1 到 99 之间。
CMD_EXEC_TRIES 对于未在 Google Cloud 上运行的 SAP 系统,则您在事务 SM69 中创建的操作系统命令无法从 Google 检索访问令牌,这是 BigQuery Connector for SAP 连接器重试令牌检索的次数。 5 可分配给此参数的最小值为 1。为方便至少一次重试,请设置 2 值。在分析令牌检索重试对复制性能的影响后,必须设置此参数的最大值。
CMD_SECS_DEFLT 如果您已启用令牌缓存,这是缓存令牌到期后的秒数。 3500 该值必须介于 1 到 3599 之间。