跳转到主要内容

OneSignal Snowflake 集成概览


概览

OneSignal + Snowflake 集成支持两个强大的数据管道:
  • 导出:自动将消息事件数据(推送、邮件、短信、应用内消息)从 OneSignal 发送到 Snowflake 进行分析和报告。
  • 导入:从您的 Snowflake 数据集将自定义用户事件同步到 OneSignal,以触发自动化 Journey 和个性化消息。
这些集成为您提供了用户参与数据的完全控制权——支持高级分析和实时行为驱动的消息传递。

将 OneSignal 事件导出到 Snowflake

将消息性能和参与事件(如发送、打开、点击)发送到 Snowflake,以便:
  • 构建自定义仪表板和报告
  • 跟踪各渠道的传递和参与趋势
  • 将 OneSignal 数据与其他业务数据结合进行分析
要求
  • OneSignal 专业计划(免费应用不可用)。
  • Snowflake 账户
  • 确保您的 Snowflake 账户具有 IMPORT SHARECREATE 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 DATABASEIMPORT SHARE。我们建议切换到 ACCOUNTADMIN 角色。 数据复制需要一些时间。一旦数据可用,Snowflake 会发送额外的邮件跟进。您应该看到如下所示的对话框

数据复制状态对话框

一旦数据准备就绪,您的列表应该有一个新的 获取 按钮可用。点击 获取 按钮,您会看到一个新的对话框

数据库配置对话框

设置数据库名称和数据库角色为您喜欢的名称。然后点击 获取

数据共享设置完成

就这样!现在数据正在从 OneSignal 同步到 Snowflake。同步频率设置为每 24 小时一次,所以初始数据可能要到第二天才能使用。

事件和属性

Snowflake Marketplace 上可用数据的概览

消息事件数据

详情请参见事件流 对于用户生成的每个消息事件,以下元数据将附加到记录中。
Column NameTypeDescriptionExample
event_idUUID表示事件的唯一 IDdc76df03-287c-403a-aabd-b2d4fe44e5c6
event_kindstring发生的事件类型。事件类型列表可以在这里找到。message.email.opened
event_impression_timestampunix_timestampOneSignal 处理事件的时间1684951205
subscription_idUUID表示设备/订阅的唯一 ID6e8b6978-75a4-4882-878c-2d15a78c2409
subscription_languagestring此订阅的语言en
subscription_timezoneinteger此订阅的指定时区-25200
subscription_device_typestring此订阅使用的设备类型。SMS
onesignal_idUUID产生印象的用户的 onesignal_iddc76df03-287c-403a-aabd-b2d4fe44e5c6
external_idstring产生印象的用户的 external_idMyExternalId
message_idUUID表示消息的唯一 IDdc76df03-287c-403a-aabd-b2d4fe44e5c6
message_namestring通知/消息的可读 IDCampaign 1
message_titlestring通知/消息的标题。目前仅限英语Bonus 50 coins when you play!
message_bodystring消息的正文。(截断)目前仅限英语。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 最佳实践创建角色层次结构:
-- Create a role for the census user
CREATE ROLE CENSUS_ROLE;

-- Ensure the sysadmin role inherits any privileges the census role is granted
GRANT ROLE CENSUS_ROLE TO ROLE SYSADMIN;
2

创建专用数据仓库

为 OneSignal 操作创建成本优化的数据仓库:
-- Create a warehouse for the census role, optimizing for cost over performance
CREATE WAREHOUSE CENSUS_WAREHOUSE WITH
    WAREHOUSE_SIZE = XSMALL
    AUTO_SUSPEND = 60
    AUTO_RESUME = TRUE
    INITIALLY_SUSPENDED = FALSE;

GRANT USAGE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT OPERATE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT MONITOR ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
3

创建用户并授予权限

创建 OneSignal 用户并授予访问您的事件数据的权限:
-- Create the census user
CREATE USER CENSUS WITH
    DEFAULT_ROLE = CENSUS_ROLE
    DEFAULT_WAREHOUSE = CENSUS_WAREHOUSE
    PASSWORD = '<strong-unique-password>';

GRANT ROLE CENSUS_ROLE TO USER CENSUS;

-- Grant access to your event data (replace with your actual database/schema)
GRANT USAGE ON DATABASE "<your-database>" TO ROLE CENSUS_ROLE;
GRANT USAGE ON SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
4

创建记账数据库(高级同步引擎)

为 OneSignal 的同步状态管理创建私有数据库:
-- Create a private bookkeeping database
CREATE DATABASE "CENSUS";
GRANT ALL PRIVILEGES ON DATABASE "CENSUS" TO ROLE CENSUS_ROLE;

CREATE SCHEMA "CENSUS"."CENSUS";
GRANT ALL PRIVILEGES ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
GRANT CREATE STAGE ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
如果使用基本同步引擎或只读模式,请跳过此步骤。
5

配置身份验证

为增强安全性,设置密钥对身份验证(推荐):
  1. 按照 Snowflake 文档 生成公钥/私钥对
  2. 在您的 Snowflake 用户上配置公钥
  3. 在 OneSignal 的连接设置中使用私钥
或者,您可以使用密码身份验证(已弃用 - 2025 年 11 月将被阻止)。
6

连接到 OneSignal

在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成选择 Snowflake 并提供以下连接详细信息:
  • **账户名称:**您的 Snowflake 账户标识符(例如,abc123.us-east-1
  • 数据仓库:CENSUS_WAREHOUSE
  • 用户:CENSUS
  • **数据库:**您的事件数据数据库名称
  • **架构:**您的事件数据架构名称
  • **身份验证:**密钥对(提供私钥和可选密码短语)

事件数据映射

将您的 映射到 OneSignal 的自定义事件格式:
OneSignal 字段描述必需
nameevent_name事件标识符
external_iduser_id用户标识符
timestampevent_timestamp事件发生时间
propertiesevent_data

示例事件表架构

-- Example Snowflake event table
CREATE TABLE analytics.user_events (
    event_id STRING,
    event_name STRING NOT NULL,
    user_id STRING NOT NULL,
    event_timestamp TIMESTAMP_TZ DEFAULT CURRENT_TIMESTAMP(),
    event_properties VARIANT,
    session_id STRING,
    device_type STRING
);

SQL 查询模式

编写自定义 SQL 查询来转换您的事件数据:
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, CURRENT_TIMESTAMP())
    AND event_properties:value::NUMBER > 100
ORDER BY event_timestamp DESC;

高级配置

管理数据仓库成本

  • 使用 X-Small 数据仓库大小进行成本优化
  • 配置自动暂停(60 秒)和自动恢复
  • 在非高峰时段安排同步
  • 考虑与其他批处理系统共享数据仓库

实时同步支持

对于实时事件处理,在您的事件表上启用变更跟踪:
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;

网络安全

如果使用 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 秒)
  • 在非高峰时段安排同步
  • 使用每小时/每日同步而不是连续同步

I