跳到内容
All articles
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,将文件从暂存区加载到表中。
Example: Snowflake:COPY INTO crm.opportunity FROM @my_stage/opportunity FILE_FORMAT = (TYPE = JSON) MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;
Example: 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)。
  • 没有导出任何数据:请确认连接器已激活,且已选择了要导出的对象。

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

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