排解 SAP 專用的 BigQuery Toolkit 問題

這份文件適用於 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

原因:傳遞至資料載入類別 /GOOG/CL_BQTR_DATA_LOAD 的大量移轉金鑰,未保留在 BigQuery 資料移轉模組中。

解決方法:如要解決這個問題,請使用交易代碼 /GOOG/BQTR_SETTINGS 維護大量轉移金鑰。詳情請參閱「設定 BigQuery 資料移轉模組」。

/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 資料移轉模組無法從 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,其中包含記錄前五個欄位的內容。如果資料表有五個或更少的欄位,則所有欄位的內容都會納入 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 工作負載中,指定服務帳戶沒有存取 BigQuery API 的必要權限。/GOOG/CLIENT_KEY

解決方法:如要解決這個問題,請完成下列步驟:

  1. 在 SAP GUI 中,輸入 /GOOG/BQTR_SETTINGS 交易,並在前面加上 /n

    /n/GOOG/BQTR_SETTINGS
  2. 針對交易 LTRC 中失敗的大量轉移 ID,請記下「Google Cloud Key Name」欄位的值。

  3. 輸入交易 SM30,然後開啟資料表 /GOOG/CLIENT_KEY

  4. 針對您在先前步驟中記下的「Google Cloud 金鑰名稱」值,請記下「服務帳戶名稱」欄位指定的值。

  5. 前往 Google Cloud 控制台的「Identity and Access Management」(身分與存取權管理) 服務帳戶頁面。

    前往「Service accounts」(服務帳戶)

  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 中,輸入 /GOOG/BQTR_SETTINGS 交易,並在前面加上 /n

    /n/GOOG/BQTR_SETTINGS
  2. 針對交易 LTRC 中失敗的大量轉移 ID,請記下「Google Cloud Key Name」欄位的值。

  3. 輸入交易 SM30,然後開啟資料表 /GOOG/SERVIC_MAP

  4. 針對您在上一個步驟中記下的「Google Cloud 金鑰名稱」值,請記下 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 版 Google Cloud SDK 用於連線至 Google Cloud API 的 RFC 目的地中,您為「目標主機」欄位指定的值與 Cloud DNS 中的任何 DNS 名稱都不相符。

解決方法:如要解決這個問題,請完成下列步驟:

  1. 在 SAP GUI 中,輸入交易代碼 /GOOG/BQTR_SETTINGS

  2. 輸入收到這項錯誤訊息的大量轉移金鑰。

  3. 按一下「執行」圖示。記下「Google Cloud Key Name」(Google Cloud 金鑰名稱) 欄中的值。

  4. 輸入交易 SM30,然後在顯示模式中開啟資料表 /GOOG/CLIENT_KEY

  5. 使用您在上一個步驟中記下的「Google Cloud 金鑰名稱」,搜尋 /GOOG/SERVIC_MAP 表格,然後記下指定的 RFC 目的地名稱。

  6. 輸入交易代碼 SM59

  7. 針對用於連線至 BigQuery 和 IAM API 的 RFC 目的地,請記下為「目標主機」欄位指定的值。

  8. 前往 Google Cloud 控制台的「Network services Cloud DNS」(網路服務 Cloud DNS) 頁面。

    前往 Cloud DNS

  9. 按一下包含 Private Service Connect 端點 DNS 記錄的私人區域,您已建立這些端點,允許 BigQuery Toolkit for SAP 私下連線至 BigQuery 和 IAM API。

  10. 請確認您在先前步驟中記下的每個目標主機值,都有相符的「DNS name」(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 中,輸入 /GOOG/BQTR_SETTINGS 交易,並在前面加上 /n

    /n/GOOG/BQTR_SETTINGS
  2. 輸入收到這項錯誤訊息的大量轉移金鑰。

  3. 按一下「執行」圖示。記下「Google Cloud Key Name」(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 資料移轉模組中的複製設定。

解決方法:請嘗試下列解決方法:

  • 確認資料集已在 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 的區塊錯誤訊息,以及該區塊的開始和結束索引。

如果未在交易 BREAK 中設定 /GOOG/BQTR_SETTINGS 標記,系統就會顯示這則錯誤訊息。如果未設定 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 相關的問題。

如果問題源自 SAP 管理的元件,例如 Operational Data Provisioning (ODP)、Data Migration Server (DMIS)、Core Data Services (CDS)、Internet Communication Manager (ICM) 或第三方軟體, Google Cloud 客戶服務 Google Cloud 會盡力找出根本原因。如要解決這些問題,請與相關供應商或支援服務供應商聯絡。

如需協助解決 BigQuery Toolkit for SAP 的問題,請收集所有可用的診斷資訊,然後與 Cloud Customer Care 聯絡。

如要進一步瞭解如何與 Cloud Customer Care 聯絡,請參閱「取得 SAP 支援 Google Cloud」。