排查 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

原因:在 ABAP 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 用于连接到 API 的 RFC 目标中,您为 Target Host 字段指定的值与 Cloud DNS 中的任何 DNS 名称都不匹配。 Google Cloud

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

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

  2. 输入收到此错误的批量传输密钥。

  3. 点击执行图标。记下 Google Cloud Key Name 列中的值。

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

  5. 使用您在前面的步骤中记下的 Google Cloud Key Name 搜索表 /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 Key Name 列中的值。

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

  5. 对于 Service Account Name 字段,请确保指定的值是为 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

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

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

  • 尚未创建 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 - Request Entity Too Large 的问题排查步骤操作。
  • 停止当前加载,从 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 团队联系,请参阅获取 SAP on Google Cloud 支持 Google Cloud