跳到内容
全部文章
Setup

数据仓库:导出到 BigQuery、Snowflake 和 Redshift

将 CRM 对象(线索、联系人、商机……)发送到你的数据仓库。BigQuery 为自动同步,Snowflake 和 Redshift 通过“文件 + COPY”方式同步。

数据仓库集成会将你的 CRM 对象导出到你公司自己的数据仓库(“自带账户”模式,即 BYO)。数据仓库归你所有:我们这边不产生任何费用、加价或中间环节。一切默认处于未启用状态:在你配置好凭证并激活之前,不会发送任何数据。读取始终仅限于你所属租户的数据。

每个对象都会以固定列的行形式导出:id、created_at、updated_at、owner_id,以及每个字段各一列(该字段的 api_name)。与 BI 连接器使用相同的列结构,因此你只需映射一次。

前提条件

  • BigQuery:在 Google Cloud 中拥有一个项目、一个目标数据集,以及一个在该数据集上拥有“BigQuery Data Editor”角色的服务账户,并生成该账户的 JSON 密钥。
  • Snowflake/Redshift:一个你自己控制的暂存位置(S3/GCS/Azure 存储桶的签名 URL)用于接收文件,以及可以在数据仓库中运行 COPY 命令的访问权限。
  • 在 Sellio 中拥有管理员权限,以便在“设置 → 集成”中保存凭证并激活导出功能。

在哪里配置

  1. 打开“设置 → 集成”。
  2. 选择你的数据仓库卡片:Google BigQuery、Snowflake 或 Amazon Redshift。
  3. 填写凭证,选择要导出的对象并激活。
  4. 使用“立即导出”按需发送。

BigQuery(自动发送)

在 BigQuery 中,发送是自动的,通过流式写入(tabledata.insertAll)实现。你提供一个服务账户,我们会直接写入你的表。

  1. 在 Google Cloud 中创建一个服务账户,并为其在目标数据集上授予“BigQuery Data Editor”角色。
  2. 为该服务账户生成一个 JSON 密钥。
  3. 在数据集中,为每个对象创建一张带有固定列的表(id STRING、created_at TIMESTAMP、updated_at TIMESTAMP、owner_id STRING,以及每个字段各一列)。
  4. 在 BigQuery 卡片中,输入 Project ID、Dataset、可选的表前缀,并粘贴密钥 JSON。激活后点击“立即导出”。
💡 每个对象的表名为 <前缀><api_name>(例如,前缀“crm_” → 表名 crm_opportunity)。如果不设置前缀,表名就是 api_name 本身。发送时使用记录的 id 作为 insertId,因此重复发送同一批数据不会产生重复记录。

Snowflake 和 Redshift(文件 + COPY)

对于 Snowflake 和 Redshift,我们会为每个对象生成一个文件(默认 NDJSON,也可选 CSV),并将其发送到你自己控制的暂存 URL,例如你的 S3/GCS/Azure 存储桶的签名 URL。最终加载到数据仓库的操作由 COPY 命令完成,由你在自己的数据仓库中运行(或安排定时任务)。

  1. 在 Snowflake/Redshift 卡片中,输入暂存 URL(文件目的地)、格式(NDJSON 或 CSV),如目标要求,还需输入认证请求头 + 密钥。
  2. 选择对象并激活。点击“立即导出”:我们会将文件 PUT 到你的暂存区。
  3. 在你的数据仓库中运行 COPY,将文件从暂存区加载到表中。
示例: Snowflake:COPY INTO crm.opportunity FROM @my_stage/opportunity FILE_FORMAT = (TYPE = JSON) MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;
示例: Redshift:COPY crm.opportunity FROM 's3://my-bucket/opportunity.json' IAM_ROLE 'arn:aws:iam::...:role/redshift' FORMAT AS JSON 'auto ignorecase';
💡 凭证(BigQuery 服务账户密钥、暂存区密钥)以加密方式存储,不会再次显示。如需更改,请重新粘贴。

如何测试

  1. 激活连接器,选择一个对象,点击“立即导出”。
  2. BigQuery:在数据集中打开 <前缀><api_name> 表,确认行数据已到达(重复发送同一批数据不会产生重复,因为 insertId 是记录的 id)。
  3. Snowflake/Redshift:确认文件已写入你的暂存区(通过 PUT);然后运行 COPY 并检查表中的行数据。

故障排查

  • BigQuery 403/权限被拒:服务账户在该数据集上没有“BigQuery Data Editor”权限,或 JSON 密钥不完整。请重新授予角色并重新粘贴 JSON。
  • BigQuery“table not found”:请先按固定列(id STRING、created_at/updated_at TIMESTAMP、owner_id STRING,以及每个字段各一列)创建对应对象的表。表名为 <前缀><api_name>。
  • Snowflake/Redshift:PUT 到暂存区失败:签名 URL 已过期或不允许写入,或目标的认证请求头有误。请生成新的 URL 并检查密钥。
  • COPY 未能加载数据:请检查 FILE_FORMAT(NDJSON 还是 CSV)以及列映射(例如 Snowflake 中的 MATCH_BY_COLUMN_NAME;Redshift 中的 FORMAT AS JSON)。
  • 没有导出任何数据:请确认连接器已激活,且已选择了要导出的对象。

在系统内打开这篇文章

读完想看看它实际运行的样子吗?

账户是免费的,完整手册在系统内随时可看,还有一个助手会基于这份内容回答你的问题。

免费创建账户
数据仓库:导出到 BigQuery、Snowflake 和 Redshift · Sellio