メインコンテンツへスキップ

概要

OneSignal + MotherDuck統合により、MotherDuckデータベースからOneSignalへのカスタムイベントの自動同期が可能になり、ユーザーの行動に基づいた自動化されたメッセージングキャンペーンとJourneysをトリガーできます。 MotherDuckは、SQLのシンプルさで高速OLAP(オンライン分析処理)機能を提供するDuckDB-in-the-cloudサービスです。

要件

  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)

MotherDuck

  • データベースアクセス権を持つMotherDuckアカウント
  • 認証用のサービストークン
  • イベントデータを含むデータベース
  • 構造化されたイベント情報を持つテーブルまたはビュー

セットアップ

1

MotherDuckサービストークンを作成する

OneSignalがMotherDuckに接続するためのアクセストークンを生成します:
  1. app.motherduck.comでMotherDuck Web UIにログインします
  2. 左上のプロフィールをクリックします
  3. Settings > General > Access Tokensに移動します
  4. Create Tokenをクリックします
  5. 有効期限を設定します(または無制限のままにします)
  6. 生成されたサービストークンをコピーします
2

イベントデータを準備する

MotherDuckデータベースに適切に構造化されたイベントテーブルが含まれていることを確認します:
-- Example event table structure
CREATE TABLE user_events (
    event_name VARCHAR,
    user_id VARCHAR,
    event_timestamp TIMESTAMP,
    event_properties JSON,
    session_id VARCHAR
);
3

OneSignalに接続する

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。MotherDuckを選択し、次を提供します:
  • Service Token: ステップ1のトークン
  • Database Name: MotherDuckデータベース名
  • Connection String: md:your_database_name
4

データ同期を構成する

テーブルを選択するか、カスタムSQLクエリを記述して、同期するイベントデータを定義します:
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM user_events
WHERE event_timestamp >= CURRENT_DATE - INTERVAL 7 DAYS

イベントデータマッピング

をOneSignalのカスタムイベント形式にマッピングします:
OneSignalフィールド説明必須
nameevent_nameイベント識別子はい
external_iduser_idユーザー識別子はい
timestampevent_timestampイベントが発生した時刻いいえ
propertiesevent_dataいいえ

イベントクエリの例

-- Optimized event query for OneSignal sync
SELECT
    event_name,
    user_id,
    event_timestamp,
    {
        'source': 'motherduck',
        'session_id': session_id,
        'device_type': device_type,
        'value': event_value
    }::JSON as event_properties
FROM analytics.user_events
WHERE event_timestamp >= CURRENT_TIMESTAMP - INTERVAL 1 DAY
ORDER BY event_timestamp DESC

処理モード

テーブルモード

MotherDuckデータベースから直接テーブル全体を同期します。OneSignalは自動的に列をイベントフィールドにマッピングします。

SQLクエリモード

カスタムDuckDB SQLクエリを記述して、イベントデータを変換およびフィルタリングします:
-- Advanced event aggregation
SELECT
    'daily_summary' as event_name,
    user_id,
    DATE_TRUNC('day', event_timestamp) as event_timestamp,
    {
        'total_events': COUNT(*),
        'unique_sessions': COUNT(DISTINCT session_id),
        'last_activity': MAX(event_timestamp)
    }::JSON as event_properties
FROM user_events
WHERE event_timestamp >= CURRENT_DATE - INTERVAL 7 DAYS
GROUP BY user_id, DATE_TRUNC('day', event_timestamp)

制限事項

  • クエリの複雑さが同期パフォーマンスに影響します
  • 大きな結果セットが同期速度に影響する可能性があります
  • JSON解析には適切な列の型指定が必要です

FAQ

MotherDuckでクエリパフォーマンスを最適化するにはどうすればよいですか?

必要な列のみを選択し、クエリの早い段階でフィルタを適用することで、DuckDBの列指向ストレージの利点を活用します。

複数のMotherDuckデータベースから同期できますか?

はい、アカウント内の各MotherDuckデータベースに対して個別の統合を作成できます。