设置 Openflow Connector for Google Sheets

备注

使用该连接器需遵守 连接器条款

本主题介绍设置 Openflow Connector for Google Sheets 的步骤。

先决条件

  1. 确保您已查看 关于 Openflow Connector for Google Sheets

  2. 确保您已 设置 Openflow

获取凭据

作为 Google Cloud 管理员,请执行以下任务:

  1. 确保您具备以下条件:

    • 拥有 超级管理员权限 (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)

  2. 启用服务账户密钥创建。默认情况下,Google 会禁用服务账户密钥的创建。要让 Snowflake Openflow 使用服务账户 JSON,必须关闭该密钥创建策略。要启用服务账户密钥创建,请执行以下任务:

    1. 使用具有组织策略管理员角色的超级管理员账户登录 Google Cloud Console (https://console.cloud.google.com/)。

    2. 确保您所在的项目是与您的组织关联的项目,而不是组织中的项目。

    3. 选择 Organization Policies

    4. 选择 Disable service account key creation 策略。

    5. 选择 Manage Policy 并关闭强制执行。

    6. 选择 Set Policy

  3. 创建服务账户和密钥 (https://developers.google.com/workspace/guides/create-credentials#service-account)。

  4. 将 Google Sheets 表格共享给服务账户电子邮件地址。该电子邮件地址可在服务账户 JSON 文件的 client_email 字段下找到。将共享权限设置为 Viewer

设置 Snowflake 账户

作为 Snowflake 账户管理员,请执行以下任务:

  1. 创建新角色或使用现有角色并授予 数据库权限

  2. 创建类型为 SERVICE 的新 Snowflake 服务用户。

  3. 向该 Snowflake 服务用户授予您在前面步骤中创建的角色。

  4. 为第 2 步中创建的 Snowflake SERVICE 用户配置 密钥对身份验证

  5. Snowflake 强烈建议执行此步骤。配置 Openflow 支持的密钥管理器(例如 AWS、Azure 和 Hashicorp),并将公钥和私钥存储在密钥存储库中。

    备注

    如果您出于任何原因不希望使用密钥管理器,则您有责任根据组织的安全策略保护用于密钥对身份验证的公钥和私钥文件。

    1. 配置密钥管理器后,确定如何对其进行身份验证。在 AWS 中,建议您使用与 Openflow 关联的 EC2 实例角色,因为这样就无需保留其他密钥。

    2. 在 Openflow 中,从右上角的汉堡菜单中配置与此密钥管理器关联的参数提供商。导航到 Controller Settings » Parameter Provider,然后提取您的参数值。

    3. 此时,可以使用关联的参数路径引用所有凭据,无需在 Openflow 中保留敏感值。

  6. 如果任何其他 Snowflake 用户需要访问连接器引入的原始文档和表(例如,在 Snowflake 中进行自定义处理),则授予这些用户在步骤 1 中创建的角色。

  7. 指定一个仓库供连接器使用。从最小的仓库规模开始,然后根据要复制的表数量和传输的数据量来测试规模。相较于扩大仓库规模,采用 多集群仓库 通常能更有效地应对海量表数量的扩展需求。

设置连接器

作为数据工程师,执行以下任务以安装和配置连接器:

安装连接器

  1. 导航到 Openflow“Overview”页面。在 Featured connectors 部分中,选择 View more connectors

  2. 在 Openflow 连接器页面上,找到连接器并选择 Add to runtime

  3. Select runtime 对话框中,从 Available runtimes 下拉列表中选择您的运行时。

  4. 选择 Add

    备注

    在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。

  5. 使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。

  6. 使用您的 Snowflake 账户凭据进行运行时身份验证。

此时将显示 Openflow 画布,其中添加了连接器进程组。

配置连接器

  1. 右键点击导入的进程组并选择 Parameters

  2. 按照 流参数 中所述填充所需的参数值。

流参数

连接器定义的配置分为三个参数上下文:

备注

Google Sheets 引入参数 参数上下文包含特定于电子表格的详细信息,因此您必须为每个新的电子表格和流程组创建新的参数上下文。

要创建新的参数上下文,请转到 Openflow Canvas 菜单,选择 Parameter Contexts 并添加新的参数上下文。它继承来自 Google Sheets 目标参数和 Google Sheets 源参数的参数上下文的参数。

下表描述了您可以根据参数上下文配置的流参数:

Google Sheets 目标参数

参数

描述

目标数据库

用于永久保存数据的数据库。它必须已经存在于 Snowflake 中

目标架构

用于永久保存数据的架构。它必须已经存在于 Snowflake 中

Snowflake 账户标识符

Snowflake 账户名称格式为 [organization-name]-[account-name],数据永久保存在其中

Snowflake 身份验证策略

对 Snowflake 进行身份验证的策略。可能的值:SNOWFLAKE_SESSION_TOKEN – 当我们在 SPCS 上运行流时;KEY_PAIR – 当我们想使用私钥设置访问权限时

Snowflake 私钥

用于身份验证的 RSA 私钥。RSA 密钥必须按照 PKCS8 标准进行格式化,并具有标准的 PEM 头尾标记。请注意,必须定义 Snowflake 私钥文件或 Snowflake 私钥

Snowflake 私钥文件

该文件包含用于对 Snowflake 进行身份验证的 RSA 私钥,该私钥根据 PKCS8 标准进行格式化,并具有标准的 PEM 头尾标记。头标记行以 -----BEGIN PRIVATE 开头。选中 Reference asset 复选框,上传私钥文件。

Snowflake 私钥密码

与 Snowflake 私钥文件关联的密码

Snowflake 角色

查询执行期间使用的 Snowflake 角色

Snowflake 用户名

用于连接到 Snowflake 实例的用户名

Snowflake 仓库

用于运行查询的 Snowflake 仓库

Google Sheets 源参数

参数

描述

服务账户 JSON

包含服务账户凭据(如 client_id、client_email 和 private_key)的文件内容。复制文件的全部内容。

Google Sheets 引入参数

下表仅列出了那些未继承自其他参数上下文的参数。

参数

描述

日期时间呈现选项

确定应如何在输出中呈现日期。您可以选择以下选项之一:SERIAL_NUMBERFORMATTED_STRING。仅在 Value Render Option 参数设置为 UNFORMATTED_VALUE 时才选择 SERIAL_NUMBER。有关更多信息,请参阅 DateTimeRenderOption (https://developers.google.com/sheets/api/reference/rest/v4/DateTimeRenderOption)。

目标数据库

可在其中创建目标表的目标数据库。

目标架构

可在其中创建目标表的目标架构。

目标表前缀

目标表前缀是从 Google Sheets 中提取的报表数据存储的位置。连接器为每个范围创建一个目标表。 如果未提供范围,则使用工作表名称作为表标识符。工作表中的第一行代表目标表中的列名。

范围

要从电子表格中检索的范围列表。如果未指定范围,则将下载指定电子表格中的所有表格。以 A1 或 R1C1 表示法 (https://developers.google.com/sheets/api/guides/concepts#cell) 提供每个范围,用逗号分隔。例如:Sheet1!A1:B2,Sheet2!D4:E5,Sheet3

运行计划

运行计划,根据该计划从 Google Sheets 中检索数据并将其保存在 Snowflake 中。默认情况下,使用基于时间触发的调度策略,用户在此处指定间隔,例如 8h

电子表格 ID

电子表格的 唯一标识符 (https://developers.google.com/sheets/api/guides/concepts)。您可以在电子表格的 URL 中找到它。

数值呈现选项

确定应如何在输出中呈现值。您可以选择以下选项之一:FORMATTED_VALUEUNFORMATTED_VALUE。如果选择 FORMATTED_VALUE,则目标表中的所有列均为 VARCHAR 类型。有关更多信息,请参阅 ValueRenderOption (https://developers.google.com/sheets/api/reference/rest/v4/ValueRenderOption)。

备注

目标表标识符是目标表前缀和范围名称的组合,必须是唯一的。如果您从多个电子表格或单个工作表中下载数据,并且范围名称不是唯一的,则必须为每个流指定唯一的目标表前缀。如果目标表名称不是唯一的,连接器可能会失败,覆盖现有的目标表。

运行流

  1. 右键点击“飞机”图标并选择 Enable all Controller Services

  2. 右键点击导入的进程组并选择 Start。连接器开始数据引入。

备注

导入的 .xlsx 必须是 Google Sheets 格式。如果您要导入文件,请确保在运行流之前将文件转换为 Google Sheets 格式。无法读取 Google Sheets 以外的任何格式的电子表格。有关更多信息,请参阅 将文件转换为 Google Sheets 格式 (https://support.google.com/docs/answer/9331167?hl=en#2.5)。

语言: 中文