
OneSignal Databricks 통합 개요
개요
OneSignal + Databricks 통합은 양방향 데이터 동기화를 지원합니다:- 분석, 대시보드 및 보고를 위해 OneSignal 메시지 이벤트를 Databricks로 내보내기.
- Databricks에서 OneSignal로 사용자 지정 이벤트를 가져와서 Journeys 및 개인화된 캠페인을 트리거.
OneSignal 이벤트를 Databricks로 내보내기
거의 실시간 분석 및 가시성을 위해 OneSignal에서 Databricks 레이크하우스로 푸시, 이메일, 인앱 및 SMS 이벤트를 동기화합니다. 요구 사항- Professional 플랜
- 사용자 지정 이벤트 활성화(이벤트 가져오기용)
- Databricks 플랫폼: AWS, Azure 또는 GCP
- Databricks 플랜: Premium 이상
- Databricks Unity Catalog(거버넌스 권장)
- 쿼리를 위한 Databricks SQL Warehouse
- Delta Lake 이벤트 테이블(사용자 지정 이벤트 가져오기용)
1. SQL warehouse 세부 정보 수집
Databricks 워크스페이스에 로그인
warehouse 선택
다음 세부 정보 저장
- Server Hostname
- Port
- HTTP Path

Fivetran 설정을 위한 Databricks SQL 연결 세부 정보
2. 서비스 주체 만들기
Service Principals 페이지로 이동
새 서비스 주체 추가
서비스 주체 이름 지정
onesignal-sync).
서비스 주체 추가 모달, 'Add new' 옵션 강조 표시
3. 시크릿 생성
생성된 주체 클릭
Secrets 탭으로 이동
시크릿 생성

API 인증을 위한 OAuth 시크릿 및 클라이언트 ID를 보여주는 Databricks '시크릿 생성' 모달
4. 권한 할당
Catalog으로 이동하여 Permissions 탭 열기
Grant 클릭
서비스 주체에 다음 권한 할당
- USE CATALOG
- USE SCHEMA
- SELECT
- MODIFY
- CREATE SCHEMA
- CREATE TABLE

사용자 지정 카탈로그 권한이 선택된 Databricks 주체에 대한 권한 할당 화면.
5. OneSignal 연결
통합 활성화
세부 정보 입력
- Server Hostname
- Port
- HTTP Path
- Catalog Name
- Schema Name
- Service Principal 자격 증명(ID + Secret)

카탈로그, 호스트 이름, HTTP 경로 및 OAuth 자격 증명 필드가 있는 OneSignal Databricks 구성 양식.
통합 구성
- Sync Frequency: 15분마다
- Dataset/Table Names:
onesignal_events_<app-id>및message_events로 미리 설정(편집 가능) - Event Types: 동기화할 항목 선택—전체 또는 필요한 것만 선택
이벤트 선택

동기화 상태, 데이터 세트 구성 및 선택된 메시지 이벤트 유형을 보여주는 OneSignal 이벤트 내보내기 설정 화면.
설정 완료
6. Databricks에서 데이터 보기
- Databricks에서 Catalog을 엽니다.
- 동기화가 완료되면 구성된 스키마가 나타납니다.
-
message_events테이블에 액세스하고 쿼리합니다.
프로덕션 스키마 아래 OneSignal 메시지 이벤트 테이블을 보여주는 Databricks Catalog 보기.
-
샘플 데이터 미리 보기를 위해 테이블을 클릭하세요.

동기화된 OneSignal 이벤트 필드가 있는 message_events_1 테이블의 샘플 데이터.
support@onesignal.com으로 문의하세요.메시지 이벤트 및 속성
메시지 이벤트 종류
속성:event_kind
유형: String
메시지 및 이벤트의 종류(예: message.push.received, message.push.sent).
| 메시지 이벤트 (OneSignal) | event_kind | 설명 |
|---|---|---|
| Push Sent | message.push.sent | 푸시 알림이 성공적으로 전송되었습니다. |
| Push Received | message.push.received | 전달된 푸시(전달 확인 참조). |
| Push Clicked | message.push.clicked | 사용자가 푸시를 클릭했습니다. |
| Push Failed | message.push.failed | 전달 실패. 메시지 보고서를 참조하세요. |
| Push Unsubscribed | message.push.unsubscribed | 사용자가 푸시 구독을 취소했습니다. |
| In-App Impression | message.iam.displayed | 인앱 메시지가 표시되었습니다. |
| In-App Clicked | message.iam.clicked | 인앱 메시지를 클릭했습니다. |
| In-App Page Viewed | message.iam.pagedisplayed | 인앱 페이지가 표시되었습니다. |
| Email Sent | message.email.sent | 이메일이 전달되었습니다. |
| Email Received | message.email.received | 수신자의 메일 서버가 이메일을 수락했습니다. |
| Email Opened | message.email.opened | 이메일이 열렸습니다. 이메일 보고서를 참조하세요. |
| Email Link Clicked | message.email.clicked | 이메일의 링크를 클릭했습니다. |
| Email Unsubscribed | message.email.unsubscribed | 수신자가 구독을 취소했습니다. |
| Email Marked Spam | message.email.resporedasspam | 스팸으로 표시되었습니다. 이메일 전달 가능성을 참조하세요. |
| Email Bounced | message.email.hardbounced | 영구적인 전달 실패로 인한 반송. |
| Email Failed | message.email.failed | 전달이 실패했습니다. |
| Email Suppressed | message.email.supressed | 억제 목록으로 인해 억제되었습니다. |
| SMS Sent | message.sms.sent | SMS가 전송되었습니다. |
| SMS Delivered | message.sms.delivered | SMS가 성공적으로 전달되었습니다. |
| SMS Failed | message.sms.failed | SMS 전달이 실패했습니다. |
| SMS Undelivered | message.sms.undelivered | SMS가 거부되었거나 도달할 수 없습니다. |
이벤트 데이터 스키마
사용자가 생성한 각 메시지 이벤트에 대해 다음 메타데이터가 레코드에 첨부됩니다.| 열 이름 | 유형 | 설명 |
|---|---|---|
event_id | UUID | 이벤트의 고유 식별자 |
event_timestamp | Timestamp | 이벤트 발생 시간 |
event_kind | String | 이벤트 종류 |
subscription_device_type | String | 장치 유형(예: iOS, Android, Web, Email, SMS) |
language | String | 구독 언어 코드 |
version | String | 통합 버전 |
device_os | String | 장치 운영 체제 버전 |
device_type | Number | 숫자 장치 유형 |
token | String | 푸시 토큰, 전화번호 또는 이메일 |
subscription_id | UUID | 구독 ID |
subscribed | Boolean | 구독 상태 |
onesignal_id | UUID | OneSignal 사용자 ID |
last_active | String | 마지막 활성 타임스탬프 |
sdk | String | OneSignal SDK 버전 |
external_id | String | 통합 사용자 ID와 일치해야 하는 외부 사용자 ID |
app_id | UUID | OneSignal의 앱 ID |
template_id | UUID | 템플릿 ID(해당하는 경우) |
message_id | UUID | 메시지 배치/요청 ID |
message_name | String | 메시지 이름 |
message_title | String | 메시지 제목(영어만) |
message_contents | String | 잘린 메시지 본문(영어만) |
_created, _id, _index, _fivetran_synced | 내부 사용 | Fivetran 동기화 메타데이터 |
참고 사항
- 저장/활성화 후 동기화는 완료하는 데 추가로 15-30분이 소요될 수 있습니다.
- 비활성화하면 비활성화 후 최종 동기화가 한 번 더 발생할 수 있습니다.
- 효율적인 데이터 동기화를 보장하기 위해 시스템은 스테이징 데이터 세트를 자동으로 생성하고 관리합니다. 이러한 데이터 세트는
fivetran_{두 개의 무작위 단어}_staging과 같은 패턴으로 이름이 지정되며, 기본 스키마에 통합되기 전에 처리 중에 데이터를 임시로 저장합니다. 이러한 스테이징 데이터 세트는 간소화된 워크플로를 유지하는 데 필수적이며 자동으로 다시 생성되므로 삭제하면 안 됩니다.
Databricks에서 이벤트 가져오기
Databricks에서 OneSignal로 행동 이벤트 데이터를 전송하여:- 사용자 활동을 기반으로 Journeys 트리거
- 행동 데이터를 기반으로 메시징 개인화
- Access to Event Streams for outbound message events (Plan limitations and overages apply)
- Access to Custom Events for inbound event syncing (Plan limitations and overages apply)
- Updated Account Plan (not available on free apps)
- SQL Warehouse 또는 컴퓨팅 클러스터가 있는 Databricks 워크스페이스
- 적절한 권한이 있는 Personal Access Token
- Delta Lake 형식의 행동 데이터가 포함된 이벤트 데이터 테이블
- Unity Catalog(데이터 거버넌스 권장)
Databricks Personal Access Token 만들기
- Databricks 워크스페이스에서 User Settings로 이동
- Developer 탭을 클릭한 다음 Access tokens 클릭
- Generate new token 클릭
- “OneSignal Integration”과 같은 주석을 입력하고 만료일 설정(90일 권장)
- 생성된 토큰 저장(OneSignal에 필요함)
SQL Warehouse 액세스 구성
- Databricks 워크스페이스에서 SQL Warehouses로 이동
- OneSignal 액세스를 위한 SQL Warehouse 선택 또는 생성
- 연결 세부 정보에서 Server Hostname 및 HTTP Path 기록
- warehouse가 이벤트 데이터 테이블에 액세스할 수 있는지 확인
테이블 권한 부여
OneSignal에 통합 추가
- Server Hostname: Databricks SQL Warehouse 호스트 이름
- HTTP Path: SQL Warehouse HTTP 경로
- Personal Access Token: 1단계에서 생성한 토큰
- Catalog(선택 사항): Unity Catalog를 사용하는 경우 Unity Catalog 이름
이벤트 데이터 소스 구성
- Database/Schema: 이벤트 테이블이 포함된 데이터베이스 또는 스키마 이름
- Table: 이벤트 레코드가 있는 테이블 이름(예:
user_events) - Event Query: 이벤트 데이터를 필터링하거나 변환하기 위한 선택적 SQL 쿼리
- 이벤트 이름/유형(String)
- 사용자 식별자(String)
- 이벤트 타임스탬프(Timestamp)
- 추가 이벤트 속성
연결 테스트
이벤트 데이터 매핑
를 OneSignal의 사용자 지정 이벤트 형식에 매핑합니다:| OneSignal 필드 | 설명 | 필수 | |
|---|---|---|---|
name | event_name | 이벤트 식별자 | Yes |
external_id | user_id | 사용자 식별자 | Yes |
timestamp | event_timestamp | 이벤트가 발생한 시간 | No |
properties | event_data | No |
고급 구성
Unity Catalog 통합
거버넌스 데이터 액세스를 위해 Unity Catalog를 활용하세요:Delta Lake 최적화
더 나은 쿼리 성능을 위해 이벤트 테이블을 최적화하세요:- 파티셔닝: 더 빠른 시간 기반 쿼리를 위해 날짜(
event_date)별로 파티션 - Z-Ordering: 더 나은 필터링을 위해
user_id및event_name으로 Z-order - Delta Lake 기능: 자동 최적화를 위해 liquid clustering 사용
스트리밍 이벤트 처리
실시간 이벤트 처리를 위해 다음을 고려하세요:- Structured Streaming: 이벤트가 도착하는 대로 처리
- Delta Live Tables: 강력한 이벤트 처리 파이프라인 구축
- Auto Loader: 새 이벤트 파일을 지속적으로 수집