跳转到主要内容

概览

OneSignal + ClickHouse集成支持从您的ClickHouse分析数据库自动同步自定义事件到OneSignal。这让您能够基于存储在高性能列式数据库中的用户行为数据触发自动化旅程和个性化消息活动。

要求

  • 访问自定义事件(目前处于测试阶段)
  • 升级账户计划(免费应用不可用)。

ClickHouse要求

  • ClickHouse服务器(自托管或云端)
  • 数据库凭据,具有对事件表的读取权限
  • 事件数据表,包含具有合适架构的行为数据

设置

1

为OneSignal创建ClickHouse用户

为OneSignal创建专用用户账户,具有对事件表的只读访问权限:
CREATE USER onesignal_reader IDENTIFIED BY 'strong_password';
GRANT SELECT ON event_database.* TO onesignal_reader;
2

配置网络访问

确保OneSignal能够连接到您的ClickHouse实例:
  • 自托管:允许来自OneSignal IP地址的连接
  • ClickHouse云:将OneSignal IP添加到您的允许列表
  • 端口:默认ClickHouse端口为8123(HTTP)或9000(原生)
3

在OneSignal中添加集成

在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成选择ClickHouse并提供:
  • 主机:您的ClickHouse服务器主机名或IP
  • 端口:ClickHouse端口(默认:HTTP为8123,原生为9000)
  • 数据库:包含事件表的数据库名称
  • 用户名onesignal_reader(或您选择的用户名)
  • 密码:ClickHouse用户的密码
  • 协议:HTTP或原生(建议使用HTTP简化操作)
4

配置事件数据源

指定包含事件数据的ClickHouse表:
  • :包含事件记录的表名(例如,user_events
  • 事件查询:可选SQL查询,用于过滤或转换事件数据
您的事件表应包含以下列:
  • 事件名称/类型(String)
  • 用户标识符(String)
  • 事件时间戳(DateTime)
  • 其他事件属性(JSON或单独列)
5

测试连接

点击测试连接以验证OneSignal能够访问您的ClickHouse数据库并读取事件数据。

事件数据映射

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

高级配置

自定义SQL查询

在同步到OneSignal之前使用自定义SQL过滤或转换事件数据:
SELECT
  event_name,
  user_id,
  toDateTime(event_timestamp) as timestamp,
  toJSONString(
    map(
      'product_id', product_id,
      'purchase_amount', purchase_amount,
      'category', category
    )
  ) as payload
FROM user_events
WHERE event_timestamp >= now() - INTERVAL 7 DAY
  AND event_name IN ('purchase', 'signup', 'upgrade')
ORDER BY event_timestamp DESC

性能优化

ClickHouse针对分析查询进行了优化。考虑以下方面:
  • 分区:在事件时间戳上使用基于日期的分区
  • 索引:在user_id和event_name上创建适当的索引
  • 物化视图:预聚合事件数据以提高查询速度
ClickHouse针对仅追加工作负载进行了优化。确保您的事件数据遵循此模式以获得最佳性能。

常见问题

OneSignal多久从ClickHouse同步一次事件?

OneSignal根据您配置的计划同步事件数据,最小间隔为15分钟。

我可以从多个ClickHouse表同步事件吗?

是的,您可以为不同的表创建多个集成,或使用UNION查询合并多个表的数据。
I