고객 프로필 속성
이 페이지는 Snowflake의 기본 속성 및 커스텀 속성 뷰에 대한 참조 문서입니다. 기본 속성에 대한 세 가지 뷰와 커스텀 속성에 대한 세 가지 뷰가 있으며, 각각 고유한 성능 고려 사항을 가진 특정 사용 사례를 위해 설계되었습니다.
대시보드와의 데이터 일치
드물지만 이 페이지의 Snowflake 뷰에 있는 기본 속성 및 커스텀 속성 값이 Braze 대시보드의 사용자 프로필에 표시되는 값과 일치하지 않을 수 있습니다.
예를 들어, 대시보드에는 해당 사용자의 값이 표시되는데 Snowflake에서는 속성이 NULL로 나타날 수 있습니다.
불일치가 광범위하게 발생하는 경우 고객 성공 매니저 또는 Braze 지원팀에 문의하세요.
외부 사용자 ID 가용성

EXTERNAL_USER_ID가 모든 고객 프로필 레코드에 존재한다고 가정해서는 안 됩니다. 가용성은 워크스페이스별 구성과 고객 프로필이 업데이트되는 방식에 따라 달라집니다. 특히 워크스페이스에 특정 기능 플래그가 활성화되어 있지 않은 경우, 많은 프로필에서 이 필드가 NULL일 수 있습니다. 사용자 데이터를 쿼리할 때는 SQL 쿼리에서 적절한 null 처리를 사용하여 EXTERNAL_USER_ID가 null일 가능성을 고려하세요(예: INNER JOIN 대신 LEFT JOIN을 사용하거나, 외부 ID가 필요한 경우 IS NOT NULL로 필터링).
사용 가능한 뷰
| 유형 | 뷰 | 설명 |
|---|---|---|
| 기본 속성 | USER_DEFAULT_ATTRIBUTES_VIEW_SHARED |
고객 프로필 스냅샷 |
USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHARED |
실시간 고객 프로필 | |
USER_DEFAULT_ATTRIBUTES_HISTORY_VIEW_SHARED |
과거 변경 로그 | |
| 커스텀 속성 | USER_CUSTOM_ATTRIBUTES_VIEW_SHARED |
고객 프로필 스냅샷 |
USER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED |
실시간 고객 프로필 | |
USER_CUSTOM_ATTRIBUTES_HISTORY_VIEW_SHARED |
과거 변경 로그 |
고객 프로필 스냅샷
이 뷰는 고객 프로필 속성의 주기적인 스냅샷을 제공합니다. 데이터는 최대 12시간까지 지연되므로 실시간 업데이트가 필요하지 않은 쿼리에 유용합니다.
USER_DEFAULT_ATTRIBUTES_VIEW_SHAREDUSER_CUSTOM_ATTRIBUTES_VIEW_SHARED
사용법
- 최대 12시간 지연된 사용자 속성 스냅샷을 제공합니다.
- 실시간 정확도가 필요하지 않은 쿼리에 적합합니다.
- 특히
USER_ID이외의 속성으로 필터링할 때 쿼리 실행 속도가 더 빠릅니다. - 제한 사항: 데이터가 실시간으로 최신 상태가 아닙니다.

Understanding date fields:
TIMEandTIME_MS: Represent the time the user profile update occurred in Braze (in seconds and milliseconds, respectively). For backfilled data, these values are the time of the backfill.SF_UPDATED_AT: Represents the time the data was last persisted in Snowflake. This field is most useful for determining data freshness—the time the row was most recently synced to your data warehouse.
USER_DEFAULT_ATTRIBUTES_VIEW_SHARED 스키마
| 열 이름 | 데이터 유형 | 설명 |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Braze 워크스페이스 식별자 |
APP_ID |
VARCHAR | 워크스페이스 내의 특정 앱 |
USER_ID |
VARCHAR | 고유 Braze 사용자 식별자 |
TIME |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(초) |
TIME_MS |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(밀리초) |
UPDATE_SOURCE |
VARCHAR | 속성 업데이트 소스(API, SDK, 대시보드 등) |
SF_UPDATED_AT |
TIMESTAMP_NTZ | Snowflake에서 데이터가 마지막으로 업데이트된 시점 |
EXTERNAL_USER_ID |
VARCHAR | 자체 사용자 식별자(설정된 경우). 워크스페이스 구성에 따라 많은 프로필에서 NULL일 수 있습니다. |
FIRST_NAME |
VARCHAR | 사용자의 이름 |
LAST_NAME |
VARCHAR | 사용자의 성 |
EMAIL_ADDRESS |
VARCHAR | 사용자의 이메일 주소 |
GENDER |
VARCHAR | 사용자의 성별 |
PHONE_NUMBER |
VARCHAR | 사용자의 전화번호 |
DOB |
VARCHAR | 사용자의 생년월일 |
TIME_ZONE |
VARCHAR | 사용자의 시간대 |
HOME_CITY |
VARCHAR | 사용자의 거주 도시 |
COUNTRY |
VARCHAR | 사용자의 국가 |
LANGUAGE |
VARCHAR | 사용자의 선호 언어 |
ARCHIVED |
BOOLEAN | 고객 프로필의 보관 여부 |
USER_CUSTOM_ATTRIBUTES_VIEW_SHARED 스키마
| 열 이름 | 데이터 유형 | 설명 |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Braze 워크스페이스 식별자 |
APP_ID |
VARCHAR | 워크스페이스 내의 특정 앱 |
USER_ID |
VARCHAR | 고유 Braze 사용자 식별자 |
EXTERNAL_USER_ID |
VARCHAR | 자체 사용자 식별자(설정된 경우). 워크스페이스 구성에 따라 많은 프로필에서 NULL일 수 있습니다. |
TIME |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(초) |
TIME_MS |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(밀리초) |
UPDATE_SOURCE |
VARCHAR | 속성 업데이트 소스(API, SDK, 대시보드 등) |
SF_UPDATED_AT |
TIMESTAMP_NTZ | Snowflake에서 데이터가 마지막으로 업데이트된 시점 |
CUSTOM_ATTRIBUTES |
VARIANT | 모든 커스텀 속성(키-값 페어)을 포함하는 JSON 객체 |
ARCHIVED |
BOOLEAN | 고객 프로필의 보관 여부 |
CUSTOM_ATTRIBUTES 작업하기
CUSTOM_ATTRIBUTES 열은 모든 커스텀 속성을 JSON 객체로 저장합니다. Snowflake의 JSON 함수를 사용하여 개별 속성에 액세스할 수 있습니다.
예시: 특정 커스텀 속성 쿼리하기
-- Get users with a specific loyalty tier
SELECT
USER_ID,
EXTERNAL_USER_ID,
CUSTOM_ATTRIBUTES:loyalty_tier::STRING as loyalty_tier,
CUSTOM_ATTRIBUTES:points::NUMBER as points
FROM USER_CUSTOM_ATTRIBUTES_VIEW_SHARED
WHERE CUSTOM_ATTRIBUTES:loyalty_tier::STRING = 'gold';
-- Get users who made a purchase above a certain amount
SELECT
USER_ID,
CUSTOM_ATTRIBUTES:last_purchase_amount::NUMBER as last_purchase_amount
FROM USER_CUSTOM_ATTRIBUTES_VIEW_SHARED
WHERE CUSTOM_ATTRIBUTES:last_purchase_amount::NUMBER > 100;
예시: 커스텀 속성 데이터 분석하기
-- Count users by subscription status
SELECT
CUSTOM_ATTRIBUTES:subscription_status::STRING as subscription_status,
COUNT(*) as user_count
FROM USER_CUSTOM_ATTRIBUTES_VIEW_SHARED
GROUP BY CUSTOM_ATTRIBUTES:subscription_status::STRING;
-- Find average order value by customer segment
SELECT
CUSTOM_ATTRIBUTES:customer_segment::STRING as segment,
AVG(CUSTOM_ATTRIBUTES:lifetime_value::NUMBER) as avg_lifetime_value
FROM USER_CUSTOM_ATTRIBUTES_VIEW_SHARED
WHERE CUSTOM_ATTRIBUTES:customer_segment IS NOT NULL
GROUP BY CUSTOM_ATTRIBUTES:customer_segment::STRING;
실시간 사용자 프로필 뷰
이 뷰는 사용자 프로필 속성을 거의 실시간으로 업데이트하며, Braze에서 업데이트가 발생한 후 최대 10분까지 데이터가 지연될 수 있습니다.
USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHAREDUSER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED
사용법
- 지연을 최소화하여(약 10분) 최신 사용자 속성을 제공합니다.
- 실시간 분석 및 최신 데이터가 필요한 시나리오에 유용합니다.
- 성능 고려 사항:
- 개별 사용자에 대한 쿼리는 더 빠릅니다(대형 웨어하우스 사용 시 1분 미만).
- USER_ID 필터가 없는 쿼리는 모든 사용자에 걸쳐 집계해야 하므로 실행 시간이 훨씬 길어집니다.
- 대규모 데이터 세트(예: 1억 명 이상의 사용자)에 대한 쿼리는 몇 분 이상 걸릴 수 있습니다.

Understanding date fields:
TIMEandTIME_MS: Represent the time the user profile update occurred in Braze (in seconds and milliseconds, respectively). For backfilled data, these values are the time of the backfill.SF_UPDATED_AT: Represents the time the data was last persisted in Snowflake. This field is most useful for determining data freshness—the time the row was most recently synced to your data warehouse.
USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHARED 스키마
| 열 이름 | 데이터 유형 | 설명 |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Braze 워크스페이스 식별자 |
APP_ID |
VARCHAR | 워크스페이스 내 특정 앱 |
USER_ID |
VARCHAR | 고유 Braze 사용자 식별자 |
TIME |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(초) |
TIME_MS |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(밀리초) |
UPDATE_SOURCE |
VARCHAR | 속성 업데이트 소스(API, SDK, 대시보드 등) |
ARCHIVED |
BOOLEAN | 사용자 프로필의 보관 여부 |
SF_UPDATED_AT |
TIMESTAMP_LTZ | Snowflake에서 데이터가 마지막으로 업데이트된 시점 |
EXTERNAL_USER_ID |
VARCHAR | 자체 사용자 식별자(설정된 경우). 워크스페이스 구성에 따라 많은 프로필에서 NULL일 수 있습니다. |
FIRST_NAME |
VARCHAR | 사용자의 이름 |
LAST_NAME |
VARCHAR | 사용자의 성 |
EMAIL_ADDRESS |
VARCHAR | 사용자의 이메일 주소 |
GENDER |
VARCHAR | 사용자의 성별 |
PHONE_NUMBER |
VARCHAR | 사용자의 전화번호 |
DOB |
VARCHAR | 사용자의 생년월일 |
HOME_CITY |
VARCHAR | 사용자의 거주 도시 |
COUNTRY |
VARCHAR | 사용자의 국가 |
LANGUAGE |
VARCHAR | 사용자의 선호 언어 |
TIME_ZONE |
VARCHAR | 사용자의 시간대 |
USER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED 스키마
| Column name | Data type | Description |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Your Braze workspace identifier |
USER_ID |
VARCHAR | The unique Braze user identifier |
EXTERNAL_USER_ID |
VARCHAR | Your own user identifier (if set) |
TIME |
NUMBER | Unix timestamp (seconds) of the profile update |
TIME_MS |
NUMBER | Unix timestamp (milliseconds) of the profile update |
UPDATE_SOURCE |
VARCHAR | The source of the attribute update (API, SDK, dashboard, etc.) |
ARCHIVED |
BOOLEAN | Whether the user profile is archived |
SF_UPDATED_AT |
TIMESTAMP_NTZ | When the data was last updated in Snowflake |
APP_ID |
VARCHAR | The specific app within your workspace |
CUSTOM_ATTRIBUTES |
OBJECT | JSON object containing all custom attributes (key-value pairs) |
Note:
This view uses OBJECT type for CUSTOM_ATTRIBUTES instead of VARIANT. Use the same JSON accessor syntax (:attribute_name::TYPE) to query individual attributes.
과거 변경 로그
이 뷰는 사용자 속성의 과거 변경 로그를 12시간 단위로 저장합니다.
USER_DEFAULT_ATTRIBUTES_HISTORY_VIEW_SHAREDUSER_CUSTOM_ATTRIBUTES_HISTORY_VIEW_SHARED
사용법
- 최근 6개월 동안 사용자 속성의 과거 변경 기록을 제공합니다.
- 데이터는 12시간마다 스냅샷으로 저장되므로, 이 시간 동안 발생한 여러 업데이트는 하나의 레코드로 합쳐집니다. 이 기간 내의 개별 변경 사항은 따로 보관되지 않습니다.
EFF_DT와END_DT는 사용자 속성 상태의 시작과 종료를 나타냅니다.

Understanding date fields:
TIMEandTIME_MS: Represent the time the user profile update occurred in Braze (in seconds and milliseconds, respectively). For backfilled data, these values are the time of the backfill.SF_UPDATED_AT: Represents the time the data was last persisted in Snowflake. This field is most useful for determining data freshness—the time the row was most recently synced to your data warehouse.
USER_DEFAULT_ATTRIBUTES_HISTORY_VIEW_SHARED 스키마
| 열 이름 | 데이터 유형 | 설명 |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Braze 워크스페이스 식별자 |
USER_ID |
VARCHAR | 고유 Braze 사용자 식별자 |
APP_ID |
VARCHAR | 워크스페이스 내 특정 앱 |
TIME |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(초) |
TIME_MS |
NUMBER | 프로필 업데이트의 Unix 타임스탬프(밀리초) |
UPDATE_SOURCE |
VARCHAR | 속성 업데이트의 출처(API, SDK, 대시보드 등) |
SF_UPDATED_AT |
TIMESTAMP_NTZ | Snowflake에서 데이터가 마지막으로 업데이트된 시점 |
EXTERNAL_USER_ID |
VARCHAR | 자체 사용자 식별자(설정된 경우). 워크스페이스 구성에 따라 많은 프로필에서 NULL일 수 있습니다. |
FIRST_NAME |
VARCHAR | 사용자의 이름 |
LAST_NAME |
VARCHAR | 사용자의 성 |
EMAIL_ADDRESS |
VARCHAR | 사용자의 이메일 주소 |
GENDER |
VARCHAR | 사용자의 성별 |
PHONE_NUMBER |
VARCHAR | 사용자의 전화번호 |
DOB |
VARCHAR | 사용자의 생년월일 |
TIME_ZONE |
VARCHAR | 사용자의 시간대 |
HOME_CITY |
VARCHAR | 사용자의 거주 도시 |
COUNTRY |
VARCHAR | 사용자의 국가 |
LANGUAGE |
VARCHAR | 사용자의 선호 언어 |
EFF_DT |
TIMESTAMP_NTZ | 유효 날짜: 이 속성 상태가 시작된 시점 |
END_DT |
TIMESTAMP_NTZ | 종료 날짜: 이 속성 상태가 종료된 시점(현재 상태인 경우 NULL) |
USER_CUSTOM_ATTRIBUTES_HISTORY_VIEW_SHARED 스키마
| Column name | Data type | Description |
|---|---|---|
APP_GROUP_ID |
VARCHAR | Your Braze workspace identifier |
USER_ID |
VARCHAR | The unique Braze user identifier |
APP_ID |
VARCHAR | The specific app within your workspace |
EXTERNAL_USER_ID |
VARCHAR | Your own user identifier (if set) |
TIME |
NUMBER | Unix timestamp (seconds) of the profile update |
TIME_MS |
NUMBER | Unix timestamp (milliseconds) of the profile update |
UPDATE_SOURCE |
VARCHAR | The source of the attribute update (API, SDK, dashboard, etc.) |
SF_UPDATED_AT |
TIMESTAMP_NTZ | When the data was last updated in Snowflake |
CUSTOM_ATTRIBUTES |
VARIANT | JSON object containing all custom attributes (key-value pairs) |
ARCHIVED |
BOOLEAN | Whether the user profile is archived |
EFF_DT |
TIMESTAMP_NTZ | Effective date: when this attribute state began |
END_DT |
TIMESTAMP_NTZ | End date: when this attribute state ended (NULL for current state) |
일반적인 사용 사례
사용자 세그먼트 구축
-- Find active users in a specific city who haven't received an email recently
SELECT
d.EXTERNAL_USER_ID,
d.EMAIL_ADDRESS,
d.HOME_CITY,
c.CUSTOM_ATTRIBUTES:last_email_sent::TIMESTAMP as last_email_sent
FROM USER_DEFAULT_ATTRIBUTES_VIEW_SHARED d
JOIN USER_CUSTOM_ATTRIBUTES_VIEW_SHARED c
ON d.USER_ID = c.USER_ID
WHERE d.HOME_CITY = 'New York'
AND d.EMAIL_ADDRESS IS NOT NULL
AND (c.CUSTOM_ATTRIBUTES:last_email_sent::TIMESTAMP < DATEADD(day, -30, CURRENT_TIMESTAMP())
OR c.CUSTOM_ATTRIBUTES:last_email_sent IS NULL);
시간 경과에 따른 사용자 행동 분석
-- Track how a user's loyalty tier changed over the past 6 months
SELECT
USER_ID,
CUSTOM_ATTRIBUTES:loyalty_tier::STRING as loyalty_tier,
EFF_DT,
END_DT
FROM USER_CUSTOM_ATTRIBUTES_HISTORY_VIEW_SHARED
WHERE USER_ID = 'user_123'
AND EFF_DT >= DATEADD(month, -6, CURRENT_TIMESTAMP())
ORDER BY EFF_DT DESC;
기본 속성과 커스텀 속성 결합
-- Get a complete user profile with both default and custom attributes
SELECT
d.EXTERNAL_USER_ID,
d.FIRST_NAME,
d.LAST_NAME,
d.EMAIL_ADDRESS,
d.COUNTRY,
c.CUSTOM_ATTRIBUTES:subscription_status::STRING as subscription_status,
c.CUSTOM_ATTRIBUTES:lifetime_value::NUMBER as lifetime_value,
c.CUSTOM_ATTRIBUTES:last_purchase_date::DATE as last_purchase_date
FROM USER_DEFAULT_ATTRIBUTES_VIEW_SHARED d
LEFT JOIN USER_CUSTOM_ATTRIBUTES_VIEW_SHARED c
ON d.USER_ID = c.USER_ID
WHERE d.EXTERNAL_USER_ID = 'customer_456';
고가치 고객 찾기
-- Identify users with high lifetime value who are at risk of churning
SELECT
d.EXTERNAL_USER_ID,
d.EMAIL_ADDRESS,
c.CUSTOM_ATTRIBUTES:lifetime_value::NUMBER as lifetime_value,
c.CUSTOM_ATTRIBUTES:days_since_last_purchase::NUMBER as days_since_last_purchase
FROM USER_DEFAULT_ATTRIBUTES_VIEW_SHARED d
JOIN USER_CUSTOM_ATTRIBUTES_VIEW_SHARED c
ON d.USER_ID = c.USER_ID
WHERE c.CUSTOM_ATTRIBUTES:lifetime_value::NUMBER > 1000
AND c.CUSTOM_ATTRIBUTES:days_since_last_purchase::NUMBER > 90
ORDER BY c.CUSTOM_ATTRIBUTES:lifetime_value::NUMBER DESC;
모범 사례
권장 쿼리 사용법
| 사용 사례 | 권장 뷰 | 참고 |
|---|---|---|
| 최신 업데이트가 필요하지 않은 일반 쿼리 | USER_DEFAULT_ATTRIBUTES_VIEW_SHARED 및 USER_CUSTOM_ATTRIBUTES_VIEW_SHARED |
실행 속도가 빠르며, 최대 12시간 전의 데이터가 포함됩니다. |
| 최신 사용자 속성이 필요한 쿼리 | USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHARED 및 USER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED |
거의 실시간에 가까운 업데이트를 제공하지만, 대규모 데이터 세트에서는 속도가 느려질 수 있습니다. |
| 속성 변경 사항의 기록 추적 | USER_DEFAULT_ATTRIBUTES_HISTORY_VIEW_SHARED 및 USER_CUSTOM_ATTRIBUTES_HISTORY_VIEW_SHARED |
속성 변경 사항을 12시간 단위로 저장합니다. |
성능 고려 사항
USER_DEFAULT_ATTRIBUTES_VIEW_SHARED또는USER_CUSTOM_ATTRIBUTES_VIEW_SHARED에 대한 쿼리는 대규모 웨어하우스에서 대규모 데이터 세트(약 10억 명의 사용자)를 대상으로 해도 10초 이내에 결과를 반환합니다.- 단일 사용자를 대상으로 하는
USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHARED또는USER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED쿼리는 1분 이내에 결과를 반환하지만,USER_ID필터링이 없으면 확장성이 떨어집니다. USER_LATEST_STATE_DEFAULT_ATTRIBUTES_VIEW_SHARED또는USER_LATEST_STATE_CUSTOM_ATTRIBUTE_VIEW_SHARED에서 1억 명이 넘는 사용자를 대상으로 하는 쿼리는 사용자별 집계 때문에 몇 분 정도 걸릴 수 있습니다.