ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7주 2일차 TIL 정리
    카테고리 없음 2023. 3. 21. 17:55

    7주 2일차에는 Tableau 프로젝트에 대한 조언과 날짜 함수 및 ATTR에 대해 대략적으로 학습했다.


    MTD(Month to Date) 만들기


    1. 날짜 매개변수를 기준으로 MTD 리스트 컨트롤

    다음과 같이 날짜 매개변수를 만들고, '다음에서 값 추가'로 원하는 필드를 추가하면 해당 필드의 전체값이 범위로 지정된다.

     

    매개변수를 사용하기 위해 계산된 필드를 생성해준다.

    이는 필터로 사용하기 위함인데, 필터를 사용하지 않고 노출하려면 IF - THEN 을 사용해줄 수도 있다.

     

    이때 계산된 필드는 이와 같은 코드를 가지는데,

    DATEDIFF('month',[Order Date],[date_parameter])=0
    and DATEDIFF('day',[Order Date],[date_parameter])>=0
    
    // month는 차이가 없고 day는 0보다 커야 한다

    date_parameter의 월데이터는 동일하되, 일데이터는 0보다 크게 설정한다.

     

     

     

    필터로 사용할 경우 앞에서 생성한 MTD_calc를 필터에 넣은 후, 참값만을 표시해준다.

    이후 그래프의 열 필드에 불연속형 Order Date 를 생성해 준 후,

    원하는 데이터(예시에선 Sales)를 삽입한다.

     

    이와 같은 방법으로 다음과 같이 매개변수를 컨트롤할 수 있다.

     

     

    2. MTD, QTD, YTD 합산값의 날짜에 따른 컨트롤

     

    문자열 매개변수 period를 만들어 다음과 같이 MTD, QTD, YTD를 각각 1, 2, 3에 할당해 표시해준다.

    앞에서 만든 MTD_calc를 활용해 다음과 같이 만든다.

    아래에 있는 QTD_calc과 YTD_calc는 첫줄의 'month'를 각각 'quarter'과 'year'로 변환한 필드이다.

     

     

    필터와 행, 열에 든 모든 것들을 제외하고, period_calc를 텍스트 레이블에 삽입하면 다음과 같은 컨트롤이 가능하다.

     

     


    계산된 필드 사용 시 유의점


    1. avg(A) / avg(B)   !=   avg(A /B)

    A = [a, b]

    B = [c, d]

    로 가정할 때, 

     

    avg(A/B) = (a/c + b/d) / 2


    avg(A)/avg(B) = ( (a+b) / 2 ) / ( (c+d) / 2 )
      = a+b / c+d

     

    따라서 두 값은 다르므로 유의해야 한다.

     

     

    2. 계산된 필드 집계오류의 해소

    if [Region] = 'West' then sum([Sales]) end			// 오류!!

    sum(if [Region] = 'West' then [Sales] end)

     

    3. 테이블 계산에서 '옆으로', '아래로'등 의미
     - 테이블 '옆으로'가 기본값
     - 테이블 '옆에서 아래로': 지그재그로..(1행 1열 1행 2열 ... 1행 마지막열 2행 1열...)
     - 패널 '옆으로': 패널 내에서만 계산
     - 셀: 셀 하나하나에 대한 ~~ 계산 (보통 백분율 등. 차이같은건 안나옴)

     


    ATTR


    ATTR: 함수 (y=ax+b)
     함수에는 로직이 존재한다.

    *는 함수의 결과값 중 하나

     ATTR의 정의는
      if min(차원) = max(차원) then 차원 else * end          → 하나의 값이 아닌 다중값이 오면 '*' 노출
      if isnull(min([field])) = max([field]) then min([field]) else * end

     ATTR은 집계함수이다. (VLOD(View Level Of Detail)에 따라 바뀔 수 있다.)
     
     → 현재의 VLOD에서 이 필드가 단 하나의 값을 가지느냐, 복수의 값을 가지느냐를 판정.
          하나의 값을 가져오면 그것을 가져오고, 아니면 *을 가져와라.

      ATTR 남발하면 느려진다!!!

    <example>
    Region을 넣고 ATTR(Country) 넣으면 세부성 높 → 낮 (value: * * usa)
    Country를 넣고 ATTR(Region) 넣으면 세부성 낮 → 높 (value: asia europe europe asia asia northAmerica)

    활용
    if ATTR([Order Date]) = #2022-06-27# then count([Sales]) else null end

    댓글

Designed by Tistory.