웅진X유데미 STARTERS/TIL (Today I Learned)

[스타터스 TIL] 31일차.태블로 실전 트레이닝 (7) - 날짜 필터링, ATTR

라밍쏭 2023. 3. 22. 08:33
728x90


1. 자주 나오는 질문

1.1 퀵테이블은 꼭 나쁜 것일까?

- 데이터가 모두 VLOD에 나열되어 있는 경우, 그 시트가 그대로 대시보드에 보여지는 경우는 퀵테이블 사용을 권함
- 텍스트 테이블에 하나의 텍스트로 보여지거나 다양한 동작, 차원 고정, 필터링이 필요한 경우는 사용하지 않음
- 제3자가 보았을 때는 계산된 식보다는 해석이 어렵다는 단점이 있음


1.2 테이블 계산에서 옆으로, 아래로는 무엇을 의미하는지?

- 계산 유형
- 다음을 사용하여 계산
    - 테이블 : 전체 데이터
    - 패널 : 패널 하나의 데이터
    - 셀 : 보통 계산 유형이 구성비율로
    - 특정 차원 : 내가 원하는 대로 지정할 수 있음


1.3 계산된 필드 오류 예시 및 해결 방법

✔ 집계되지 않은 인수 혼합
ex1) SUM(profit)/sales
    → SUM(profit) / SUM(sales) 또는 profit / sales 으로 수정
    - 단, SUM은 위의 값들이 동일하지만 AVG는 두 값들이 다르기 때문에 유의하기!


ex2) IF [Region] = ‘West’ THEN SUM([Sales]) END
    → SUM(IF [Region] = ‘West’ THEN [Sales] END) 으로 수정
    - SUM 안에는 집계함수가 없어야 한다.

 

 

1.4 AVG

AVG([Profit]/[Sales]) vs AVG([Profit])/AVG([Sales])

 

AVG([Profit]/[Sales])

우선 행 별로 profit / Sales를 나눈 후에 평균을 계산하기 때문에 마이너스(-)가 나오기도 한다.

그렇기 때문에 수치상으로 오류가 있을 수 밖에 없다.

 

 AVG([Profit])/AVG([Sales])

우선 열 별, 각 profit, sales를 평균을 계산한 후에 나눈다.

그렇기 때문에 평균을 구할 때는 이렇게 구하면 된다.


2. 날짜 필터링

2.1 MTD, QTD, YTD

- MTD : 22/03/21 기준, 3/1 ~ 3/21까지의 데이터를 보여줌 (주로 합계)

- QTD : 22/05/21 기준, 4/1 ~ 5/21까지의 데이터를 보여줌

- YTD : 22/05/21 기준, 1/1 ~ 5/21까지의 데이터를 보여줌

 

→ 현재 상황을 파악하고 이후의 데이터를 대략적인 예측하는 용도로 사용


- 실무진 : 조절을 활용해서 여러 날짜를 선택하여 확인
- 경영진 : 오늘을 기준으로 M-1을 바로 뜨게 하는 것이 중요함

 

① 매개변수 만들기 (date_parameter)

- 데이터 유형 : 날짜

- 값 범위 : order_date 설정

 

② 계산된 필드로 알맹이 만들기 (MTD, QTD, YTD)

MTD, QTD, YTD는 T/F 형태의 데이터이다.

// MTD
DATEDIFF('month', [Order Date],[date_parameter]) = 0
AND DATEDIFF('day', [Order Date], [date_parameter]) >= 0
// QTD
DATEDIFF('quarter', [Order Date],[date_parameter]) = 0
AND DATEDIFF('day', [Order Date], [date_parameter]) >= 0
// YTD
DATEDIFF('year', [Order Date],[date_parameter]) = 0
AND DATEDIFF('day', [Order Date], [date_parameter]) >= 0

 

▼ 필터에 YTD를 참으로 설정하면 YTD에 대한 데이터 나옴

 

2.2 날짜 매개변수 합계

원하는 날짜까지의 합계이기 때문에 주로 KPI Summary 상단에 들어가는 수치


① 위에서 만든 매개변수 date_parameter 사용
② 매개변수 추가로 만들기 (period_paremeter) → 각 MTD, QTD, YTD 볼 수 있도록
③ 계산된 필드로 알맹이 만들기

CASE [period_paremeter]
WHEN '1' THEN SUM(IF [MTD - 알맹이] THEN [Sales] END)
WHEN '2' THEN SUM(IF [QTD - 알맹이] THEN [Sales] END)
WHEN '3' THEN SUM(IF [YTD - 알맹이] THEN [Sales] END)
END

 

2.3 날짜 M-1, M-2

① 매개변수 만들기 (M-1, M-2)

 

② 계산된 필드 만들기

✔ date_parameter로 날짜 설정 시

CASE [M-1, M-2]
WHEN '1' THEN SUM(IF DATEDIFF('month', [Order Date],[date_parameter]) = 1 THEN [Sales] END)
WHEN '1' THEN SUM(IF DATEDIFF('month', [Order Date],[date_parameter]) = 2 THEN [Sales] END)
END

 

✔ 자동화 시

CASE [M-1, M-2]
WHEN '1' THEN SUM(IF DATEDIFF('month', [Order Date],TODAY()) = 1 THEN [Sales] END)
WHEN '2' THEN SUM(IF DATEDIFF('month', [Order Date],TODAY()) = 2 THEN [Sales] END)
END

 

✔ 자동화 시 (필드 추가 생성)
  ⭐ IF절을 감싸는 SUM/AVG는 반드시 기재해주기

# datediff
DATEDIFF('month', [Order Date], TODAY())
CASE [M-1, M-2]
WHEN '1' THEN SUM(IF [datediff] = 1 THEN [Sales] END)
WHEN '2' THEN SUM(IF [datediff] = 2 THEN [Sales] END)
END

 


3. ATTR

- ATTR은 함수이다 (집계 함수)

- 함수에는 로직이 있다.
- 함수 : Y = ax + b
- * : 함수의 결과값
- 어떤 경우에 ATTR이 *을 반환하는가? 결과 중 하나

 

- VLOD에 따라서 ATTR 함수의 결과값이 달라짐

- 태블로에서 집계는 VLOD에서 이루어짐
- 현재 VLOD에서 이 필드가 단 하나의 값을 가지느냐, 복수의 값을 가지느냐, 단 하나의 값을 가지면 그것을 가지고 오고 아니면 *을 가지고 오라

 

- 특성 = ATTR
- 두 번 집계하므로 퍼포먼스에 영향을 미침
- 차원을 측정값으로 바꿀 때도 사용, 집계할 때도 사용

 

✅ ATTR 정의

if min(차원) = max(차원) then 차원 else * end

ifisnull(min([field]) = max([field]) then min([field]) else * end

 

✅ 예시

// 잘못된 예시
IF [Order Date] = #2022-06-28# THEN COUNTD ([Customer Name]) END

// 수정한 예시 (ATTR 사용)
IF ATTR([Order Date]) = #2022-06-28# THEN COUNTD ([Customer Name]) END

 


4. 개인 과제

📢 숙제: 날짜 매개변수 만들기

  1. 시트 매개변수 대시보드에 연동되게 만들기 (날짜 매개변수, 문자열 매개변수)
  2. 과거 데이터이므로 today() 는 작동이 안된.. 현재를 x라고 지정 후 MoM,YoY, MTD, YTD 만들기
  3. 기부받은 숫자, 전체 기부받은 숫자 중 몇 % 인지 매개변수 이름: 기부 금액, %로 정해서 만들기
  4. 최대한 동작, 집합 피해서 만드세요

 

4.1 필요한 매개변수, 필드 만들기

① 날짜 매개변수 만들기 (Date_parameter)

 

② Percentage  필드 만들기 (LOD 사용)

[Gift Amount] / { FIXED : SUM([Gift Amount])}

 

③ Amount, Percentage 매개변수 만들기

④ Amount, Percentage 매개변수 알맹이 만들기 (Amount, Percentage - Calc)

CASE [Amount, Percentage]
WHEN '1' THEN [Gift Amount]
WHEN '2' THEN [percentage]
END

 

⑤ MTD, YTD, M-1, M-2 필드 만들기

// MTD
DATEDIFF('month', [Gift Date], [Date_parameter]) = 0
AND
DATEDIFF('day', [Gift Date], [Date_parameter]) >= 1

// YTD
DATEDIFF('year', [Gift Date], [Date_parameter]) = 0
AND
DATEDIFF('day', [Gift Date], [Date_parameter]) >= 1

// M-1
DATEDIFF('month', [Gift Date], [Date_parameter]) = 1
AND
DATEDIFF('day', [Gift Date], [Date_parameter]) >= 1

// M-2
DATEDIFF('month', [Gift Date], [Date_parameter]) = 2
AND
DATEDIFF('day', [Gift Date], [Date_parameter]) >= 1

 

⑥ MTD, YTD, M-1, M-2 매개변수 만들기

⑦ MTD, YTD, M-1, M-2 매개변수 알맹이 만들기 (Date_range - Calc)

 

CASE [Date_range]
WHEN '1' THEN SUM(IF [M-1] THEN [Amount, Percentage - Calc] END)
WHEN '2' THEN SUM(IF [M-2] THEN [Amount, Percentage - Calc] END)
WHEN '3' THEN SUM(IF [MTD] THEN [Amount, Percentage - Calc] END)
WHEN '4' THEN SUM(IF [YTD] THEN [Amount, Percentage - Calc] END)
END

 

4.2 대시보드 시각화

 

 

1) 매개변수 3개 (날짜, 기간, 금액or비율 선택)

원하는 날짜와 기간, 금액 or 비율을 선택한다.

 

2) 기부 금액 및 비율 (수치)

날짜에 맞춰 각 기간 별로 금액 또는 비율을 수치로 표현하였다.

해당 수치는 보통 KPI 대시보드 상단에 들어가기에 상단에 추가하였다.

 

3) 날짜 별 기부 금액 및 비율 (리스트)

해당하는 기간의 각 일자 별 기부 금액 데이터를 리스트로 나타내었다.

숫자와 더불어 색상을 추가하여 금액이 많은 일자에는 진한 색으로 표현하였다.

 

4) 날짜 별 기부 금액 및 비율 (그래프)

리스트로 표현한 데이터를 시각적으로, 전반적인 추이를 볼 수 있도록 그래프로 나타내었다.

그리고 월 별 평균 참조선을 추가하여 평균 기준 금액이 높은지, 낮은지도 확인할 수 있다.

 

5) State 별 기부 금액 및 비율

State 별로 기부 금액 및 비율을 나타내었으며, 이 그래프 또한 색상을 추가하여 금액이 많은 State에는 진한 색으로 표현하였다.

 

6) State 별 단과 대학 기부 금액 및 비율

각 단과 대학 별로 기부 금액 및 비율을 리스트로 나타내었다.

숫자와 더불어 색상을 추가하여 금액이 높은 순으로 진한 색으로 표현하였다.

 


💡 회고

✔ 유익한 점 & 배운점

YTD, MTD에 대해 배웠으며 이를 활용하여 매개변수를 만들어보았다.

또한 매개변수를 활용하여 여러 그래프의 데이터를 조건에 맞춰서 출력하는 대시보드를 만들어보았다.

 

오늘 개인과제를 통해서도 매개변수, 태블로 세부 기능들을 익힐 수 있어서 많은 도움이 되었다.

 

 

✔ 스스로 아쉬운 점 & 개선할 점

첫 번째는 금액과 비율을 하나의 계산된 필드로 만들었기에 단위를 설정할 수가 없었다.

→ 금액은 $ 추가, 비율은 % 추가

그러나 다른 분이 만든 대시보드를 확인해보니, 이것을 구현했던데 따라하다가 오류가 발생하여 하지 못했다. 어떤 식으로 해야 하는지 확인해보고 다시 내 대시보드에 적용해볼 예정이다.

 

두 번째는 '날짜 별 기부 금액 및 비율' 막대 그래프에서 그래프를 하나 더 추가하고 싶었다.

예를 들어 그래프가 월 단위라면 전 월의 데이터를 함께 보여주고, 연 단위라면 전 년의 데이터를 함께 보여주고 싶었다.

그러나 그렇게 하려면 매뉴얼하게 필드, 매개변수를 일일이 만들어야 하는 것 같은데 다른 방법이 있는지 조금 더 연구해보고 강사님께 물어볼 예정이다!

 

728x90