排查 BigQuery Toolkit for SAP 问题

本文档为 SAP 管理员、SAP 开发者或其他人员介绍如何排查 BigQuery Toolkit for SAP 的问题。

常见问题

本部分列出了特定于 BigQuery Toolkit for SAP 的常见错误消息及其解决方法。

如需了解如何排查 ABAP SDK for Google Cloud 的一般问题,请参阅排查本地版本或任何云版本的 ABAP SDK for Google Cloud 的问题

/GOOG/BQTR: Mass Transfer Key is required. Use Tcode /GOOG/BQTR_SETTINGS to maintain

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: Mass Transfer Key is required. Use Tcode /GOOG/BQTR_SETTINGS to maintain

原因:在调用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 时,未在 IV_MASS_TR_KEY 参数中提供大规模转移密钥。

解决方法:如需解决此问题,请传递保存在事务 /GOOG/BQTR_SETTINGS 中的大规模转移密钥。如需了解详情,请参阅调用数据复制方法

/GOOG/BQTR: Data Source is required. Pass a dictionary object

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: Data Source is required. Pass a dictionary object

原因:在调用数据加载类 /GOOG/CL_BQTR_DATA_LOAD 时,IV_DATA_SOURCE 参数中未提供数据源。

解决方法:如需解决此问题,请将字典对象(例如 CDS 视图或表格)的名称作为数据源传递。如需了解详情,请参阅调用数据复制方法

/GOOG/BQTR: Mass Transfer Key MASS_TRANSFER_KEY not found. Use Tcode /GOOG/BQTR_SETTINGS to maintain

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: Mass Transfer Key MASS_TRANSFER_KEY not found. Use Tcode /GOOG/BQTR_SETTINGS to maintain

原因:BigQuery Data Transfer 模块未维护传递到数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的批量转移密钥。

解决方法:如需解决此问题,请使用事务代码 /GOOG/BQTR_SETTINGS 维护大规模转移密钥。如需了解详情,请参阅配置 BigQuery Data Transfer 模块

/GOOG/BQTR: DATA_SOURCE does not exist in data dictionary

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: DATA_SOURCE does not exist in data dictionary

原因:传递给数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的数据源不是有效的数据字典对象。

解决方法:如需解决此问题,请传递数据字典中存在的数据源的名称。仅支持表、字典视图和 CDS 视图。

/GOOG/BQTR: Nested Tables are not supported

问题:您收到错误消息 /GOOG/BQTR: Nested Tables are not supported

原因:作为输入传递给数据加载类 /GOOG/CL_BQTR_DATA_LOAD 的字典对象不是扁平式结构。

解决方法:如需解决此问题,请使用具有扁平式结构的字典对象。

/GOOG/BQTR: Error creating target table definition

问题:您收到错误消息 /GOOG/BQTR: Error creating target table definition

原因:BigQuery Toolkit for SAP 无法为给定数据源创建目标表定义。

解决方法:如需解决此问题,请验证输入源是否是包含一个或多个字段的有效字典对象。

/GOOG/BQTR: 400 - Table creation failed in BQ. Could not pull the table metadata from BQ

问题:您收到错误消息 /GOOG/BQTR: 400 - Table creation failed in BQ. Could not pull the table metadata from BQ

原因:如果 BigQuery Data Transfer 模块无法从 BigQuery 获取表定义,就会引发此错误。这可能是由于 BigQuery 中的临时服务器过载造成的。

解决方案:如需解决此问题,请重启 BigQuery 数据加载操作。

/GOOG/BQTR: 400 - Scope must be provided

问题:您收到错误消息 /GOOG/BQTR: 400 - Scope must be provided

原因:在客户端密钥配置中,Google Cloud 范围为空。

解决方法:如需解决此问题,请针对您正在使用的客户端密钥配置,在 Google Cloud 范围字段中指定相应的范围,例如 https://www.googleapis.com/auth/cloud-platform

/GOOG/BQTR: 400 - Schema mismatch for table TABLE_NAME

问题:您收到错误消息 /GOOG/BQTR: 400 - Schema mismatch for table TABLE_NAME. Please delete the table from BigQuery and try again.

原因:对现有 BigQuery 表输入了以下某项更改:

  • 删除字段
  • 重命名字段
  • 字段的数据类型的更改
  • 表的分区类型的更改

无法将上述更改应用于现有 BigQuery 表。

解决方法:如果您需要更改现有表中的这些字段特性中的任何特性,则需要删除现有表并将记录重新加载到新表中。

与无效数据相关的错误消息

问题:在应用日志中,您会收到错误消息:/GOOG/BQTR/: DESCRIPTION_OF_INVALID_DATA error occurred in FIELD_NAME in record RECORD_KEYS

原因:在将任何包含无效数据的记录插入目标表时,BigQuery 会发出此错误消息。数据无效的原因可能是以下之一:

  • 特定记录的字段中的数据与 BigQuery 中的数据类型不兼容。例如,BigQuery 在以下情况下会生成错误消息:
    • DATEINTEGERBOOLEAN 类型的字段中保存字符串。
    • 在类型为 DATE 的字段中保存无效日期 (00/00/0000)。
  • 在事务 /GOOG/BQTR_SETTINGS 中的字段映射中保存不正确的目标数据类型。

BigQuery 会为包含无效数据字段的每条记录发出错误消息。

解决方法:分析错误消息 DESCRIPTION_OF_INVALID_DATA,以了解无效数据的可能原因。如需识别包含无效数据字段的记录,请使用 RECORD_KEYS,其中包含记录的前五个字段的内容。如果表包含的字段不超过 5 个,则所有字段的内容都将包含在 RECORD_KEYS 中。

  • 如果字段中的数据与 BigQuery 中的数据类型不兼容,请更正源表中的数据。
  • 如果错误是由于数据与数据类型不匹配所致,请使用事务 /GOOG/BQTR_SETTINGS 指定适当的数据类型。

/GOOG/BQTR: 403 - Access Denied: Dataset PROJECT_ID:DATASET_NAME: Permission bigquery.tables.created denied on dataset

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: 403 - Access Denied: Dataset PROJECT_ID:DATASET_NAME: Permission bigquery.tables.created denied on dataset

原因:对于在 Google Cloud上运行的 SAP 工作负载,在表 /GOOG/CLIENT_KEY 中,指定的服务账号没有访问 BigQuery API 所需的权限。

解决方法:要解决此问题,请按以下步骤操作:

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

    /n/GOOG/BQTR_SETTINGS
  2. 对于在事务 LTRC 中失败的批量传输 ID,请记下 Google Cloud Key Name(Google Cloud 键名称)字段的值。

  3. 输入事务 SM30,然后打开表 /GOOG/CLIENT_KEY

  4. 对于您在前面的步骤中记下的 Google Cloud Key Name 值,请记下为 Service Account Name 字段指定的值。

  5. 在 Google Cloud 控制台中,前往 Identity and Access Management 服务账号页面。

    转到“服务账号”

  6. 选择您在前面的步骤中记下的服务账号。

  7. 确保服务账号具有 BigQuery Toolkit for SAP 访问 BigQuery 所需的 IAM 角色,如设置身份验证中所述。

  8. 重新运行复制。

/GOOG/BQTR: 404 - Not Found

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: 404 - Not Found

原因:在 SAP SDK for Google Cloud 用于连接到 Google Cloud API 的 RFC 目标中,路径前缀不正确。

解决方法:要解决此问题,请按以下步骤操作:

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

    /n/GOOG/BQTR_SETTINGS
  2. 对于在事务 LTRC 中失败的批量传输 ID,请记下 Google Cloud Key Name(Google Cloud 键名称)字段的值。

  3. 输入事务 SM30,然后打开表 /GOOG/SERVIC_MAP

  4. 对于您在前面的步骤中记下的 Google Cloud Key Name 值,请记下 RFC 目标名称。

  5. 输入 SM59 事务,然后完成以下步骤:

    • 对于连接到 BigQuery 的 RFC 目标,请确保路径前缀字段值为 /bigquery/v2/
    • 对于连接到 IAM 的 RFC 目标,请确保路径前缀字段值为 /v1/
  6. 重新运行复制。

/GOOG/BQTR: 404 - Table PROJECT_ID:DATASET_NAME.TABLE_NAME not found

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: 404 - Table PROJECT_ID:DATASET_NAME.TABLE_NAME not found

原因:在 ABAP SDK for Google Cloud 用于连接到 Google Cloud API 的 RFC 目标中,您为目标主机字段指定的值与 Cloud DNS 中的任何 DNS 名称都不匹配。

解决方法:要解决此问题,请按以下步骤操作:

  1. 在 SAP GUI 中,输入事务代码 /GOOG/BQTR_SETTINGS

  2. 输入您收到此错误的大规模转移密钥。

  3. 点击执行图标。记下 Google Cloud 密钥名称列中的值。

  4. 输入事务 SM30,然后在显示模式下打开表 /GOOG/CLIENT_KEY

  5. 使用您在前面的步骤中记下的 Google Cloud 密钥名称搜索表 /GOOG/SERVIC_MAP,然后记下指定的 RFC 目标名称。

  6. 输入事务代码 SM59

  7. 对于用于连接到 BigQuery 和 IAM API 的 RFC 目标,请记下为 Target Host 字段指定的值。

  8. 在 Google Cloud 控制台中,前往网络服务 Cloud DNS 页面。

    转到 Cloud DNS

  9. 点击包含 Private Service Connect 端点的 DNS 记录的专用可用区,您创建的这些端点允许 BigQuery Toolkit for SAP 以私密方式连接到 BigQuery 和 IAM API。

  10. 确保您在前面的步骤中记下的每个目标主机值都有一条 DNS 记录,其中包含匹配的 DNS 名称

  11. 重新运行复制。

/GOOG/BQTR: 404 - Not Found Requested entity was not found

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: 404 - Not Found Requested entity was not found

原因:对于在 Google Cloud上运行的工作负载,客户端密钥表 /GOOG/CLIENT_KEY 中使用的服务账号无效。

解决方法:要解决此问题,请按以下步骤操作:

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

    /n/GOOG/BQTR_SETTINGS
  2. 输入您收到此错误的大规模转移密钥。

  3. 点击执行图标。记下 Google Cloud 密钥名称列中的值。

  4. 输入事务 SM30,然后打开表 /GOOG/CLIENT_KEY

  5. 对于服务账号名称字段,请确保指定的值是针对 BigQuery Toolkit for SAP 创建的服务账号的邮箱。

  6. 重新运行复制。

/GOOG/BQTR: 413 - Request Entity Too Large

问题:数据转移失败,并显示错误消息 /GOOG/BQTR: 413 - Request Entity Too Large

原因:当 BigQuery Toolkit for SAP 发送的区块的字节大小超过 BigQuery 接受的 HTTP 请求的最大字节大小时,就可能出现此问题。如果表记录的大小或记录包含的数据量导致区块的字节大小超过 BigQuery 限制,则可能会出现此问题。

解决方法:减小 BigQuery Toolkit for SAP 为您的表发送的区块的大小。您可以通过运行事务 /GOOG/BQTR_SETTINGS 来调整数据块大小,也可以启用动态数据块大小以自动调整数据块大小。有关详情,请参阅:

/GOOG/BQTR: 404 - Not found: Dataset DATASET_NAME

问题:尝试验证 Google Cloud 安全性或将数据加载到 BigQuery 表时,您收到消息 /GOOG/BQTR: 404 - Not found: Dataset DATASET_NAME

原因:此问题可能由以下情况引起:

  • 尚未创建 BigQuery 数据集。
  • 数据集名称未在大规模转移作业配置中正确指定。
  • 需要激活 BigQuery Data Transfer 模块中的复制配置。

解决方法:尝试以下解决方法:

  • 确认已在 BigQuery 中创建数据集。
  • 检查大规模转移作业配置中的数据集名称是否与 BigQuery 中的数据集名称相同。

/GOOG/BQTR : Unable to interpret VALUE as a BOOLEAN

问题:加载或复制记录失败,并显示消息 /GOOG/BQTR : Unable to interpret VALUE as a BOOLEAN

原因:此问题是由源表中的字段映射到 BigQuery 数据类型 BOOLEAN,但源字段中的数据无法解析为布尔值导致的。

解决方法:如需解决此问题,请使用事务 /GOOG/BQTR_SETTINGS 更改源字段映射到的数据类型,或移除数据类型映射并接受默认数据类型。

/GOOG/BQTR: Failed to convert field SAP_FIELD_NAME value to field BIGQUERY_FIELD_NAME: ERROR_DETAILS

问题:加载或复制记录失败,并显示消息 /GOOG/BQTR: Failed to convert field SAP_FIELD_NAME value to field BIGQUERY_FIELD_NAME: ERROR_DETAILS

原因:源字段包含无效的值,或者源字段映射到的 BigQuery 数据类型不是源字段包含的数据的有效映射。

解决方法:要解决此问题,请使用事务 /GOOG/BQTR_SETTINGS 更改源字段映射到的数据类型,或移除数据类型映射并接受数据类型的默认映射。

/GOOG/BQTR: DESCRIPTION_OF_ISSUE error occurred in chunk ranging START_INDEX_OF_FAILED_CHUNK - END_INDEX_OF_FAILED_CHUNK

问题:数据块的复制失败,并显示错误消息 /GOOG/BQTR: DESCRIPTION_OF_ISSUE error occurred in chunk ranging START_INDEX_OF_FAILED_CHUNK - END_INDEX_OF_FAILED_CHUNK

原因:这可能有多个原因,包括 Invalid JSON PayloadQuota ExceededRequest Entity Too LargeHTTP Communication Failure。无法复制到 BigQuery 的数据块的错误消息会显示该数据块的起始和结束索引。

如果您尚未在事务 /GOOG/BQTR_SETTINGS 中设置 BREAK 标志,则会显示此错误消息。如果未设置 BREAK 标志,则即使发生错误,BigQuery Toolkit for SAP 也会通过发送下一个数据块来继续向 BigQuery 发送记录。

解决方法:尝试以下解决方法:

  • 对于 Quota ExceededRequest Entity Too LargeHTTP Communication Failure 问题,请按照针对 /GOOG/BQTR: 413 - 请求实体过大的问题排查步骤操作。
  • 停止当前加载,从 BigQuery 中删除目标表,然后重启全新加载。
  • 如需停止向 BigQuery 发送数据,并在遇到错误数据块时终止复制作业,请设置 BREAK 标志(建议在生产环境中使用)。

如需了解如何配置 BREAK 标志,请参阅指定表创建和其他常规属性

通过社区获取支持

Cloud 论坛上提出问题并与社区讨论 BigQuery Toolkit for SAP。

获取支持

Google Cloud 可为与 BigQuery Toolkit for SAP 的安装、配置、操作和维护相关的问题和疑问提供支持。

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

对于 SAP 提供的功能(例如操作数据预配 [ODP] 和 SAP Landscape Transformation [SLT]),请与 SAP 支持联系以获取帮助。

如果您在解决 BigQuery Toolkit for SAP 问题时需要帮助,请收集所有可用的诊断信息,并与 Cloud Customer Care 联系。

如需详细了解如何与 Cloud Customer Care 联系,请参阅获取 Google Cloud上的 SAP 支持