Documentation Index
Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
Use this file to discover all available pages before exploring further.
OneSignal + Amazon Redshift 集成可以将您的 Redshift 数据仓库中的自定义事件同步到 OneSignal,以基于用户行为触发自动化消息活动和旅程。
Amazon Redshift 是一个完全托管的、PB 级的数据仓库服务,使您能够使用现有的商业智能工具经济高效地分析大量数据。
- 访问自定义事件(目前处于测试阶段)
- 升级账户计划(免费应用不可用)。
Amazon Redshift 要求
- 具有网络访问权限的 Redshift 集群
- 具有适当权限的数据库用户
- 包含结构化行为数据的事件表
- 从 OneSignal 到您的 Redshift 集群的网络连接
为 OneSignal 创建专用用户
创建一个具有适当权限的专用用户账户:-- Create OneSignal user with strong password
CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';
-- Create private bookkeeping schema for sync state (skip if read-only mode)
CREATE SCHEMA CENSUS;
-- Grant full access to bookkeeping schema (skip if read-only mode)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;
-- Ensure access to existing objects in bookkeeping schema (skip if read-only mode)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
授予事件数据权限
为包含事件数据的模式提供读取访问权限:-- Grant schema access (repeat for each schema with event data)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;
-- Grant read access to existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;
-- Grant read access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;
-- Grant execute permissions on functions
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
配置网络访问
将 OneSignal 的 IP 地址添加到您的 Redshift 安全组中。Redshift 默认阻止外部访问。您可以在集成设置中找到您所在区域的 OneSignal IP 地址。有关更多信息,请访问 AWS Redshift 帮助中心。
连接到 OneSignal
在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成。
- 从列表中选择 Amazon Redshift
- 输入您的连接详细信息:
- **主机:**您的 Redshift 集群端点
- **端口:**通常为 5439
- **数据库:**您的数据库名称
- 用户名:
CENSUS
- **密码:**您创建的密码
- 测试连接
- 配置包含事件数据的表
事件数据映射
将您的 映射到 OneSignal 的自定义事件格式:
| OneSignal 字段 | 描述 | 必需 | |
|---|
name | event_name | 事件标识符 | 是 |
external_id | user_id | 用户标识符 | 是 |
timestamp | event_timestamp | 事件发生时间 | 否 |
properties | event_data | 否 | |
示例事件表模式
-- Example Redshift event table
CREATE TABLE analytics.user_events (
event_id BIGINT IDENTITY(1,1),
event_name VARCHAR(100) NOT NULL,
user_id VARCHAR(255) NOT NULL,
event_timestamp TIMESTAMP DEFAULT GETDATE(),
event_data SUPER,
session_id VARCHAR(255),
created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);
SQL 查询示例
编写自定义 SQL 查询来转换您的事件数据:
-- Example: Recent high-value events
SELECT
event_name,
user_id,
event_timestamp,
event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETDATE())
AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;
dbt 集成
如果您在 Redshift 中使用 dbt,请确保 OneSignal 在每次 dbt 运行后保持访问权限:
选项1:细粒度权限
在您的 dbt 项目中添加后置钩子,以在每个模型构建后授予访问权限:
-- In your dbt model
{{ config(
post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}
选项2:默认权限(推荐)
为您的 dbt 生产用户授予默认权限:
-- Must be run by Redshift superuser
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;
高级网络配置
SSH 隧道配置
对于私有网络上的 Redshift 集群:
- 创建 SSH 用户:在您的 SSH 主机上设置专用用户
- 配置隧道:在 OneSignal 集成设置中启用“使用 SSH 隧道”
- 安装密钥对:将 OneSignal 的公钥添加到
~/.ssh/authorized_keys
- 测试连接:验证隧道连接
VPC 配置
对于 AWS VPC 内的 Redshift:
OneSignal 使用 UNLOAD 命令进行高效的批量数据提取。VPC 部署需要 S3 VPC 端点以允许 Redshift 与 S3 通信。
设置 S3 VPC 端点:
- 在 AWS 控制台中导航到 VPC 服务
- 为 S3 服务创建 VPC 端点
- 与您的 Redshift 子网关联
- 配置路由表
性能优化
分布和排序键
为分析工作负载优化您的事件表:
-- Distribute by user_id for user-centric queries
CREATE TABLE analytics.user_events (
-- columns
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);
列式存储
利用 Redshift 的列式存储进行分析:
- 压缩:Redshift 自动压缩列
- 区域映射:通过排序数据提高查询性能
- 面向列:对事件数据的分析查询高效
- 多个模式需要分别授予权限
- 引用跨模式表的视图需要额外权限
- 复杂的存储过程访问可能需要额外设置
- VPC 部署需要 S3 VPC 端点配置
常见问题
OneSignal 如何处理大量事件数据?
OneSignal 使用 Redshift 的 UNLOAD 命令进行高效的批量数据提取,该命令为大规模分析工作负载进行了优化。
我可以使用只读模式吗?
可以,如果您希望更简单的设置并且不能允许 OneSignal 创建表,您可以跳过记账模式创建并使用只读模式。
dbt 兼容性怎么样?
OneSignal 提供特定的 dbt 集成模式,以确保在 dbt 运行后维持权限。根据您的设置使用后置钩子或默认权限。