教程:安装 Snowflake ServiceNow® 数据引入连接器¶
简介¶
学习本教程,使用 Snowsight 向导来配置和了解 Snowflake Connector for ServiceNow®,选择一些表,引入数据,并运行示例查询。
本教程并非详尽无遗。请查看 关于 Snowflake Connector for ServiceNow®V2 了解全部功能和限制。
备注
本教程假设您没有 ServiceNow® 账户,并会指导您完成创建开发者账户的步骤。如果您有 Servicenow® 账户,请随意试用,但需要注意的是,Snowflake Connector for ServiceNow® 须遵守 Connector 条款。
先决条件¶
在开始阅读本教程之前,请确保您已满足以下要求:
接受 Snowflake Marketplace 服务条款的
ORGADMIN
权利。您想要安装连接器的 Snowflake 账户的
ACCOUNTADMIN
权利。
您将学习以下内容¶
在本教程中,您将学习如何进行以下操作:
如何设置 Snowflake Connector for ServiceNow®。
如何将 ServiceNow® 数据引入 Snowflake
如何停止连接器以避免在开发环境中产生不必要的成本。
您需要什么¶
Snowflake 账户 (https://snowflake.com/)
一个 ServiceNow® 开发者账户 (https://developer.servicenow.com/dev.do/)
您将构建什么¶
ServiceNow® 到 Snowflake 的引入数据流。
设置 ServiceNow® 开发者实例¶
如果您不想在您的 ServiceNow® 账户上测试此连接器,可以使用开发者实例。本节介绍如何设置开发者实例。
前往 ServiceNow® 开发者网站 (https://developer.servicenow.com),并创建开发者用户。
使用新创建的用户登录开发者网站并选择 Create an Instance。
选择实例类型。您将收到一封包含实例 URL 的电子邮件,以及您的用户和密码。
部署通常非常快,大约五分钟。但是,在等待的同时,我们可以进入下一步并配置 Snowflake!
创建并设置 Snowflake 账户¶
创建 Snowflake 账户¶
如果您没有 Snowflake 账户,可以访问以下网站免费试用 snowflake.com。选择 Start for Free 并按照指示操作。
接受条款和条件¶
通过 Snowsight Web 界面登录 Snowflake 账户,然后更改为
ORGADMIN
角色。选择 Admin » Billing & Terms。
在 Snowflake Marketplace 部分中,查看使用者服务条款。
如果您同意条款,请选择 Accept Terms & Conditions。
设置虚拟仓库¶
连接器需要虚拟仓库。 要创建所需的仓库,请执行以下操作:
更改为 ACCOUNTADMIN
角色。
导航至 Admin -> Warehouses 并选择 + Warehouse。
指定
CONNECTOR_UI_WH
为仓库名称,尺寸为 XS,其他均保留默认设置。选择 Create Warehouse。
安装 ServiceNow® 连接器¶
该连接器通过 Snowflake Marketplace 提供,所有 Snowflake 客户都可以使用。选择后,它将作为一个具有多个视图和存储过程的应用程序安装到您的账户中。
在左侧菜单中选择 Data Products 和 Marketplace。
在搜索窗口中输入
ServiceNow
并选择磁贴。审查业务需求和使用示例。
选择 Get。
选择之前创建的仓库
CONNECTOR_UI_WH
。选择 Options。
对于本教程,请接受安装数据库的默认名称
Snowflake_Connector_for_ServiceNow
。不要选择任何其他角色。选择 Get。
Snowflake Connector for ServiceNow
将显示,表明连接器现在可以使用。选择 Done。管理选项将在下一节中指定。
接下来,检查连接器是否已安装。从 Snowsight 中前往 Data Products -> Apps。您应该会看到一个新安装的应用程序,名为 Snowflake_Connector_for_ServiceNow。
导航到 Data -> Databases 中的公共架构,并检查新的可用视图和过程。
满足所有先决条件¶
从 Data Products -> Apps -> Snowflake Connector for ServiceNow 启动 Snowflake Connector for ServiceNow®。您将看到连接器开始数据引入前需要完成的任务列表。请仔细阅读以下说明并逐一完成。
如果要启用 OAuth2 身份验证,最后的步骤之一会要求您创建应用程序注册表。接下来的几个步骤将聚焦这一点。
对于下一节,我们建议您打开两个浏览器选项卡,以便将某些数据从 Snowflake 复制到 ServiceNow®:
从 Snowflake 中,使用连接器生成重定向 URL,其将被粘贴到应用程序注册表中。
从 ServiceNow® 中,您需要应用程序注册表来提供客户端 ID 和密钥,然后粘贴到 Snowflake 中。
在 Snowflake 上¶
复制重定向 URL。您将在下一节中需要该 URL。
在浏览器中打开一个新选项卡(不要关闭前述选项卡)并按照下一节中的步骤操作。
在 ServiceNow® 中¶
登录 ServiceNow® 开发者实例。
在主页上,选择 All 并搜索 Application Registry。
在窗口的右上角选择 New。
选择 Create an OAuth API endpoint for external clients。
为端点命名,例如 Snowflake_connector。将客户端密钥留空,因为该值将在后续过程中自动填充。
粘贴在 Snowflake 端生成的重定向 URL。
选择 Submit。窗口关闭。
选择刚刚创建的注册表以重新打开。请注意,客户端 ID 和 客户端密钥 是自动生成的。
不要关闭 ServiceNow® 浏览器选项卡,或将 客户端 ID 和 客户端密钥 存放在某个安全位置,因为之后将需要使用。
返回 Snowflake 配置选项卡。
配置连接器¶
选择 Start configuration。系统会显示此配置屏幕。默认情况下,这些字段设置为配置连接器时创建的对象的名称。您还可以使用现有对象。连接器将使用所选的虚拟仓库进行后台数据引入。
有关更多信息,请查看 配置 Snowflake Connector for ServiceNow®V2。
选择 Configure。
请注意,配置过程可能需要几分钟才能完成。
备注
此步骤创建了一个大型仓库,其自动暂停设置为十分钟。如果设置每小时刷新一次,大型仓库(8 Credit/小时)每小时会至少唤醒 10 分钟。 对于本教程来说,这不是必需的。转至 Admin -> Warehouses -> SERVICENOW_WAREHOUSE -> ... > Edit,并将其更改为 XSMALL,自动超时时间为一分钟。在实际用例中,通常需要大型仓库。
备注
您应该将资源监视器附加到 SERVICENOW_WAREHOUSE
。要附加资源监视器,请导航至 Admin » Resource Monitors,选择 Resource Monitor,然后创建仓库资源监视器。
将 Snowflake 设置为 ServiceNow® OAuth2 握手¶
选择 OAuth2 作为身份验证方法。
填写 ServiceNow® 实例详细信息。这是 ServiceNow® 账户的 ServiceNow® URL 的第一部分,无
https://*
协议和后续service-now.com
。从 ServiceNow® 将 Client id 和 Client secret 粘贴到 Snowflake 向导。
选择 Connect。ServiceNow® 账户弹出并请求连接到 Snowflake。
选择 Allow。两个系统之间建立连接。
要验证连接,请选择三个点 [...] 和 View Details。您将在弹出窗口顶部看到 ServiceNow 的身份验证日期。
备注
如果您遇到问题,可能是未复制客户端密钥。解锁密码字段并复制粘贴文本。
配置删除同步¶
如果您不仅希望插入和更新,而且还希望将删除同步到 Snowflake,则必须提供日志表的名称。默认情况下 ServiceNow® 使用 sys_audit_delete
表来存储有关已删除记录的信息,因此请随意提供此名称。如果您不关心删除,可以将此字段留空。
选择 Validate 来检查连接器是否能连接到源系统并可以访问所有所需的表。该过程可能需要几分钟才能完成。完成后,选择 Define data to sync 来选择要引入的表。
选择 ServiceNow® 表¶
备注
请注意:
连接器只能引入包含
sys_id
列的表。ServiceNow® 视图不受支持。您不应引入这些视图,而应同步基础视图的所有表,并在 Snowflake 中联接同步的表。
增量更新只会在具有
sys_updated_on
或sys_created_on
列的表中进行。对于没有
sys_updated_on
和sys_created_on
列的表,连接器将使用truncate and load
模式。在此模式下,会始终使用初始加载方法引入表,新引入的数据将替换旧数据。
在 Snowflake Connector for ServiceNow 窗口顶部栏上,选择 Data Sync。
为了能够稍后运行测试查询,我们需要引入几个表。在搜索窗口中输入 incident 并选中旁边的框,然后选择 30 分钟的同步时间。
要选择其他表,请清除搜索,输入表名称并选中复选框。至少对
task
表执行此操作。
备注
提示:清除搜索字段,然后选择标题 Status 对选择的所有表格进行排序并显示。
选择 Start Sync。选择窗口关闭,您将从主连接器窗口收到消息 Syncing Data。除了您选择的表之外,还将加载三个系统表。这些表对于构建原始数据视图是必要的:
sys_dictionary
、sys_db_object
和sys_glide_object
。
您会收到一条表示成功的消息。至少完全引入一个表后,就会显示该消息。
备注
不要过早停止引入。确保首先在目标数据库中建立视图。
连接器监控¶
打开工作表以检查连接器状态。以下是一些您可以执行的 SQL 示例,以获取监控信息:
// Return general information about all ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats;
// Search for information about particular table ingestions
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats WHERE table_name = '<table_name>';
// Examine connector configuration
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_configuration;
// Calculate ingested data volume
SELECT
table_name,
sum(ingested_rows) AS row_count
FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_stats
GROUP BY table_name
ORDER BY table_name;
// General connector statistics
SELECT * FROM SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.public.connector_overview;
配置对引入数据的访问¶
连接器显示 DATA_READER
应用程序角色。该角色对目标架构中的所有引入数据具有读取权限。它会自动授予安装过程的 配置 步骤中提供的角色。在本指南前文中的屏幕截图中,它被命名为 SERVICE_NOW_RESOURCES_PROVIDER
。如果需要,您可以进一步授予应用程序角色或账户角色。
查询数据¶
检查连接器在目标数据库的目标架构下创建的表。对于 ServiceNow® 中配置为同步的每个表,连接器都会创建以下表和视图:
包含原始形式数据的同名表,其中每条记录都包含在单个
VARIANT
列中。一个名为
table_name__view
的视图,包含扁平形式的数据,其中该视图包含原始表中每一列的一列以及原始表中存在的每条记录的一行。
备注
启动连接器后,将需要一些时间来创建视图。视图的创建依赖于 ServiceNow® sys_db_object
、sys_dictionary
和 sys_glide_object
表。在您启用任何表同步后,连接器会从这些 ServiceNow® 表加载元数据。连接器可能需要一些时间来加载此元数据。创建视图时不要停止仓库。
名为
table_name__view_with_deleted
的视图,包含与table_name__view
相同的数据以及 ServiceNow 中已删除的记录的行。表
table_name__event_log
包含连接器从 ServiceNow® 中提取的变更历史记录。
查询以确定按月份和优先级提出的事件数量¶
这是一个测试查询,可确定按月份和优先级提出的事件数量。Marketplace 中的 Snowflake Connector for ServiceNow® 页面上提供了其他示例查询。
USE ROLE SERVICE_NOW_RESOURCES_PROVIDER;
USE DATABASE SERVICENOW_DEST_DB;
USE SCHEMA DEST_SCHEMA;
WITH T1 AS (
SELECT
DISTINCT
T.NUMBER AS TICKET_NUMBER,
T.SHORT_DESCRIPTION,
T.DESCRIPTION,
T.PRIORITY,
T.SYS_CREATED_ON AS CREATED_ON,
T.SYS_UPDATED_ON AS UPDATED_ON,
T.CLOSED_AT
FROM TASK__VIEW T
LEFT JOIN INCIDENT__VIEW I
ON I.SYS_ID = T.SYS_ID -- ADDITIONAL INCIDENT DETAIL
WHERE I.SYS_ID IS NOT NULL -- THIS CONDITION HELPS KEEP JUST THE INCIDENT TICKETS
)
SELECT
YEAR(CREATED_ON) AS YEAR_CREATED,
MONTH(CREATED_ON) AS MONTH_CREATED,
PRIORITY,
COUNT(DISTINCT TICKET_NUMBER) AS NUM_INCIDENTS
FROM T1
GROUP BY
YEAR_CREATED,
MONTH_CREATED,
PRIORITY
ORDER BY
YEAR_CREATED,
MONTH_CREATED,
PRIORITY
;
授予连接器访问权限¶
除了用于访问目标数据库中数据的应用程序角色之外,连接器还显示了两个应用程序角色:
VIEWER
角色对连接器配置和状态具有只读访问权限ADMIN
角色可以修改连接器配置并启用/禁用引入
要监控错误、运行统计数据、检查连接器统计数据以及检查启用的表,可以设置允许访问连接器数据库中的视图和只读过程的 ServiceNow® 监控角色。
例如,在工作表中运行以下命令(然后使用角色):
USE ROLE accountadmin;
CREATE ROLE IF NOT EXISTS servicenow_monitor_role;
GRANT APPLICATION ROLE SNOWFLAKE_CONNECTOR_FOR_SERVICENOW.viewer TO ROLE servicenow_monitor_role;
GRANT USAGE ON WAREHOUSE SERVICENOW_WAREHOUSE TO ROLE servicenow_monitor_role;
停止引入¶
在本教程中,我们仅引入数据,因此在初始加载后停止引入是有意义的。但是,在生产环境中,不会停止连接器。
备注
如果不停止连接器,它将按照指定的时间间隔唤醒虚拟仓库并消耗 Credit。
在 Snowsight 中,选择 Snowflake Connector for ServiceNow 磁贴。
在 Snowflake Connector for ServiceNow 窗口中,选择 Pause Connector。
卸载连接器(但不卸载数据)¶
如果您已完成本教程或由于任何原因不再需要连接器,可以通过 Snowflake Marketplace 轻松卸载。
选择 数据产品,然后选择 应用程序。
在列表上代表连接器应用程序的项目中选择三个点图标。
选择 卸载。
决定是否要删除应用程序拥有的对象(目标架构中包含引入数据的表和视图)或将其所有权转移给另一个角色。
选择 卸载。
结论和资源¶
恭喜!您已成功安装并配置 Snowflake Connector for ServiceNow®,引入数据并运行查询以收集有关事件和优先级的见解。
您学到的内容
如何设置 Snowflake Connector for ServiceNow®。
如何将 ServiceNow® 数据引入 Snowflake。
如何停止连接器以避免在开发环境中产生不必要的成本。