시맨틱 뷰 개요
시맨틱 뷰 개요
시맨틱 뷰(Semantic View)는 스키마 수준 객체로, 비즈니스 시맨틱 개념을 데이터베이스에 그대로 저장할 수 있게 해줘요. 비즈니스 메트릭을 정의하고, 비즈니스 엔티티와 그 관계를 모델링할 수 있어요. 물리적 데이터에 비즈니스 의미를 더함으로써 데이터 기반 의사 결정을 강화하고, 엔터프라이즈 애플리케이션 전반에서 일관된 비즈니스 정의를 제공해요.
출처: Snowflake 문서
본문
비즈니스 시맨틱 개념을 시맨틱 뷰(Semantic View) 라는 스키마 수준 객체로 데이터베이스에 직접 저장할 수 있어요. 비즈니스 메트릭을 정의하고, 비즈니스 엔티티와 그 관계를 모델링할 수 있어요. 물리적 데이터에 비즈니스 의미를 더함으로써 시맨틱 뷰는 데이터 기반 의사 결정을 강화하고 엔터프라이즈 애플리케이션 전반에 일관된 비즈니스 정의를 제공해요.
시맨틱 뷰를 Cortex Agents에서 사용하고 SELECT 문에서 이 뷰들을 쿼리할 수 있어요. 또한 시맨틱 뷰를 프라이빗 리스팅, Snowflake Marketplace의 공개 리스팅, 조직 리스팅으로 공유할 수 있어요.
시맨틱 뷰를 만들고 관리하려면 Workspaces의 Semantic Studio, SQL 명령(CREATE SEMANTIC VIEW 등), 또는 시맨틱 뷰 생성 과정을 안내해 주는 Snowsight의 마법사를 사용할 수 있어요.
참고: 시맨틱 뷰는 메타데이터로 간주돼요.
왜 시맨틱 뷰를 사용할까요?
시맨틱 뷰는 비즈니스 사용자가 데이터를 설명하는 방식과 데이터베이스 스키마에 데이터가 저장된 방식 사이의 불일치를 해결해 줘요. 예를 들어 gross revenue 같은 중요한 비즈니스 개념이 데이터베이스의 amt_ttl_pre_dsc 라는 테이블 컬럼에 저장되어 있다면, 비즈니스 사용자가 찾고 해석하기 어려워요.
또한 회사에서 net revenue가 항상 "할인 후 총 매출"을 의미한다면, 시맨틱 뷰는 이를 올바른 집계 방식으로 일관되게 메트릭으로 정의할 수 있어요: SUM(gross_revenue * (1 - discount)). 이렇게 하면 적절한 집계 동작을 가진 단일한 권위 있는 정의가 보장돼요. 예를 들어 사용자가 "Net Revenue by Region"을 요청하면, 시맨틱 뷰는 적절한 수준에서 집계하는 방법을 알게 돼요. 시맨틱 뷰가 없으면 서로 다른 보고서와 애플리케이션 전반에 수십 개의 일관되지 않은 계산이 존재하게 되고, 대개 잘못된 집계 방식 때문에 오류가 있는 결과가 나오기 쉬워요.
이 비즈니스 중심의 추상화 계층은 몇 가지 일반적인 문제를 해결해 줘요:
- AI 애플리케이션 측면: 시맨틱 뷰는 LLM 추론과 규칙 기반 정의를 결합해 정확도를 높여요. 현재 Cortex Agents가 시맨틱 뷰 정의에 담긴 정보를 읽고 물리적 테이블에 대해 SQL을 직접 생성해요.
- 비즈니스 인텔리전스(BI) 측면: 비즈니스 사용자는 모든 도구에서 일관된 메트릭과 차원을 누릴 수 있어요. 익숙한 BI 인터페이스에서 미리 정의된 비즈니스 개념을 쉽게 결합해 데이터를 탐색하고 인사이트를 얻을 수 있어요.
- 기술 분석가 측면: 비즈니스 로직의 중앙 집중화로 쿼리 전반의 메트릭 정의 중복이 줄어들고 복잡한 스키마 관계가 단순해져, 데이터 모델을 더 쉽게 구축하고 유지할 수 있어요.
시맨틱 뷰 이해하기
참고: 이 주제 전반에서 데이터베이스 관련 산출물(예: 데이터베이스 테이블)은 물리적 객체(physical objects), 시맨틱 뷰 관련 산출물은 논리 객체(logical objects) 로 부르기로 해요.
시맨틱 뷰 안에서 보통 고객, 주문, 공급업체 같은 비즈니스 엔티티에 해당하는 논리 테이블을 정의해요. 공유 키에서의 조인을 통해 논리 테이블 간 관계를 정의해, 데이터베이스 테이블을 조인할 때처럼 엔티티 간 데이터를 분석할 수 있어요.
논리 테이블을 사용해 다음을 정의할 수 있어요:
- Fact: Fact는 데이터 모델에서 특정 비즈니스 이벤트나 트랜잭션을 나타내는 행 수준(row-level) 속성이에요. fact는 더 세부적인 데이터 수준의 집계(예: 더 세부적인 수준의 데이터를 나타내는
SUM(t.x))로 정의할 수 있지만, 항상 논리 테이블의 개별 행 수준 속성으로 제시돼요. fact는 개별 판매 금액, 구매 수량, 비용처럼 가장 세부적인 수준에서 "얼마나"(how much/how many)를 포착해요. fact는 대개 시맨틱 뷰 안에서 차원과 메트릭을 구성하는 데 도움이 되는 "헬퍼" 개념으로 기능한다는 점을 기억해 두세요. - 메트릭(Metrics): 메트릭은 여러 행에 걸쳐 같은 테이블의 fact나 다른 컬럼을 집계해(SUM, AVG, COUNT 같은 함수 사용) 계산된 비즈니스 성과의 정량적 측정값이에요. 원시 데이터를 의미 있는 비즈니스 지표로 변환하며, 종종 복잡한 수식에서 여러 계산을 결합해요. Total Revenue나 Profit Margin Percentage 같은 것이 예시예요. 메트릭은 보고서와 대시보드에서 의사 결정을 이끄는 KPI를 나타내요.
- 차원(Dimensions): 차원은 범주형 속성을 나타내요. 데이터를 의미 있는 범주로 그룹화해 메트릭에 의미를 부여하는 컨텍스트 프레임워크를 제공해요. 일반적으로 텍스트 기반이거나 계층적이며, 구매 날짜, 고객 정보, 제품 카테고리, 위치 같은 "누가, 무엇을, 어디서, 언제" 질문에 답해요. 차원은 사용자가 여러 관점에서 데이터를 필터링하고 그룹화하며 분석할 수 있게 해줘요.
시맨틱 뷰에서 이 세 요소는 뚜렷한 역할이 있는데, 메트릭과 차원은 시맨틱 뷰를 통해 데이터를 분석할 때 상호작용하는 주요 요소예요. fact는 기본적인 행 수준 수치 데이터를 제공하고, 메트릭은 집계와 계산을 통해 데이터를 실행 가능한 인사이트로 변환하며, 차원은 보는 관점을 결정해요. 이러한 개념에 대한 자세한 내용은 YAML Specification for Semantic Views를 참고해요.
시맨틱 뷰 작업을 위한 인터페이스
시맨틱 뷰를 만들고, 관리하고, 사용하는 데 다음 인터페이스를 사용할 수 있어요:
- Semantic View Autopilot: 시맨틱 뷰 생성 과정을 안내하는 Snowsight의 AI 지원 마법사를 사용할 수 있어요. YAML 사양, Tableau 파일, 또는 Power BI 파일을 업로드할 수도 있어요. 자세한 내용은 Semantic View Autopilot을 참고해요.
- Semantic Studio: Workspaces의 작성 환경인 Semantic Studio에서 CoCo의 대화형 지원을 받아 시맨틱 뷰를 다듬고, 구성하고, 배포할 수 있어요. 자세한 내용은 Semantic Studio를 참고해요.
- SQL 명령: SQL 명령으로 시맨틱 뷰를 직접 만들고 관리할 수 있어요. 자세한 내용은 Using SQL commands to create and manage semantic views을 참고해요. SELECT 문을 실행해 시맨틱 뷰를 쿼리할 수도 있어요.
- Cortex Agents: 자연어 쿼리에 시맨틱 뷰를 사용하려면 에이전트에 툴로 추가해요. 자세한 내용은 Add tools를 참고해요.
- Cortex Analyst REST API: Cortex Analyst에서 시맨틱 뷰를 사용하려면 REST API 요청에 뷰를 지정해요. 자세한 내용은 Cortex Analyst REST API를 참고해요.
시작하기
시맨틱 뷰로 시작하려면:
- 비즈니스 데이터 모델을 설계해요.
- 데이터에 어떤 비즈니스 엔티티가 있나요(예: 고객, 제품, 주문 등)?
- 이런 엔티티는 서로 어떻게 관련되나요?
- 비즈니스에 중요한 메트릭은 무엇인가요?
- 이 메트릭을 분석하는 데 어떤 차원을 사용하나요?
- 비즈니스 개념을 물리적 데이터에 매핑해요.
- 필요한 데이터가 들어 있는 테이블은 무엇인가요? 간단한 스타 스키마(star schema)로 시작하는 것을 권장해요.
- 이 테이블들을 어떻게 조인할 건가요?
- 메트릭을 도출하는 데 어떤 계산이 필요한가요?
- 시맨틱 뷰를 만들어요. 이 인터페이스들 중 하나를 사용해 시맨틱 뷰를 만들 수 있어요.
- 시맨틱 뷰를 다음 방식으로 사용해요.
- 시맨틱 뷰의 자연어 쿼리를 위해 Cortex Agents를 사용해요. 에이전트에 시맨틱 뷰를 툴로 추가해요. 자세한 내용은 Add tools를 참고해요.
- 시맨틱 뷰를 사용하는 요청을 모니터링해야 한다면 Monitor Cortex Agent requests를 참고해요.
- SELECT 문에서 시맨틱 뷰를 쿼리해요. 자세한 내용은 Querying semantic views를 참고해요.
시맨틱 뷰에 대한 추가 정보
시맨틱 뷰에 대한 추가 정보는 다음 주제를 참고해요:
- Semantic Studio
- Semantic View Autopilot
- Tableau ingestion feature support
- Power BI ingestion feature support
- Using SQL commands to create and manage semantic views
- How Snowflake validates semantic views
- Example of using SQL to create a semantic view
- Querying semantic views
시맨틱 뷰 작업에 필요한 권한에 대한 정보는 다음 섹션을 참고해요:
- Privileges required to create or replace a semantic view
- Privileges required to query a semantic view
- Granting privileges on semantic views
시맨틱 뷰용 SQL 명령과 뷰에 대한 참조 정보는 다음 주제를 참고해요:
- SQL 명령 문서:
- ACCOUNT_USAGE 뷰 문서:
- INFORMATION_SCHEMA 뷰 문서: