设置 Openflow Connector for Google Sheets¶
备注
This connector is subject to the Snowflake Connector Terms.
本主题介绍设置 Openflow Connector for Google Sheets 的步骤。
先决条件¶
Ensure that you have 设置 Openflow - BYOC or Set up Openflow - Snowflake Deployments.
If using Openflow - Snowflake Deployments, ensure that you have reviewed configuring required domains and have granted access to the required domains for the Google 表格 connector.
获取凭据¶
作为 Google Cloud 管理员,请执行以下任务:
确保您具备以下条件:
拥有 超级管理员权限 (https://support.google.com/a/answer/2405986?hl) 的 Google 用户
Google Cloud 项目 (https://developers.google.com/workspace/guides/create-project),并授予以下角色权限:
组织策略管理员 (https://cloud.google.com/iam/docs/understanding-roles#orgpolicy.policyAdmin)
组织管理员 (https://cloud.google.com/iam/docs/understanding-roles#resourcemanager.organizationAdmin)
启用服务账户密钥创建。默认情况下,Google 会禁用服务账户密钥的创建。要让 Snowflake Openflow 使用服务账户 JSON,必须关闭该密钥创建策略。要启用服务账户密钥创建,请执行以下任务:
使用具有组织策略管理员角色的超级管理员账户登录 Google Cloud Console (https://console.cloud.google.com/)。
确保您所在的项目是与您的组织关联的项目,而不是组织中的项目。
选择 Organization Policies。
选择 Disable service account key creation 策略。
选择 Manage Policy 并关闭强制执行。
选择 Set Policy。
创建服务账户和密钥 (https://developers.google.com/workspace/guides/create-credentials#service-account)。
将 Google Sheets 表格共享给服务账户电子邮件地址。该电子邮件地址可在服务账户 JSON 文件的
client_email字段下找到。将共享权限设置为Viewer。
设置 Snowflake 账户¶
作为 Snowflake 账户管理员,请执行以下任务:
创建新角色或使用现有角色并授予 数据库权限。
创建类型为 SERVICE 的新 Snowflake 服务用户。
向该 Snowflake 服务用户授予您在前面步骤中创建的角色。
为第 2 步中创建的 Snowflake SERVICE 用户配置 密钥对身份验证。
Snowflake 强烈建议执行此步骤。配置 Openflow 支持的密钥管理器(例如 AWS、Azure 和 Hashicorp),并将公钥和私钥存储在密钥存储库中。
备注
如果您出于任何原因不希望使用密钥管理器,则您有责任根据组织的安全策略保护用于密钥对身份验证的公钥和私钥文件。
配置密钥管理器后,确定如何对其进行身份验证。在 AWS 中,建议您使用与 Openflow 关联的 EC2 实例角色,因为这样就无需保留其他密钥。
In Openflow, configure a Parameter Provider associated with this Secrets Manager, from the hamburger menu in the upper right. Navigate to Controller Settings » Parameter Provider and then fetch your parameter values.
此时,可以使用关联的参数路径引用所有凭据,无需在 Openflow 中保留敏感值。
如果任何其他 Snowflake 用户需要访问连接器引入的原始文档和表(例如,在 Snowflake 中进行自定义处理),则授予这些用户在步骤 1 中创建的角色。
指定一个仓库供连接器使用。从最小的仓库规模开始,然后根据要复制的表数量和传输的数据量来测试规模。相较于扩大仓库规模,采用 多集群仓库 通常能更有效地应对海量表数量的扩展需求。
设置连接器¶
作为数据工程师,执行以下任务以安装和配置连接器:
安装连接器¶
Navigate to the Openflow overview page. In the Featured connectors section, select View more connectors.
在 Openflow 连接器页面上,找到连接器并选择 Add to runtime。
In the Select runtime dialog, select your runtime from the Available runtimes drop-down list and click Add.
备注
在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。
使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。
使用您的 Snowflake 账户凭据进行运行时身份验证。
此时将显示 Openflow 画布,其中添加了连接器进程组。
配置连接器¶
右键点击导入的进程组并选择 Parameters。
按照 流参数 中所述填充所需的参数值。
流参数¶
连接器定义的配置分为三个参数上下文:
Google Sheets 源参数:用于与 Google Sheets 建立连接。
Google Sheets 目标参数:用于与 Snowflake 建立连接。
Google Sheets 引入参数:用于定义从 Google Sheets 下载的数据的配置。
备注
Google Sheets 引入参数 参数上下文包含特定于电子表格的详细信息,因此您必须为每个新的电子表格和流程组创建新的参数上下文。
要创建新的参数上下文,请转到 Openflow Canvas 菜单,选择 Parameter Contexts 并添加新的参数上下文。它继承来自 Google Sheets 目标参数和 Google Sheets 源参数的参数上下文的参数。
下表描述了您可以根据参数上下文配置的流参数:
Google Sheets 目标参数¶
参数 |
描述 |
必填 |
|---|---|---|
目标数据库 |
The database where data will be persisted. It must already exist in Snowflake. The name is case-sensitive. For unquoted identifiers, provide the name in uppercase. |
是 |
目标架构 |
The schema where data will be persisted, which must already exist in Snowflake. The name is case-sensitive. For unquoted identifiers, provide the name in uppercase. 请参阅以下示例:
|
是 |
Snowflake 身份验证策略 |
使用以下方式时:
|
是 |
Snowflake 账户标识符 |
使用以下方式时:
|
是 |
Snowflake 私钥 |
使用以下方式时:
|
否 |
Snowflake 私钥文件 |
使用以下方式时:
|
否 |
Snowflake 私钥密码 |
使用以下方式时:
|
否 |
Snowflake 角色 |
使用以下方式时:
|
是 |
Snowflake 用户名 |
使用以下方式时:
|
是 |
Snowflake 仓库 |
Snowflake warehouse used to run queries. |
是 |
Google Sheets 源参数¶
参数 |
描述 |
|---|---|
服务账户 JSON |
包含服务账户凭据(如 client_id、client_email 和 private_key)的文件内容。复制文件的全部内容。 |
Google Sheets 引入参数¶
下表仅列出了那些未继承自其他参数上下文的参数。
参数 |
描述 |
|---|---|
日期时间呈现选项 |
确定应如何在输出中呈现日期。您可以选择以下选项之一: |
目标数据库 |
可在其中创建目标表的目标数据库。 |
目标架构 |
可在其中创建目标表的目标架构。 |
目标表前缀 |
目标表前缀是从 Google Sheets 中提取的报表数据存储的位置。连接器为每个范围创建一个目标表。 如果未提供范围,则使用工作表名称作为表标识符。工作表中的第一行代表目标表中的列名。 |
范围 |
要从电子表格中检索的范围列表。如果未指定范围,则将下载指定电子表格中的所有表格。以 A1 或 R1C1 表示法 (https://developers.google.com/sheets/api/guides/concepts#cell) 提供每个范围,用逗号分隔。例如: |
运行计划 |
运行计划,根据该计划从 Google Sheets 中检索数据并将其保存在 Snowflake 中。默认情况下,使用基于时间触发的调度策略,用户在此处指定间隔,例如 |
电子表格 ID |
电子表格的 唯一标识符 (https://developers.google.com/sheets/api/guides/concepts)。您可以在电子表格的 URL 中找到它。 |
数值呈现选项 |
确定应如何在输出中呈现值。您可以选择以下选项之一: |
备注
目标表标识符是目标表前缀和范围名称的组合,必须是唯一的。如果您从多个电子表格或单个工作表中下载数据,并且范围名称不是唯一的,则必须为每个流指定唯一的目标表前缀。如果目标表名称不是唯一的,连接器可能会失败,覆盖现有的目标表。
运行流¶
右键点击“飞机”图标并选择 Enable all Controller Services。
右键点击导入的进程组并选择 Start。连接器开始数据引入。
备注
导入的 .xlsx 必须是 Google Sheets 格式。如果您要导入文件,请确保在运行流之前将文件转换为 Google Sheets 格式。无法读取 Google Sheets 以外的任何格式的电子表格。有关更多信息,请参阅 将文件转换为 Google Sheets 格式 (https://support.google.com/docs/answer/9331167?hl=en#2.5)。