將 ServiceNow 資料載入 BigQuery
您可以使用 ServiceNow 連接器的 BigQuery 資料移轉服務,將資料從 ServiceNow 載入 BigQuery。您可以使用 BigQuery 資料移轉服務,安排週期性移轉工作,將 ServiceNow 的最新資料新增至 BigQuery。
限制
ServiceNow 資料移轉作業會受到下列限制:
- ServiceNow 連接器僅支援 ServiceNow 資料表 API。
- 我們不建議在同一個 ServiceNow 執行個體上同時執行資料轉移作業。這可能會導致 ServiceNow 執行個體負載過重,進而造成延遲或失敗。
- 建議您錯開轉移作業的開始時間,避免轉移作業重疊。
- 為提升資料移轉效能,建議每次移轉的資產數量不要超過 20 個。
- 週期性資料轉移作業之間的最短時間間隔為 15 分鐘。 預設的週期性轉移間隔為 24 小時。
- 單一移轉設定在特定時間只能支援一次資料移轉作業。如果排定在第一次資料移轉完成前執行第二次資料移轉,則系統只會完成第一次資料移轉,並略過任何與第一次移轉重疊的資料移轉。
- 為避免在單一轉移設定中略過轉移作業,建議您設定「重複頻率」,增加大型資料轉移作業之間的時間間隔。
- 如要透過網路連結進行資料移轉,請務必先定義靜態 IP 位址,再建立網路連結。
增量移轉限制
ServiceNow 增量移轉作業有下列限制:- 浮水印欄只能選擇
DATETIME欄。 - 只有含有有效浮水印欄的資產,才支援增量擷取。
- 浮水印資料欄中的值必須單調遞增。
- 增量轉移作業無法同步處理來源資料表中的刪除作業。
- 單一轉移設定只能支援增量或完整擷取。
- 第一次執行增量擷取後,就無法更新
asset清單中的物件。 - 首次執行增量擷取後,您就無法在轉移設定中變更寫入模式。
- 第一次執行增量擷取後,您就無法變更浮水印欄或主鍵。
- 目的地 BigQuery 資料表會使用提供的主鍵分群,並受分群資料表限制約束。
- 首次將現有轉移設定更新為增量擷取模式時,更新後的第一次資料轉移作業會轉移資料來源中的所有可用資料。後續的增量資料轉移作業只會轉移資料來源中的新資料列和更新資料列。
資料擷取選項
這些章節說明設定 ServiceNow 資料移轉作業時,可用的資料擷取選項。
完整或累加轉移
設定 ServiceNow 轉移作業時,請在轉移設定中選取「完整」或「增量」寫入偏好設定,指定資料載入 BigQuery 的方式。 預先發布版支援增量轉移。
您可以設定完整資料轉移,在每次資料轉移時,轉移 ServiceNow 資料集的所有資料。或者,您也可以設定增量資料移轉作業 (搶先版),只移轉上次資料移轉作業後變更的資料,而不是在每次資料移轉作業中載入整個資料集。如果為資料移轉作業選取「增量」Incremental,則必須指定「附加」Append或「插入或更新」Upsert寫入模式,定義在增量資料移轉期間,資料如何寫入 BigQuery。以下各節說明可用的寫入模式。
Upsert 寫入模式
新增或更新寫入模式會檢查主鍵,以更新資料列或在目的地資料表中插入新資料列。您可以指定主鍵,讓 ServiceNow 連接器判斷需要哪些變更,才能讓目的地資料表與來源資料表保持同步。如果在資料移轉期間,指定的主鍵出現在目標 BigQuery 資料表中,ServiceNow 連接器就會使用來源資料表中的新資料更新該資料列。如果資料轉移期間沒有主鍵,ServiceNow 連接器就會插入新列。
選取「新增或更新」模式時,必須選取浮水印欄和主鍵:
ServiceNow 連接器必須使用浮水印資料欄,才能追蹤來源資料表的變更。
選取每次修改資料列時都會更新的水印資料欄。建議使用與
UPDATED_AT或LAST_MODIFIED資料欄類似的資料欄。
主鍵可以是資料表上的一或多個資料欄,ServiceNow 連接器必須使用這些資料欄,判斷是否需要插入或更新資料列。
選取包含非空值的資料欄,這些值在資料表的所有資料列中都是不重複的。建議您使用包含系統產生的 ID、不重複的參照代碼 (例如自動遞增的 ID) 或不可變動的時間序列 ID 的資料欄。
為避免資料遺失或損毀,您選取的主鍵資料欄必須具有不重複的值。如果您對所選主鍵欄位的唯一性有疑慮,建議改用完整擷取。
增量擷取行為
在資料來源中變更資料表結構定義時,這些資料表的增量資料移轉作業會以以下方式反映在 BigQuery 中:
| 資料來源異動 | 增量擷取行為 |
|---|---|
| 新增資料欄 | 目的地 BigQuery 資料表會新增資料欄。 這個資料欄的所有先前記錄都會有空值。 |
| 刪除資料欄 | 刪除的資料欄仍會保留在目的地 BigQuery 資料表中。系統會在新項目中填入空值。 |
| 變更資料欄中的資料類型 | 連接器僅支援
ALTER COLUMN DDL 陳述式支援的資料類型轉換。如果轉換成其他資料類型,資料轉移作業就會失敗。
如果遇到任何問題,建議建立新的轉移設定。 |
| 重新命名資料欄 | 原始資料欄會保留在目的地 BigQuery 資料表中,而目的地資料表會新增一個名稱更新的資料欄。 |
事前準備
建立 ServiceNow 資料移轉作業前,請先為 ServiceNow 和 BigQuery 執行下列操作。
ServiceNow 必要條件
- 如要存取 ServiceNow API,請建立 OAuth 憑證。
您必須在 ServiceNow 執行個體中啟用下列所有 ServiceNow 應用程式:
如要開始轉移 ServiceNow,您必須具備正確的憑證,才能連線至 ServiceNow 執行個體。
- 如要取得 ServiceNow 開發人員執行個體的憑證,請登入 ServiceNow 開發人員入口網站。你可以使用「管理執行個體密碼」頁面中列出的使用者名稱和密碼。如要瞭解如何重設 ServiceNow 密碼,請參閱「Password Reset」(密碼重設)
- 如要取得 ServiceNow 實際工作環境或子實際工作環境執行個體的憑證,請與 ServiceNow 客戶管理員聯絡,要求提供使用者名稱和密碼。
BigQuery 必要條件
- 完成啟用 BigQuery 資料移轉服務的一切必要動作。
- 建立 BigQuery 資料集來儲存資料。
- 如要為 Pub/Sub 設定移轉作業執行通知,請確認您擁有
pubsub.topics.setIamPolicy身分與存取權管理 (IAM) 權限。如果您只設定電子郵件通知,則不需要 Pub/Sub 權限。詳情請參閱 BigQuery 資料移轉服務執行通知。
必要的 BigQuery 角色
如要取得建立 BigQuery 資料移轉服務資料移轉作業所需的權限,請要求系統管理員在專案中授予您 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備建立 BigQuery 資料移轉服務資料移轉作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要建立 BigQuery 資料移轉服務資料移轉作業,您必須具備下列權限:
-
BigQuery 資料移轉服務權限:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
BigQuery 權限:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
詳情請參閱「授予 bigquery.admin 存取權」。
設定 ServiceNow 資料移轉作業
如要將 ServiceNow 資料新增至 BigQuery,請使用下列任一方法設定移轉設定:
控制台
前往 Google Cloud 控制台的「資料移轉」頁面。
按一下 「建立轉移作業」。
在「Source type」(來源類型) 部分,「Source」(來源) 請選取「ServiceNow」。
在「Data source details」(資料來源詳細資料) 部分執行下列操作:
- (選用) 在「Network attachment」(網路連結) 部分,從下拉式選單中選取網路連結,或是點選「Create Network Attachment」(建立網路連結)。
- 選取網路連結,將這項資料移轉作業設定為使用單一且一致的 IP 位址。如果 ServiceNow 執行個體設為只接受來自特定 IP 位址的流量,可以使用這個選項。
- 如要進一步瞭解如何建立網路連結,請參閱「使用網路連結設定連線」
- 如要進一步瞭解如何在 ServiceNow 定義 IP 位址,請參閱「定義允許的 ServiceNow 內部 IP 位址」
- 在「Instance ID」(執行個體 ID) 輸入 ServiceNow 執行個體 ID。您可以從 ServiceNow 網址取得這組 ID,例如
https://INSTANCE_ID.service-now.com。 - (選用) 在「ServiceNow Cloud Type」(ServiceNow 雲端類型) 部分,選取 ServiceNow 帳戶的雲端類型:
- 如果 ServiceNow 執行個體網址符合
https://INSTANCE_ID.service-now.com模式,請選取「Commercial」(商業用途)。這是預設值。 - 如果 ServiceNow 執行個體網址符合
https://INSTANCE_ID.servicenowservices.com模式,請選取「Government Community Cloud (GCC)」(政府機構社群雲端 (GCC))。
- 如果 ServiceNow 執行個體網址符合
- 在「Username」(使用者名稱) 輸入要用於連線的 ServiceNow 使用者名稱。
- 在「Password」(密碼) 輸入 ServiceNow 密碼。
- 在「Client ID」(用戶端 ID) 輸入 OAuth 憑證中的用戶端 ID。如要產生憑證,請參閱建立 OAuth 憑證的相關說明。
- 在「Client secret」(用戶端密鑰) 輸入 OAuth 憑證中的用戶端密鑰。
- 如要啟用舊版對應,請選取「true」 (預設),使用舊版資料類型對應。選取「false」即可使用更新後的資料類型對應。如要進一步瞭解資料類型對應更新,請參閱「2027 年 3 月 16 日」。
- 在「Ingestion type」(擷取類型) 部分,選取「Full」(完整) 或「Incremental」(增量)。
- 在「ServiceNow tables to transfer」(要移轉的 ServiceNow 資料表) 部分點選「Browse」(瀏覽):
- 選取要轉移至 BigQuery 目的地資料集的所有物件。您也可以在這個欄位手動輸入要移轉資料的物件。
- 如果已選取「Upsert」(新增或更新) 做為增量寫入模式,則必須選取一個欄做為浮水印欄,然後選取一或多個欄做為主鍵。
- 在「Value type」(值類型) 選取下列其中一個選項:
- 如要移轉資料庫中儲存的資料值,請選取「Actual」(實際)。
- 如要移轉資料欄的顯示值,請選取「Display」(顯示)。
- (選用) 在「Network attachment」(網路連結) 部分,從下拉式選單中選取網路連結,或是點選「Create Network Attachment」(建立網路連結)。
在「Destination settings」(目的地設定) 部分,「Dataset」(資料集) 請選取您為了儲存資料而建立的資料集。
在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入資料移轉作業名稱。
在「Schedule options」(排程選項) 部分執行下列操作:
- 在「Repeat frequency」(重複頻率) 清單選取選項,指定這項資料移轉作業的執行頻率。如要指定自訂重複頻率,請選取「Custom」(自訂)。如果選取「On-demand」(隨選),這項資料移轉作業會在您手動觸發後執行。
- 視情況選取「Start now」(立即開始) 或「Start at set time」(在所設時間開始執行),並提供開始日期和執行時間。
選用:在「Notification options」(通知選項) 專區,執行下列操作:
- 如要啟用電子郵件通知,請點選「Email notification」(電子郵件通知) 切換按鈕。啟用這個選項之後,若移轉失敗,移轉作業管理員就會收到電子郵件通知。
- 如要針對這項資料移轉作業啟用 Pub/Sub 移轉作業執行通知,請點選「Pub/Sub notifications」(Pub/Sub 通知) 切換按鈕。您可以選取主題名稱,也可以點選「Create a topic」(建立主題) 來建立主題。
按一下「儲存」。
bq
輸入 bq mk 指令,並加上移轉建立標記 --transfer_config:
bq mk
--transfer_config
--project_id=PROJECT_ID
--data_source=DATA_SOURCE
--display_name=DISPLAY_NAME
--target_dataset=DATASET
--params='PARAMETERS'
更改下列內容:
PROJECT_ID(選用):您的 Google Cloud 專案 ID。 如未指定專案 ID,系統會使用預設專案。DATA_SOURCE:資料來源 (例如servicenow)。DISPLAY_NAME:移轉設定的顯示名稱。資料移轉作業名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。DATASET:移轉設定的目標資料集。PARAMETERS:已建立移轉設定的 JSON 格式參數。例如:--params='{"param":"param_value"}'。以下是 ServiceNow 資料移轉的參數:ServiceNow 參數 必要或選填 說明 connector.networkAttachment選用 用於確保連線至 ServiceNow 執行個體的網路附件名稱。 connector.instanceId必填 ServiceNow 執行個體的執行個體 ID connector.authentication.username必填 使用者的 ServiceNow 執行個體使用者名稱。 connector.authentication.password必填 ServiceNow 執行個體使用者的密碼。 connector.authentication.oauth.clientId必填 用於透過 ServiceNow 執行個體進行 OAuth 驗證的用戶端 ID。 connector.authentication.oauth.clientSecret必填 用於透過 ServiceNow 執行個體進行 OAuth 驗證的用戶端密鑰。 connector.instanceCloudType選用 指定 ServiceNow 帳戶的雲端類型。 支援的值如下: - 如果 ServiceNow 執行個體網址符合
https://INSTANCE_ID.service-now.com模式,請選取「COMMERCIAL_CLOUD」 - 如果 ServiceNow 執行個體網址符合
https://INSTANCE_ID.servicenowservices.com模式,請選取「Government Community Cloud (GCC)」(政府機構社群雲端 (GCC))GOVERNMENT_COMMUNITY_CLOUD。
ingestionType選用 定義從來源 ServiceNow 服務轉移資料至目的地的轉移方法,決定要重新載入完整資料集,還是執行有效率的增量更新。 writeMode選用 如果使用增量擷取,請指定增量擷取的同步策略,將資料新增或更新目的地資料表 (如果資料表已存在,則更新資料表;如果資料表不存在,則插入資料表)。如要進行增量轉移,這個欄位為必填。 assets必填 要從 ServiceNow 移轉的 ServiceNow 資料表名稱清單。 watermarkColumns選用 如果使用遞增式擷取,則來源資料表欄位 (通常是日期時間) 會用於追蹤上次成功同步的點,讓連接器有效率地查詢及轉移自該特定時間以來建立或修改的記錄。如要進行增量轉移,這個欄位為必填。 primaryKeys選用 如果使用增量擷取,則為用來明確識別來源資料表中每個資料列的專屬資料欄或資料欄組合。如要進行增量轉移,這個欄位為必填。 valueType選用 控制 ServiceNow 的特定資料類型如何對應至 BigQuery 資料類型。 connector.legacyMapping必填 設為 true(預設值) 即可使用舊版資料類型對應。如要使用更新後的資料類型對應,請將這個值設為false。如果您要進行增量轉移,這個值必須是false。如要進一步瞭解資料類型對應更新,請參閱「2027 年 3 月 16 日」。在增量轉移期間指定多項資產時,
watermarkColumns和primaryKeys欄位的值會對應至assets欄位中的值位置。請確保所有相關設定清單中的資料表和對應資料欄順序一致。舉例來說,下列指令會在預設專案中建立 ServiceNow 資料移轉作業,並提供所有必要參數:
bq mk --transfer_config --target_dataset=mydataset --data_source=servicenow --display_name='My Transfer' --params='{"connector.authentication.oauth.clientId": "1234567890", "connector.authentication.oauth.clientSecret":"ABC12345", "connector.authentication.username":"user1", "connector.authentication.password":"abcdef1234", "connector.instanceId":"dev-instance", "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1"}'下列指令會在預設專案中建立增量 ServiceNow 資料移轉作業,並使用
UPSERT寫入模式。bq mk --transfer_config --target_dataset=mydataset --data_source=servicenow --display_name='My Transfer' --params='{"assets": ["incident", "change_request"], "connector.authentication.oauth.clientId": "1234567890", "connector.authentication.oauth.clientSecret":"ABC12345", "connector.authentication.username":"user1", "connector.authentication.password":"abcdef1234", "connector.instanceId":"dev-instance", "ingestionType":"incremental", "writeMode":"WRITE_MODE_UPSERT", "watermarkColumns":["sys_updated_on","sys_updated_on"], "primaryKeys":[["sys_id"], ["sys_id"]]}'- 如果 ServiceNow 執行個體網址符合
API
請使用 projects.locations.transferConfigs.create 方法,並提供 TransferConfig 資源的執行個體。
如要在正常時間表以外手動執行資料轉移作業,可以啟動回填作業。
資料類型對應
下表說明 ServiceNow 資料轉移作業中的資料類型對應方式:
| ServiceNow 資料類型 | BigQuery 資料類型 | 更新的 BigQuery 資料類型 |
|---|---|---|
decimal |
FLOAT64 |
|
integer |
INTEGER |
|
boolean |
BOOLEAN |
|
glide_date |
DATE |
|
glide_date_time |
DATETIME |
|
glide_list |
STRING |
ARRAY |
glide_time |
INT64 |
|
reference |
STRING |
|
currency |
STRING |
|
sys_class_name |
STRING |
|
domain_id |
STRING |
|
domain_path |
STRING |
|
guid |
STRING |
|
translated_html |
STRING |
|
journal |
STRING |
|
string |
STRING |
|
list |
STRING |
ARRAY |
排解轉移程序的相關問題
以下各節將詳細說明設定 ServiceNow 資料移轉時的常見問題。
詳情請參閱「排解移轉設定問題」。
啟用 ServiceNow 導致轉移失敗
如果未在 ServiceNow 中啟用「採購」、「產品目錄」或「合約管理」應用程式,就會發生問題,導致資料移轉失敗。如要修正這個問題,請啟用下列三個應用程式:
轉移作業執行期間發生問題
發生問題,導致系統無法如預期建立轉移作業。如要解決這個問題,請按照下列步驟操作:
- 確認 ServiceNow 帳戶憑證 (例如「使用者名稱」、「密碼」、「用戶端 ID」和「用戶端密鑰」值) 有效。
- 確認執行個體 ID 是 ServiceNow 執行個體的有效 ID。
其他錯誤
如要瞭解 ServiceNow 資料移轉期間發生的其他錯誤,請參閱「ServiceNow 移轉問題」一文。
定價
如要瞭解 ServiceNow 移轉作業的定價資訊,請參閱「資料移轉服務定價」。
後續步驟
- 如需 BigQuery 資料移轉服務的總覽,請參閱 BigQuery 資料移轉服務簡介。
- 如要瞭解如何使用移轉作業,包括取得移轉設定、列出移轉設定以及查看移轉設定的執行記錄,請參閱使用移轉功能一文。
- 瞭解如何透過跨雲端作業載入資料。