
OneSignal Snowflake 集成概览
概览
OneSignal + Snowflake 集成支持两个强大的数据管道:- 导出:自动将消息事件数据(推送、邮件、短信、应用内消息)从 OneSignal 发送到 Snowflake 进行分析和报告。
- 导入:从您的 Snowflake 数据集将自定义用户事件同步到 OneSignal,以触发自动化 Journey 和个性化消息。
将 OneSignal 事件导出到 Snowflake
将消息性能和参与事件(如发送、打开、点击)发送到 Snowflake,以便:- 构建自定义仪表板和报告
- 跟踪各渠道的传递和参与趋势
- 将 OneSignal 数据与其他业务数据结合进行分析
- OneSignal 专业计划(免费应用不可用)。
- Snowflake 账户
- 确保您的 Snowflake 账户具有
IMPORT SHARE
和CREATE DATABASE
角色。- 我们建议使用
ACCOUNTADMIN
角色来接受共享。
- 我们建议使用
1. 注册
要激活 Snowflake 集成,您需要通过 OneSignal Marketplace 列表 请求访问消息事件数据。之后我们会联系您的团队以获取更多信息。2. 提供账户信息
一旦我们与您的团队联系,您需要向我们提供一些详细信息,以便我们与您共享数据。我们需要您的 Snowflake 账户 ID 和您的 Snowflake 组织 ID。获取该信息最简单的方法是点击”复制账户标识符”按钮(如下所示)。您应该通过 OneSignal Marketplace 列表 与我们联系。但是,如果您对提供账户信息有任何进一步的问题,可以发送电子邮件至
snowflake-data-sharing@onesignal.com

复制 Snowflake 账户标识符
- 来自 OneSignal 欢迎您进入计划的邮件
- 来自 Snowflake 通知数据共享完成的邮件

Snowflake 数据共享通知邮件
3. 在 Snowflake 中接受数据共享
一旦您收到来自 Snowflake 的邮件通知数据共享完成,您应该能够登录 Snowflake 应用并接受数据共享。 导航到 数据 → 私有共享,您应该能够看到一个新的私有共享列表。一旦您点击 获取,您的数据将开始复制到您的区域。
Snowflake 私有共享界面
CREATE DATABASE
或 IMPORT SHARE
。我们建议切换到 ACCOUNTADMIN
角色。
数据复制需要一些时间。一旦数据可用,Snowflake 会发送额外的邮件跟进。您应该看到如下所示的对话框

数据复制状态对话框

数据库配置对话框

数据共享设置完成
就这样!现在数据正在从 OneSignal 同步到 Snowflake。同步频率设置为每 24 小时一次,所以初始数据可能要到第二天才能使用。
事件和属性
Snowflake Marketplace 上可用数据的概览消息事件数据
详情请参见事件流。 对于用户生成的每个消息事件,以下元数据将附加到记录中。Column Name | Type | Description | Example |
---|---|---|---|
event_id | UUID | 表示事件的唯一 ID | dc76df03-287c-403a-aabd-b2d4fe44e5c6 |
event_kind | string | 发生的事件类型。事件类型列表可以在这里找到。 | message.email.opened |
event_impression_timestamp | unix_timestamp | OneSignal 处理事件的时间 | 1684951205 |
subscription_id | UUID | 表示设备/订阅的唯一 ID | 6e8b6978-75a4-4882-878c-2d15a78c2409 |
subscription_language | string | 此订阅的语言 | en |
subscription_timezone | integer | 此订阅的指定时区 | -25200 |
subscription_device_type | string | 此订阅使用的设备类型。 | SMS |
onesignal_id | UUID | 产生印象的用户的 onesignal_id | dc76df03-287c-403a-aabd-b2d4fe44e5c6 |
external_id | string | 产生印象的用户的 external_id | MyExternalId |
message_id | UUID | 表示消息的唯一 ID | dc76df03-287c-403a-aabd-b2d4fe44e5c6 |
message_name | string | 通知/消息的可读 ID | Campaign 1 |
message_title | string | 通知/消息的标题。目前仅限英语 | Bonus 50 coins when you play! |
message_body | string | 消息的正文。(截断)目前仅限英语。 | Play against your friends and earn an additional... |
消息事件类型
详情请参见事件流。 消息事件是我们将在 Snowflake Marketplace 上提供的第一类数据。如有任何其他数据类别的请求,请通过snowflake-data-sharing@onesignal.com
联系我们!
数据保留
通过 Snowflake 从 OneSignal 共享的数据保留期为 30 天。为确保超出此时间范围的数据保存,我们建议您将相关数据复制到您自己的表中。从 Snowflake 导入事件
将行为事件数据从 Snowflake 发送到 OneSignal,以便:- 基于用户活动触发 Journey
- 基于行为数据个性化消息
- 访问自定义事件(目前处于测试阶段)
- 升级账户计划(免费应用不可用)。
- 具有数据仓库访问权限的 Snowflake 账户
- 存储在 Snowflake 表或视图中的事件数据
- 从 OneSignal 到您的 Snowflake 实例的网络连接
- 具有适当权限的用户凭据
1
为 OneSignal 创建专用角色
按照 Snowflake 最佳实践创建角色层次结构:
2
创建专用数据仓库
为 OneSignal 操作创建成本优化的数据仓库:
3
创建用户并授予权限
创建 OneSignal 用户并授予访问您的事件数据的权限:
4
创建记账数据库(高级同步引擎)
为 OneSignal 的同步状态管理创建私有数据库:
如果使用基本同步引擎或只读模式,请跳过此步骤。
5
配置身份验证
为增强安全性,设置密钥对身份验证(推荐):
- 按照 Snowflake 文档 生成公钥/私钥对
- 在您的 Snowflake 用户上配置公钥
- 在 OneSignal 的连接设置中使用私钥
6
连接到 OneSignal
在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成。选择 Snowflake 并提供以下连接详细信息:
- **账户名称:**您的 Snowflake 账户标识符(例如,
abc123.us-east-1
) - 数据仓库:
CENSUS_WAREHOUSE
- 用户:
CENSUS
- **数据库:**您的事件数据数据库名称
- **架构:**您的事件数据架构名称
- **身份验证:**密钥对(提供私钥和可选密码短语)
事件数据映射
将您的 映射到 OneSignal 的自定义事件格式:OneSignal 字段 | 描述 | 必需 | |
---|---|---|---|
name | event_name | 事件标识符 | 是 |
external_id | user_id | 用户标识符 | 是 |
timestamp | event_timestamp | 事件发生时间 | 否 |
properties | event_data | 否 |
示例事件表架构
SQL 查询模式
编写自定义 SQL 查询来转换您的事件数据:高级配置
管理数据仓库成本
- 使用 X-Small 数据仓库大小进行成本优化
- 配置自动暂停(60 秒)和自动恢复
- 在非高峰时段安排同步
- 考虑与其他批处理系统共享数据仓库
实时同步支持
对于实时事件处理,在您的事件表上启用变更跟踪:网络安全
如果使用 Snowflake 的允许 IP 网络策略,请将 OneSignal 的 IP 地址添加到您的允许列表中。请联系 OneSignal 支持获取当前的 IP 范围。限制
- 复杂的分析查询可能会影响数据仓库性能和成本
- 用户/密码身份验证将在 2025 年 11 月被弃用
- CENSUS 数据库仅保留用于 OneSignal 操作
断开与 OneSignal 的数据共享
请通过snowflake-data-sharing@onesignal.com
联系我们,请求停用您与 OneSignal 的数据共享。
常见问题
我应该使用哪种身份验证方法?
使用密钥对身份验证(推荐)。用户/密码身份验证将从 2025 年 11 月开始被 Snowflake 阻止。我可以使用现有的数据仓库吗?
是的,您可以与其他批处理系统(如 dbt 或 Fivetran)共享数据仓库以优化成本。确保数据仓库具有足够的容量来满足您的事件处理需求。如何优化成本?
- 使用 X-Small 数据仓库大小
- 配置激进的自动暂停(60 秒)
- 在非高峰时段安排同步
- 使用每小时/每日同步而不是连续同步