BigQuery에 ServiceNow 데이터 로드
ServiceNow용 BigQuery Data Transfer Service 커넥터를 사용하여 ServiceNow에서 BigQuery로 데이터를 로드할 수 있습니다. BigQuery Data Transfer Service를 사용하면 ServiceNow의 최신 데이터를 BigQuery에 추가하는 반복 전송 작업을 예약할 수 있습니다.
제한사항
ServiceNow 데이터 전송에는 다음과 같은 제한사항이 적용됩니다.
- ServiceNow 커넥터는 ServiceNow 테이블 API만 지원합니다.
- 같은 ServiceNow 인스턴스에서 동시 데이터 전송을 실행하지 않는 것이 좋습니다. 이로 인해 ServiceNow 인스턴스의 부하로 인해 지연 또는 실패가 발생할 수 있습니다.
- 전송 실행이 중복되지 않도록 전송 시작 시간을 분리하는 것이 좋습니다.
- 데이터 전송 성능을 개선하려면 데이터 전송당 애셋 수를 20개로 제한하는 것이 좋습니다.
- 반복 데이터 전송 사이의 최소 간격은 15분입니다. 반복 전송의 기본 간격은 24시간입니다.
- 단일 전송 구성은 지정된 시간에 하나의 데이터 전송 실행만 지원할 수 있습니다. 첫 번째 전송이 완료되기 전에 두 번째 데이터 전송이 실행되도록 예약된 경우 첫 번째 데이터 전송만 완료되고 첫 번째 전송과 겹치는 다른 데이터 전송은 건너뜁니다.
- 단일 전송 구성 내에서 전송이 건너뛰는 것을 방지하려면 반복 빈도를 구성하여 대량 데이터 전송 간의 시간을 늘리는 것이 좋습니다.
- 이 데이터 전송과 함께 네트워크 연결을 사용하려면 먼저 고정 IP 주소를 정의하여 네트워크 연결을 만들어야 합니다.
증분 전송 제한사항
증분 ServiceNow 전송에는 다음과 같은 제한사항이 적용됩니다.- 워터마크 열로는
DATETIME개의 열만 선택할 수 있습니다. - 증분 인제스트는 유효한 워터마크 열이 있는 애셋에만 지원됩니다.
- 워터마크 열의 값은 단조 증가해야 합니다.
- 증분 전송은 소스 테이블의 삭제 작업을 동기화할 수 없습니다.
- 단일 전송 구성은 증분 또는 전체 수집만 지원할 수 있습니다.
- 첫 번째 증분 수집 실행 후에는
asset목록의 객체를 업데이트할 수 없습니다. - 첫 번째 증분 수집 실행 후에는 전송 구성에서 쓰기 모드를 변경할 수 없습니다.
- 첫 번째 증분 수집이 실행된 후에는 워터마크 열이나 기본 키를 변경할 수 없습니다.
- 대상 BigQuery 테이블은 제공된 기본 키를 사용하여 클러스터링되며 클러스터링된 테이블 제한사항이 적용됩니다.
- 기존 전송 구성을 증분 수집 모드로 처음 업데이트하면 업데이트 후 첫 번째 데이터 전송에서 데이터 소스의 사용 가능한 모든 데이터를 전송합니다. 이후의 모든 증분 데이터 전송은 데이터 소스의 신규 및 업데이트된 행만 전송합니다.
데이터 수집 옵션
이 섹션에서는 ServiceNow 데이터 전송을 설정하기 위한 데이터 수집 옵션에 대해 설명합니다.
전체 또는 증분 전송
ServiceNow 전송을 설정할 때 전송 구성에서 전체 또는 증분 쓰기 환경설정을 선택하여 데이터가 BigQuery에 로드되는 방법을 지정합니다. 증분 전송은 미리보기에서 지원됩니다.
전체 데이터 전송을 구성하여 각 데이터 전송 시 ServiceNow 데이터 세트의 모든 데이터를 전송할 수 있습니다.또는 각 데이터 전송 시 전체 데이터 세트를 로드하는 대신 마지막 데이터 전송 이후 변경된 데이터만 전송하도록 증분 데이터 전송(미리보기)을 구성할 수 있습니다. 데이터 전송에 증분을 선택하는 경우 추가 또는 업서트 쓰기 모드를 지정하여 증분 데이터 전송 중에 BigQuery에 데이터를 쓰는 방법을 정의해야 합니다. 다음 섹션에서는 사용 가능한 쓰기 모드를 설명합니다.
업서트 쓰기 모드
upsert 쓰기 모드는 기본 키를 확인하여 대상 테이블의 행을 업데이트하거나 새 행을 삽입합니다. 기본 키를 지정하여 ServiceNow 커넥터가 소스 테이블을 기준으로 대상 테이블을 최신 상태로 유지하는 데 필요한 변경사항을 결정하도록 할 수 있습니다. 데이터 전송 중에 지정된 기본 키가 대상 BigQuery 테이블에 있으면 ServiceNow 커넥터가 소스 테이블의 새 데이터로 해당 행을 업데이트합니다. 데이터 전송 중에 기본 키가 없으면 ServiceNow 커넥터가 새 행을 삽입합니다.
삽입/업데이트 모드를 선택할 때는 워터마크 열과 기본 키를 선택해야 합니다.
ServiceNow 커넥터가 소스 테이블의 변경사항을 추적하려면 워터마크 열이 필요합니다.
행이 수정될 때마다 업데이트되는 워터마크 열을 선택합니다.
UPDATED_AT또는LAST_MODIFIED열과 유사한 열을 사용하는 것이 좋습니다.
기본 키는 ServiceNow 커넥터가 행을 삽입해야 하는지 업데이트해야 하는지 판단하는 데 필요한 테이블의 하나 이상의 열일 수 있습니다.
테이블의 모든 행에서 고유한 null이 아닌 값이 포함된 열을 선택합니다. 시스템 생성 식별자, 고유 참조 코드 (예: 자동 증분 ID) 또는 불변 시간 기반 시퀀스 ID가 포함된 열을 사용하는 것이 좋습니다.
데이터 손실이나 데이터 손상을 방지하려면 선택한 기본 키 열에 고유한 값이 있어야 합니다. 선택한 기본 키 열의 고유성에 의문이 있는 경우 전체 수집을 사용하는 것이 좋습니다.
증분 수집 동작
데이터 소스의 테이블 스키마를 변경하면 해당 테이블의 증분 데이터 전송이 다음과 같은 방식으로 BigQuery에 반영됩니다.
| 데이터 소스 변경사항 | 증분 수집 동작 |
|---|---|
| 새 열 추가 | 대상 BigQuery 테이블에 새 열이 추가됩니다. 이 열의 이전 레코드에는 null 값이 있습니다. |
| 열 삭제 | 삭제된 열은 대상 BigQuery 테이블에 남아 있습니다. 이 삭제된 열의 새 항목은 null 값으로 채워집니다. |
| 열의 데이터 유형 변경 | 커넥터는
ALTER COLUMN DDL 문에서 지원되는 데이터 유형 변환만 지원합니다.
다른 데이터 유형 변환은 데이터 전송을 실패하게 합니다.
문제가 발생하면 새 전송 구성을 만드는 것이 좋습니다. |
| 열 이름 변경 | 원래 열은 대상 BigQuery 테이블에 그대로 유지되고 업데이트된 이름의 새 열이 대상 테이블에 추가됩니다. |
시작하기 전에
ServiceNow 데이터 전송을 만들기 전에 ServiceNow 및 BigQuery에 다음을 수행합니다.
ServiceNow 기본 요건
- ServiceNow API에 액세스하려면 OAuth 사용자 인증 정보를 만듭니다.
ServiceNow 인스턴스에서 다음 ServiceNow 애플리케이션을 모두 사용 설정해야 합니다.
ServiceNow 전송을 시작하려면 ServiceNow 인스턴스에 연결할 수 있는 올바른 사용자 인증 정보가 있어야 합니다.
- ServiceNow 개발자 인스턴스의 사용자 인증 정보를 얻으려면 ServiceNow 개발자 포털에 로그인하세요. 인스턴스 비밀번호 관리 페이지에 나열된 사용자 이름과 비밀번호를 사용할 수 있습니다. ServiceNow 비밀번호 재설정에 관한 자세한 내용은 비밀번호 재설정을 참고하세요.
- ServiceNow 프로덕션 또는 하위 프로덕션 인스턴스의 사용자 인증 정보를 얻으려면 ServiceNow 고객 관리자에게 사용자 이름과 비밀번호를 요청하세요.
BigQuery 기본 요건
- BigQuery Data Transfer Service를 사용 설정하는 데 필요한 모든 작업을 완료합니다.
- 데이터를 저장할 BigQuery 데이터 세트를 만듭니다.
- Pub/Sub의 전송 실행 알림을 설정하려면
pubsub.topics.setIamPolicyIdentity and Access Management(IAM) 권한이 있는지 확인합니다. 이메일 알림만 설정하는 경우에는 Pub/Sub 권한이 필요하지 않습니다. 자세한 내용은 BigQuery Data Transfer Service 실행 알림을 참조하세요.
필요한 BigQuery 역할
BigQuery 데이터 전송 서비스 데이터 전송을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 관리자 (roles/bigquery.admin) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 BigQuery Data Transfer Service 데이터 전송을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
BigQuery Data Transfer Service 데이터 전송을 만들려면 다음 권한이 필요합니다.
-
BigQuery Data Transfer Service 권한:
-
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 데이터 전송 설정
다음 옵션 중 하나를 사용하여 전송 구성을 설정하여 BigQuery에 ServiceNow 데이터를 추가합니다.
콘솔
Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.
전송 만들기를 클릭합니다.
소스 유형 섹션의 소스에 ServiceNow를 선택합니다.
데이터 소스 세부정보 섹션에서 다음을 수행합니다.
- (선택사항) 네트워크 연결의 경우 드롭다운 메뉴에서 네트워크 연결을 선택하거나 네트워크 연결 만들기를 클릭합니다.
- 이 데이터 전송이 일관된 단일 IP 주소를 사용하도록 구성하려면 네트워크 연결을 선택합니다. ServiceNow 인스턴스가 특정 IP 주소의 트래픽만 허용하도록 구성된 경우 이 옵션을 사용할 수 있습니다.
- 네트워크 연결 생성에 관한 자세한 내용은 네트워크 연결로 연결 구성을 참고하세요.
- ServiceNow에서 IP 주소를 정의하는 방법에 대한 자세한 내용은 허용된 ServiceNow 내부 IP 주소 정의를 참고하세요.
- 인스턴스 ID에 ServiceNow 인스턴스 ID를 입력합니다.
ServiceNow URL에서 가져올 수 있습니다(예:
https://INSTANCE_ID.service-now.com). - (선택사항) ServiceNow 클라우드 유형에서 ServiceNow 계정의 클라우드 유형을 선택합니다.
- ServiceNow 인스턴스 URL이
https://INSTANCE_ID.service-now.com패턴을 따르는 경우 상업용을 선택합니다. 기본값입니다. - ServiceNow 인스턴스 URL이
https://INSTANCE_ID.servicenowservices.com패턴을 따르는 경우 Government Community Cloud(GCC)를 선택합니다.
- ServiceNow 인스턴스 URL이
- 사용자 이름에 연결에 사용할 ServiceNow 사용자 이름을 입력합니다.
- 비밀번호에 ServiceNow 비밀번호를 입력합니다.
- 클라이언트 ID에 OAuth 사용자 인증 정보의 클라이언트 ID를 입력합니다. 사용자 인증 정보를 생성하려면 OAuth 사용자 인증 정보 만들기를 참조하세요.
- 클라이언트 보안 비밀번호에 OAuth 사용자 인증 정보의 클라이언트 보안 비밀번호를 입력합니다.
- 레거시 매핑 사용 설정에서 레거시 데이터 유형 매핑을 사용하려면 true(기본값)를 선택합니다. 업데이트된 데이터 유형 매핑을 사용하려면 false를 선택합니다. 데이터 유형 매핑 업데이트에 관한 자세한 내용은 2027년 3월 16일을 참고하세요.
- 수집 유형에서 전체 또는 증분을 선택합니다.
- 증분(프리뷰)을 선택한 경우 쓰기 모드에서 삽입/업데이트(upsert)를 선택합니다. 쓰기 모드에 관한 자세한 내용은 전체 또는 증분 전송을 참고하세요.
- 전송할 ServiceNow 테이블에서 찾아보기를 클릭합니다.
- BigQuery 대상 데이터 세트로 전송할 객체를 선택합니다. 데이터 전송에 포함할 객체를 이 필드에 직접 입력할 수도 있습니다.
- 삽입/업데이트(upsert)를 증분 쓰기 모드로 선택한 경우 열을 워터마크 열로 선택한 다음 하나 이상의 열을 기본 키로 선택해야 합니다.
- 값 유형에 다음 중 하나를 선택합니다.
- 데이터베이스에 저장된 값을 전송하려면 실제를 선택합니다.
- 열의 표시 값을 전송하려면 표시를 선택합니다.
- (선택사항) 네트워크 연결의 경우 드롭다운 메뉴에서 네트워크 연결을 선택하거나 네트워크 연결 만들기를 클릭합니다.
대상 설정 섹션의 데이터 세트에서 데이터를 저장하기 위해 만든 데이터 세트를 선택합니다.
전송 구성 이름 섹션의 표시 이름에 데이터 전송 이름을 입력합니다.
일정 옵션 섹션에서 다음을 수행합니다.
- 반복 빈도 목록에서 이 데이터 전송 실행 빈도를 지정하는 옵션을 선택합니다. 커스텀 반복 빈도를 지정하려면 커스텀을 선택합니다. 주문형을 선택한 경우 수동으로 전송을 트리거하면 이 데이터 전송이 실행됩니다.
- 해당하는 경우 지금 시작 또는 설정 시간에 시작을 선택하고 시작 날짜와 실행 시간을 입력합니다.
선택사항: 알림 옵션 섹션에서 다음을 수행합니다.
- 이메일 알림을 사용 설정하려면 이메일 알림 전환 버튼을 클릭합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
- 이 데이터 전송에 Pub/Sub 전송 실행 알림을 사용 설정하려면 Pub/Sub 알림 전환 버튼을 클릭합니다. 주제 이름을 선택하거나 주제 만들기를 클릭하여 주제를 만들 수 있습니다.
저장을 클릭합니다.
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 인스턴스 URL이
https://INSTANCE_ID.service-now.com패턴을 따르는 경우COMMERCIAL_CLOUD - ServiceNow 인스턴스 URL이
https://INSTANCE_ID.servicenowservices.com패턴을 따르는 경우GOVERNMENT_COMMUNITY_CLOUD
ingestionType선택사항 소스 ServiceNow에서 대상으로 데이터를 전송하는 방법을 정의하여 전체 데이터 세트 다시 로드 또는 효율적인 증분 업데이트가 수행되는지 여부를 결정합니다. writeMode선택사항 증분 수집을 사용하는 경우 증분 수집의 동기화 전략을 결정합니다. 이 필드는 증분 전송에 필요합니다. 지원되는 값은 WRITE_MODE_UPSERT입니다.assets필수 전송의 일부로 ServiceNow에서 전송될 ServiceNow 테이블의 이름 목록입니다. watermarkColumns선택사항 증분 수집을 사용하는 경우 마지막으로 성공한 동기화 지점을 추적하는 데 사용되는 소스 테이블 필드 (일반적으로 datetime)로, 커넥터가 해당 시간 이후에 생성되거나 수정된 레코드만 효율적으로 쿼리하고 전송할 수 있습니다. 이 필드는 증분 전송에 필요합니다. 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 인스턴스 URL이
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에서 사용 설정되지 않으면 데이터 전송이 실패하는 문제가 발생합니다. 이 문제를 해결하려면 다음 세 애플리케이션을 모두 사용 설정하세요.
전송 실행 중에 문제 발생
전송 실행이 계획한 대로 생성되지 않는 문제가 발생합니다. 문제를 해결하려면 다음을 수행합니다.
- 사용자 이름, 비밀번호, 클라이언트 ID, 클라이언트 보안 비밀번호와 같은 ServiceNow 계정 사용자 인증 정보가 유효한지 확인합니다.
- 인스턴스 ID가 ServiceNow 인스턴스의 유효한 ID인지 확인합니다.
기타 오류
ServiceNow 데이터 전송 중에 발생한 기타 오류에 대한 자세한 내용은 ServiceNow 전송 문제를 참고하세요.
가격 책정
ServiceNow 전송 가격 정보는 Data Transfer Service 가격 책정을 참고하세요.
다음 단계
- BigQuery Data Transfer Service 개요는 BigQuery Data Transfer Service 소개를 참조하세요.
- 전송 구성 정보 가져오기, 전송 구성 나열, 전송 실행 기록 보기를 포함한 전송 사용에 대한 정보는 전송 작업을 참조하세요.
- 교차 클라우드 작업으로 데이터를 로드하는 방법을 알아보기