将 ServiceNow 数据加载到 BigQuery 中

您可以使用适用于 ServiceNow 的 BigQuery Data Transfer Service 连接器将数据从 ServiceNow 加载到 BigQuery。借助 BigQuery Data Transfer Service,您可以安排周期性转移作业,以将 ServiceNow 中的最新数据添加到 BigQuery。

限制

ServiceNow 数据转移作业受到以下限制:

  • ServiceNow 连接器仅支持 ServiceNow Table API
  • 不建议在同一 ServiceNow 实例上运行并发数据传输作业。这可能会因 ServiceNow 实例上的负载而导致延迟或失败。
    • 建议错开传输开始时间,以防止传输运行作业重叠。
  • 为提高数据传输性能,建议您将每次数据传输的资产数量上限限制在 20 项。
  • 周期性数据转移作业之间的最短间隔时间为 15 分钟。 周期性转移作业的默认间隔时间为 24 小时。
  • 单个转移配置在同一时间只能支持一次数据转移运行。如果第二次数据转移的预定运行时间在第一次转移完成之前,则只有第一次数据转移会完成,而与第一次转移时间重叠的任何其他数据转移都会被跳过。
    • 为避免在单个转移配置中跳过转移,建议您通过配置重复频率来增加大型数据转移之间的时长。

准备工作

在创建 ServiceNow 数据传输作业之前,请针对 ServiceNow 和 BigQuery 执行以下操作。

ServiceNow 前提条件

  • 如需访问 ServiceNow API,请创建 OAuth 凭据
  • 以下 ServiceNow 应用都必须在 ServiceNow 实例中启用:

  • 如要开始进行 ServiceNow 传输,您必须拥有连接到 ServiceNow 实例所需的正确凭证。

    • 如需获取 ServiceNow 开发者实例的凭证,请登录 ServiceNow 开发者门户。您可以使用管理实例密码页面中列出的用户名和密码。如需了解如何重设 ServiceNow 密码,请参阅重设密码
    • 如需获取 ServiceNow 生产实例或子生产实例的凭证,请与您的 ServiceNow 客户管理员联系,申请用户名和密码。

BigQuery 前提条件

所需 BigQuery 角色

如需获得创建 BigQuery Data Transfer Service 数据转移作业所需的权限,请让您的管理员为您授予项目的 BigQuery Admin (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 数据转移作业

通过使用以下选项之一设置转移配置,将 ServiceNow 数据添加到 BigQuery 中:

控制台

  1. 前往 Google Cloud 控制台中的“数据转移”页面。

    转到“数据传输”

  2. 点击 创建转移作业

  3. 来源类型部分的来源中,选择 ServiceNow

  4. 数据源详细信息部分,执行以下操作:

    • (可选)在网络连接部分,从下拉菜单中选择一个网络连接,或点击创建网络连接
    • 选择一个网络连接,以将此数据传输作业配置为使用单个一致的 IP 地址。如果您的 ServiceNow 实例配置为仅接受来自特定 IP 地址的流量,则可以使用此选项。
    • 如需详细了解如何在 ServiceNow 中定义 IP 地址,请参阅定义允许的 ServiceNow 内部 IP 地址
    • 实例 ID 部分,输入 ServiceNow 实例 ID。您可以从 ServiceNow 网址(例如 https://INSTANCE_ID.service-now.com)获取此信息。
    • 用户名部分,输入用于连接的 ServiceNow 用户名。
    • 对于密码,输入 ServiceNow 密码。
    • 对于客户端 ID,输入 OAuth 凭据中的客户端 ID。如需生成凭据,请参阅创建 OAuth 凭据
    • 客户端密钥部分,输入 OAuth 凭据中的客户端密钥。
    • ServiceNow tables to transfer(要转移的 ServiceNow 表)部分,输入要转移的 ServiceNow 表的名称,或点击浏览并选择要转移的表。
    • 值类型部分,请选择以下选项之一:
      • 如需转移存储在数据库中的值,请选择实际
      • 要转移列的显示值,请选择显示
  5. 目标设置部分的数据集字段中,选择您创建用来存储数据的数据集。

  6. 转移配置名称部分的显示名称中,输入数据转移作业的名称。

  7. 时间表选项部分,执行以下操作:

    • 重复频率列表中,选择一个选项来指定此数据转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,数据转移作业将在您手动触发转移作业后运行。
    • 如果适用,请选择立即开始在设置的时间开始,并提供开始日期和运行时间。
  8. 可选:在通知选项部分中,执行以下操作:

    • 如需启用电子邮件通知,请点击电子邮件通知切换开关。启用此选项后,转移作业管理员会在转移作业运行失败时收到电子邮件通知。
    • 如需为此数据转移作业启用 Pub/Sub 转移作业运行通知,请点击 Pub/Sub 通知切换开关。您可以选择主题名称,也可以点击创建主题来创建一个主题。
  9. 点击保存

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.instanceId 必需 ServiceNow 实例的实例 ID
    connector.authentication.username 必需 凭据的用户名
    connector.authentication.password 必需 凭据的密码
    connector.authentication.oauth.clientId 必需 生成的 OAuth 的客户端 ID
    connector.authentication.oauth.clientSecret 必需 生成的 OAuth 的客户端密钥
    connector.valueType 可选 ActualDisplay(默认:Actual
    connector.networkAttachment 可选 指定一个网络连接,以将此数据传输作业配置为使用单个一致的 IP 地址。如果您的 ServiceNow 实例配置了安全限制,仅接受来自特定 IP 地址的流量,则可以使用此选项。如需详细了解如何在 ServiceNow 中定义 IP 地址,请参阅定义允许的 ServiceNow 内部 IP 地址

    例如,以下命令会使用所有必需参数在默认项目中创建 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":"https://dev-instance.service-now.com",
            "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1"}'
    

API

使用 projects.locations.transferConfigs.create 方法并提供一个 TransferConfig 资源实例。

保存转移配置后,ServiceNow 连接器会根据您的安排选项自动触发转移运行。在每次转移运行时,ServiceNow 连接器都会将 ServiceNow 中的所有可用数据转移到 BigQuery。

如需在常规安排之外手动运行数据转移,您可以启动回填运行

数据类型映射

下表显示了 ServiceNow 数据转移作业中数据类型的映射方式:

ServiceNow 数据类型 BigQuery 数据类型
decimal FLOAT64
integer INTEGER
boolean BOOLEAN
glide_date DATE
glide_date_time DATETIME
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

排查转移相关问题

以下部分详细介绍了在设置 ServiceNow 数据传输作业时可能会遇到的一些常见问题。

如需了解详情,请参阅排查转移作业配置问题

由于启用 ServiceNow,转移作业失败

如果未在 ServiceNow 中启用 Procurement、Product Catalog 或 Contract Management 应用,则会出现导致数据传输作业失败的问题。如需解决此问题,请启用所有三个应用:

转移作业运行期间出现问题

出现问题,导致无法按预期创建转移作业运行。如需解决此问题,请执行以下操作:

  • 检查 ServiceNow 账号凭证(例如用户名密码客户端 ID客户端密钥值)是否有效。
  • 检查实例 ID 是否为 ServiceNow 实例的有效 ID。

其他错误

如需了解 ServiceNow 数据传输期间可能会发生的其他错误,请参阅 ServiceNow 传输问题

价格

如需了解 ServiceNow 传输相关的价格信息,请参阅 Data Transfer Service 价格

后续步骤