요약/나만의 인사이트
태블로 매개변수-계산식 사용해서 전년비 매출 구하기
- P_년도를 통해 매개변수 생성 2021 ~ 2024
- C_금년 매출 계산식 생성 IF YEAR([주문 일자]) = [P_년도] THEN [매출] END
- C_전년 매출 계산식생성 IF YEAR([주문 일자]) = [P_년도]-1 THEN [매출] END
- C_전년비 매출 계산식 생성 (SUM([C_금년 매출]) - SUM([C_전년 매출])) / SUM([C_전년 매출])
- C_전년비 매출 양/음 계산식 생성 - 색상표시 목적
IF [C_전년비 매출] ≥ 0 THEN [C_전년비 매출] END
IF [C_전년비 매출] < 0 THEN [C_전년비 매출] END
새롭게 알게 된 것
태블로
태블로 LOD(Level Of Detail) 표현식
- 시각화의 집계 수준과 관계없이 원하는 수준의 집계를 정의할 수 있도록 하는 기능.
- 태블로는 기본적으로 차원에 따라 집계를 수행하는데, LOD 표현식을 사용하면 임의의 수준으로 제어할 수 있다.
- e.g. 뷰 기준은 시군구이나 / 집계는 시도를 기준으로 매출을 보고 싶을 때
- e.g. 고객들의 첫 구매 일자를 보고 싶을 때
데이터 결합


|
|
논리적 계층 (Logical Layer)
|
물리적 계층 (Physical Layer)
|
|
개념
|
• 데이터 모델의 상위 레이어 • 각 테이블을 하나의 논리적 테이블로 유지한 상태에서 결합 • 테이블 간 결합은 관계(Relationship)를 사용 • 실제 쿼리는 뷰에서 필드가 사용될 때 동적으로 생성 (지연 조인)
|
• 데이터 모델의 하위 레이어 • 실제 데이터베이스 수준에서 테이블을 결합하여 하나의 물리적 테이블 생성 • 테이블 간 결합은 조인(Join) 또는 유니온(Union) 사용 • 결합 시점에 이미 데이터가 합쳐져 이후 분석에서는 단일 테이블로 처리됨
|
|
특징
|
• 집계 수준(Level of Detail) 보존: 서로 다른 LOD의 테이블을 자연스럽게 결합 • 중복 데이터 최소화: 불필요한 조인 방지 • 성능 최적화: 필요한 시점에만 쿼리 실행 • 유연한 모델링: 동일 모델에서 다양한 분석 시나리오 지원
|
• 결합 시 즉시 조인 실행: 결합된 데이터는 하나의 테이블로 간주 • 집계 수준 통일 필요: 서로 다른 LOD 데이터를 결합하면 중복/Null 가능 • 전통적인 SQL Join과 동일한 개념 • 데이터 용량 커질 수 있음: 조인 방식(Inner, Left, Right)에 따라 성능 영향
|

|
방법(Method)
|
설명(Description)
|
생성 위치(Where created)
|
|
관계 (Relationship)
|
여러 테이블의 필드/컬럼을 사용할 수 있는 기능을 설정합니다.
|
캔버스의 논리 계층(Logical layer)
|
|
조인 (Join)
|
필드/컬럼을 추가하여 여러 테이블을 물리적으로 결합합니다.
|
캔버스의 물리 계층(Physical layer)
|
|
유니온 (Union)
|
여러 테이블을 행(Row) 단위로 물리적으로 결합합니다.
|
캔버스의 물리 계층(Physical layer)
|
|
블렌드 (Blend)
|
기본(primary) 및 보조(secondary) 데이터 소스의 필드/컬럼을 연결 필드로 사용하도록 설정합니다.
|
워크북 내 시트(Worksheet) (ex 이번년도 매출이 목표 매출을 달성했는가?)
|
대시보드 만들기 위해 고려해야 할 것들
- 대시보드 보는 사람은 누구인가?
- 대시보드 보는 시점은 언제인가? (EX 업무 보고, 모니터링, 미팅)
- 보는 사람의 상태는 어떠한가? (EX 집중, 피곤)
- 보는 주기가 어떠한가? (EX 매일, 주간 등)
- 누구랑 보는가? (EX 대표, 협력업체 등)
- 공유할 수 있는 데이터와 공유할 수 없는 데이터?
대시보드 종류
- 전략 대시보드 - 전체적인 수치들을 축약해서 보여줌
- 분석 대시보드 - 드릴다운(필터링) 분석, (e.g. 수익 문제 → 고객, 상품 관점 → 드릴다운 → 분석용)
- 운영 대시보드 - 지속적으로 모니터링 해야 하는 대시보드 (실시간 데이터 수집)
대시보드 만들기 순서
1. 비즈니스 퀘스천 던지기
이 대시보드를 통해서 어떤 걸 확인할거지? 내가 만드는 목적은?
2. 화면 설계
3. 표현방식 결정
4. 차트 결정
5. 액션 설계 (마우스 오버, 동작)
대시보드 만들 때 주의사항
- 대시보드 시트는 6개를 넘지 말자 (why 기억하기 쉽지 않다.)
- 시각정보가 유사한 것끼리 근접하게
- 고객관련 영역, 제품관련 영역 등 일관된 정도들끼리 묶기
- 정렬/여백/색상 3~4개/폰트
특히 어려웠던 것
SQL ROW_NUMBER() OVER() 문제
- 동일점수 일지라도 고유 순위 부여, 이때 이름 오름차순 등 순위 매기는 세부사항 설정 가능
- 문제 회사에는 직원 정보가 담긴 테이블 employees가 있습니다. 각 부서(department)별로 연봉(salary)이 가장 높은 직원 2명씩을 추출하는 SQL 쿼리를 작성하세요. 동일 부서 내 연봉이 같을 경우, employee_id 오름차순으로 우선순위를 결정합니다.
조건 정리:
- ROW_NUMBER() 윈도우 함수를 반드시 사용할 것.
- 부서별 상위 2명만 추출.
- 연봉이 같을 때는 employee_id가 낮은 사람이 우선.
- 결과에는 employee_id, name, department, salary가 포함되어야 함.
- 풀이
- 순위를 생성하는 컬럼 추가
- 서브 테이블로 묶음
- 메인 쿼리에서 랭킹이 2순위 이내만 필터링
- 거기서 결과에 표시되어야 하는 컬럼만 조회
SELECT employee_id, name, department, salary
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY department ORDER BY salary DESC, employee_id ASC) as rnk
FROM employees
) sub
WHERE rnk <= 2;
다음에 적용해 볼 것
- 대시보드 기획 시 참고 → 자연어 기반 대시보드 기획가능
'SQL' 카테고리의 다른 글
| MySQL_정규표현식_개념, 활용사례 (0) | 2026.01.18 |
|---|---|
| 250602_ SQL 어려운 문제 반복 풀이 (0) | 2025.06.02 |
| 250530_SQL(JOIN), 파이썬 총 복습 (1) | 2025.05.30 |
| 250528_SQL(RANK), 파이썬(함수) (0) | 2025.05.28 |
| 250523_내일배움캠프_어려운 쿼리문(UNION ALL, LEFT JOIN) (0) | 2025.05.23 |