数据仓库:导出到 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 中拥有管理员权限,以便在“设置 → 集成”中保存凭证并激活导出功能。
在哪里配置
- 打开“设置 → 集成”。
- 选择你的数据仓库卡片:Google BigQuery、Snowflake 或 Amazon Redshift。
- 填写凭证,选择要导出的对象并激活。
- 使用“立即导出”按需发送。
BigQuery(自动发送)
在 BigQuery 中,发送是自动的,通过流式写入(tabledata.insertAll)实现。你提供一个服务账户,我们会直接写入你的表。
- 在 Google Cloud 中创建一个服务账户,并为其在目标数据集上授予“BigQuery Data Editor”角色。
- 为该服务账户生成一个 JSON 密钥。
- 在数据集中,为每个对象创建一张带有固定列的表(id STRING、created_at TIMESTAMP、updated_at TIMESTAMP、owner_id STRING,以及每个字段各一列)。
- 在 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 命令完成,由你在自己的数据仓库中运行(或安排定时任务)。
- 在 Snowflake/Redshift 卡片中,输入暂存 URL(文件目的地)、格式(NDJSON 或 CSV),如目标要求,还需输入认证请求头 + 密钥。
- 选择对象并激活。点击“立即导出”:我们会将文件 PUT 到你的暂存区。
- 在你的数据仓库中运行 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 服务账户密钥、暂存区密钥)以加密方式存储,不会再次显示。如需更改,请重新粘贴。
如何测试
- 激活连接器,选择一个对象,点击“立即导出”。
- BigQuery:在数据集中打开 <前缀><api_name> 表,确认行数据已到达(重复发送同一批数据不会产生重复,因为 insertId 是记录的 id)。
- 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)。
- 没有导出任何数据:请确认连接器已激活,且已选择了要导出的对象。