데이터 모델
Pulsy가 퍼포먼스 질문에 답할 때, 원시 테이블을 직접 쿼리하지 않습니다. 시맨틱 레이어를
거칩니다: 하나의 Snowflake Cortex Agent(AMAZON_ADS_AGENT, claude-sonnet-4-6 구동)가
질문을 6개 도메인 애널리스트 중 하나로 라우팅하고, 각 애널리스트는 큐레이션된 시맨틱 뷰가
받칩니다. 이 여섯을 이해하는 것이 Pulsy가 무엇을 답할 수 있고 없는지 예측하는 길입니다.
그 뒤의 스키마
섹션 제목: “그 뒤의 스키마”모든 것은 Snowflake 데이터베이스 AMAZON_MARKETING에 있습니다:
| 스키마 | 담는 것 |
|---|---|
PULSEAD | 메인 소스 레이어 — 적재된 Amazon Ads 데이터 218개 테이블. |
PULSY | Gold/참조 레이어 — 65개 테이블(TaCoS, 시간별, Brand Analytics). 참조용; 스키마이지 제품이 아님. |
SEMANTIC_LAYER | 에이전트 대면 레이어: 6개 뷰 + Cortex Agent + 헬퍼 뷰. |
VALIDATION | 시맨틱 뷰 품질을 게이트하는 QA 시스템(VADER, AQUA). |
6개 애널리스트
섹션 제목: “6개 애널리스트”하나의 에이전트가 6개 Cortex Analyst 도구(+ data_to_chart 시각화)를 앞단에 두고 인텐트로
라우팅합니다. 각 애널리스트는 하나의 시맨틱 뷰에 매핑됩니다:
| 애널리스트 | 뷰 | 다루는 것 | 핵심 함정 |
|---|---|---|---|
| SponsoredAds | SPONSORED_ADS_PERFORMANCE | SP/SB/SD 퍼포먼스를 한곳에 — ROAS, ACoS, CPC, CTR, 매출, CVR. | PROFILE_ID 필터 필수; SP/SB/SD는 JOIN이 아니라 UNION ALL로 결합. |
| SearchTerm | SEARCH_TERM_V4 | 고객 검색어 vs. 내 키워드, 그리고 마켓플레이스 Brand Analytics 검색 빈도. | Brand Analytics는 PROFILE_ID가 없고 주/월 단위 — 일별 SP/SB 데이터와 조인 금지. |
| Product | PRODUCT_INSIGHT | ASIN 단위 퍼포먼스, 교차판매(광고 vs. 구매 ASIN), BSR. | 상품 메타데이터는 fan-out 방지를 위해 ASIN당 1행으로 dedup. |
| Budget | BUDGET_MANAGEMENT | 소진율, 놓친 매출/클릭, Amazon 권장 예산. | BUDGET_SCOPE_TYPE를 단일 값(캠페인 또는 포트폴리오)으로 필터하지 않으면 이중 집계. |
| DSP | DSP_PERFORMANCE | 프로그래매틱 DSP 크리에이티브/라인아이템 퍼포먼스. | PROFILE_ID가 아니라 ADVERTISER_ID 기준; 비용은 millicent(÷100,000 → USD); KPI가 다름(DPVR, ATC). |
| NTB | BRAND_NTB | SB/SD/DSP 전반의 신규 브랜드 고객 획득. | DSP NTB ≠ SB/SD NTB(Amazon 전체 vs. 브랜드 한정) — 직접 비교 금지. SP에는 NTB 데이터 없음. |
체화할 패턴: Sponsored Ads와 DSP는 다른 세계입니다. Sponsored Ads는 프로필 범위, 달러 단위, SP/SB/SD 결합; DSP는 광고주 범위, millicent 단위, 독자 KPI. 둘을 가로지르는 질문은 한 애널리스트가 아니라 두 애널리스트가 필요합니다.
데이터의 최신성
섹션 제목: “데이터의 최신성”시맨틱 레이어는 매일 밤 08:00 KST에 리프레시됩니다(AWS EventBridge 스케줄,
cron(0 8 * * ? *), Asia/Seoul). 이는 시맨틱 자산 — 뷰와 그 메타데이터 — 를 관장합니다.
하부 PULSEAD 소스 테이블의 최신성은 이 리프레시가 아니라 Amazon Ads 적재가 따로 관장합니다.
그래서 시맨틱 레이어 답변에는 “데이터는 하루 정도 지난 것”이 안전한 기본 가정입니다.
정의가 사는 곳 (SSOT)
섹션 제목: “정의가 사는 곳 (SSOT)”두 저장소가 이 레이어를 소유하며, 같은 역량의 두 세대입니다:
data_semanticview가 무엇이 존재하는지의 SSOT입니다 — 배포된 뷰 DDL (02_develop/semantic_views/deploy/*.sql)이 “Snowflake에서 실행되는 유일한 버전”이며, 애널리스트 라우팅과 VADER/AQUA 검증을 포함.snowflake-semantic-agent는 시맨틱 자산을 재생성·게시하는 더 새로운 자동 리프레시 런타임입니다(control / knowledge / execution plane).SEMANTIC_LAYER스키마를 공유.
깔끔한 “런타임이 정의를 소비한다”는 분리로 기술하지 마세요 — 둘 다 SEMANTIC_LAYER 자산을
생성할 수 있고, 수동 레이어가 자동 레이어로 대체되는 중입니다.