콘텐츠로 이동

데이터 모델

Pulsy가 퍼포먼스 질문에 답할 때, 원시 테이블을 직접 쿼리하지 않습니다. 시맨틱 레이어를 거칩니다: 하나의 Snowflake Cortex Agent(AMAZON_ADS_AGENT, claude-sonnet-4-6 구동)가 질문을 6개 도메인 애널리스트 중 하나로 라우팅하고, 각 애널리스트는 큐레이션된 시맨틱 뷰가 받칩니다. 이 여섯을 이해하는 것이 Pulsy가 무엇을 답할 수 있고 없는지 예측하는 길입니다.

모든 것은 Snowflake 데이터베이스 AMAZON_MARKETING에 있습니다:

스키마담는 것
PULSEAD메인 소스 레이어 — 적재된 Amazon Ads 데이터 218개 테이블.
PULSYGold/참조 레이어 — 65개 테이블(TaCoS, 시간별, Brand Analytics). 참조용; 스키마이지 제품이 아님.
SEMANTIC_LAYER에이전트 대면 레이어: 6개 뷰 + Cortex Agent + 헬퍼 뷰.
VALIDATION시맨틱 뷰 품질을 게이트하는 QA 시스템(VADER, AQUA).

하나의 에이전트가 6개 Cortex Analyst 도구(+ data_to_chart 시각화)를 앞단에 두고 인텐트로 라우팅합니다. 각 애널리스트는 하나의 시맨틱 뷰에 매핑됩니다:

애널리스트다루는 것핵심 함정
SponsoredAdsSPONSORED_ADS_PERFORMANCESP/SB/SD 퍼포먼스를 한곳에 — ROAS, ACoS, CPC, CTR, 매출, CVR.PROFILE_ID 필터 필수; SP/SB/SD는 JOIN이 아니라 UNION ALL로 결합.
SearchTermSEARCH_TERM_V4고객 검색어 vs. 내 키워드, 그리고 마켓플레이스 Brand Analytics 검색 빈도.Brand Analytics는 PROFILE_ID가 없고 주/월 단위 — 일별 SP/SB 데이터와 조인 금지.
ProductPRODUCT_INSIGHTASIN 단위 퍼포먼스, 교차판매(광고 vs. 구매 ASIN), BSR.상품 메타데이터는 fan-out 방지를 위해 ASIN당 1행으로 dedup.
BudgetBUDGET_MANAGEMENT소진율, 놓친 매출/클릭, Amazon 권장 예산.BUDGET_SCOPE_TYPE를 단일 값(캠페인 또는 포트폴리오)으로 필터하지 않으면 이중 집계.
DSPDSP_PERFORMANCE프로그래매틱 DSP 크리에이티브/라인아이템 퍼포먼스.PROFILE_ID가 아니라 ADVERTISER_ID 기준; 비용은 millicent(÷100,000 → USD); KPI가 다름(DPVR, ATC).
NTBBRAND_NTBSB/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 적재가 따로 관장합니다. 그래서 시맨틱 레이어 답변에는 “데이터는 하루 정도 지난 것”이 안전한 기본 가정입니다.

두 저장소가 이 레이어를 소유하며, 같은 역량의 두 세대입니다:

  • data_semanticview무엇이 존재하는지의 SSOT입니다 — 배포된 뷰 DDL (02_develop/semantic_views/deploy/*.sql)이 “Snowflake에서 실행되는 유일한 버전”이며, 애널리스트 라우팅과 VADER/AQUA 검증을 포함.
  • snowflake-semantic-agent 는 시맨틱 자산을 재생성·게시하는 더 새로운 자동 리프레시 런타임입니다(control / knowledge / execution plane). SEMANTIC_LAYER 스키마를 공유.

깔끔한 “런타임이 정의를 소비한다”는 분리로 기술하지 마세요 — 둘 다 SEMANTIC_LAYER 자산을 생성할 수 있고, 수동 레이어가 자동 레이어로 대체되는 중입니다.