기술 자료

누계 또는 이동 고유 카운트 계산


게시 날짜: 07 Nov 2015
마지막 수정 날짜: 20 Jul 2023

질문

차원의 누계, 이동 또는 고유 카운트를 계산하는 방법

예를 들어, 전 시간에 걸쳐 주문한 순 고객의 누계 또는 지난 3주와 같은 특정 기간 내에 주문한 순 고객의 이동 총계

환경

Tableau Desktop

답변

첨부된 예제 통합 문서에서는 Superstore 샘플 데이터 집합을 사용하여 다음 지침을 설명합니다.
클릭하여 단계 확장
옵션 1: FIXED를 사용하여 누계 고유 카운트 찾기
참고: 이 방법을 사용하여 이동 고유 카운트를 찾을 수 없습니다.
  1. 분석 > 계산된 필드 만들기를 선택합니다.
  2. 계산된 필드 대화 상자에서 다음을 수행한 후 확인을 클릭합니다.
    1. 계산된 필드에 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 "Customer's First Order(고객의 첫 번째 주문)"입니다.
    2. 수식 필드에서 다음과 유사한 계산을 만듭니다.
      { FIXED [Customer Name], [Order Date] : MIN(
      IF [Order Date] = { EXCLUDE [Order Date] : MIN([Order Date])}
      THEN 1
      ELSE 0
      END
      ) }
      
  3.  다음과 유사한 계산을 사용하여 "Accurate Running COUNTD of Customers(고객의 정확한 누계 COUNTD)"라는 계산된 필드를 만듭니다.
    RUNNING_SUM(SUM([Count Customer's 1st Order]))
  4. [Order Date(주문 날짜)]를 마우스 오른쪽 단추로 클릭하고 뷰로 끌어옵니다.
  5. 필드 놓기 대화 상자에서 녹색 달력 아이콘이 있는 WEEK(Order Date(주문 날짜))를 선택합니다.
  6. [Accurate Running COUNTD of Customers(고객의 정확한 누계 COUNTD)]를 행 선반으로 끌어옵니다.
클릭하여 단계 확장
옵션 2: 테이블 함수를 사용하여 이동 고유 카운트 찾기
참고: 이 해결 방법은 최종 뷰에 테이블 계산을 계산하는 데 필요한 모든 차원이 포함되어야 하므로 성능 문제를 야기할 가능성이 있습니다.
1단계 - 계산된 필드 3개 만들기
  1. 분석 > 계산된 필드 만들기를 선택합니다.
    1. 계산된 필드 대화 상자에서 다음을 수행한 후 확인을 클릭합니다.
    2. 계산된 필드에 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 "Every 3 Week Period a Customer is In(고객이 포함된 매 3주 기간)"입니다.
    3. 수식 필드에서 다음과 유사한 계산을 만듭니다.
      	WINDOW_MAX( MAX(1), -2, 0 )
    • Tableau 계산은 뷰에 따라 크게 달라집니다. 뷰의 컨텍스트가 없을 때 이 계산은 처음에 뷰의 모든 마크(예: 행, 점, 막대 등)에 대해 1 값을 반환한 후 두 마크에서 이러한 1의 최대값을 다시 이 마크로 반환합니다.
    • 이 예에서 최종 뷰에는 모든 고객에 대한 모든 주의 마크가 표시됩니다. 이 컨텍스트에서 이 계산은 이 주 또는 2주 전에 주문이 있는 고객에 대해 1을 반환합니다. WINDOW_SUM()이 아니라 WINDOW_MAX()를 사용하므로 이 계산은 고객에게 매주 주문이 있는 경우에도 1을 반환합니다.
    • 이 계산만 사용할 경우 각 고객에 대해 1 또는 0만 반환됩니다. 따라서 WINDOW_SUM()에 이 계산을 중첩하여 모든 고객에 대한 모든 1을 합산해야 합니다. 이러한 계산은 별도의 계산된 필드에 있어야 합니다. 그래야 테이블 함수를 다르게 계산하는 방법을 설정할 수 있습니다.
  2. 다음과 유사한 계산을 사용하여 "Moving Count of Customers for Every 3 Weeks(매 3주에 대한 고객의 이동 카운트)"라는 계산된 필드를 만듭니다.
    WINDOW_SUM([Every 3 Week Period a Customer is In])
  3. 다음과 유사한 계산을 사용하여 "First Filter(첫 번째 필터)"라는 계산된 필드를 만듭니다.
    FIRST() = 0
2단계 - 뷰 작성
  1. [Order Date(주문 날짜)]를 마우스 오른쪽 단추로 클릭하고 선반으로 끌어옵니다.
  2. 필드 놓기 대화 상자에서 녹색 달력 아이콘이 있는 WEEK(Order Date(주문 날짜))를 선택합니다.
    1. 열 선반에서 WEEK(Order Date(주문 날짜))를 마우스 오른쪽 단추로 클릭하고 불연속형을 선택합니다.
    2. 날짜 필드는 불연속형이어야 합니다. 그렇지 않으면 선 그래프가 [Customer Name(고객 이름)]으로 분리됩니다.
  3. [Customer Name(고객 이름)]을 마크 카드의 세부 정보로 끌어옵니다.
    • 테이블 계산이 올바르게 계산되려면 [Customer Name(고객 이름)] 필드가 뷰에 있어야 합니다. 나중에 뷰를 필터링하여 선이 하나만 있는 것처럼 보이게 할 것입니다.
  4. [Moving Count of Customers for Every 3 Weeks(매 3주에 대한 고객의 이동 카운트)]를 선반으로 끌어옵니다.
3단계 - 테이블 계산 편집
  1. 행 선반에서 [Moving Count of Customers for Every 3 Weeks(매 3주에 대한 고객의 이동 카운트)]를 마우스 오른쪽 단추로 클릭하고 테이블 계산 편집…을 선택합니다.
  2. 테이블 계산 대화 상자에서 다음 작업을 수행하고 대화 상자를 닫습니다.
    1. Nested Calculations(중첩된 계산)에서 Every 3 Week Period a Customer is In(고객이 포함된 매 3주 기간)을 선택합니다.
    2. 다음을 사용하여 계산에서 특정 차원을 선택합니다. 
    3. 차원 목록에서 Week of Order Date(주문 날짜의 주)만 선택합니다.
    4. Nested Calculations(중첩된 계산)에서 Moving Count of Customers for Every 3 Weeks(매 3주에 대한 고객의 이동 카운트)를 선택합니다.
    5. 다음을 사용하여 계산에서 특정 차원을 선택합니다. 
    6. 차원 목록에서 Customer Name(고객 이름)만 선택합니다.
      • [Every 3 Week Period a Customer is In(고객이 포함된 매 3주 기간)]에서는 Tableau Desktop에서 고객이 포함된 매 3주 기간을 고객별로 계산하도록 할 것입니다.다시 말해, Table Desktop에서 각 고객 안에 있는 주 수를 계산하도록 합니다. 차원을 선택하면 테이블 계산이 차원의 모든 값에 대해 실행됩니다. 차원을 선택 취소하면 Tableau Desktop이 해당 차원의 모든 값에 대해 계산을 시작합니다.
      • 이와 유사하게 [Moving Count of Customers for Every 3 Weeks(매 3주에 대한 고객의 이동 카운트)]는 각 주에 포함되는 모든 고객의 합계를 계산합니다.
  3. [First Filter(첫 번째 필터)]를 필터 선반으로 끌어오고 확인을 클릭하여 필터 대화 상자를 닫습니다.
  4. 필터 선반에서 [First Filter(첫 번째 필터)]를 마우스 오른쪽 단추로 클릭하고 다음을 사용하여 계산 > Customer Name(고객 이름)을 선택합니다.
  5. 필터 대화 상자에서 을 선택하고 확인을 클릭합니다.

추가 정보

옵션 1에 대한 참고:
  • 이 계산은 데이터 집합에 처음으로 나타나는 모든 고객의 수를 한 번 계산합니다. 즉, FIXED 식은 이동 기간의 첫 번째 주문 날짜를 찾을 수 없기 때문에 이 방법을 사용하여 이동 고유 카운트를 찾을 수는 없습니다.
  • 2단계의 계산은 다음을 수행합니다.
    • 먼저, { EXCLUDE [Order Date] : MIN([Order Date])} 식은 각 고객의 첫 번째 주문 날짜를 찾습니다. 일반적으로 첫 번째 주문을 찾을 때는 { FIXED [Customer Name] : MIN([Order Date])} 식을 사용합니다. 그러나 EXCLUDE의 범위는 바깥쪽 FIXED 문으로 설정됩니다. 다시 말해 EXCLUDE 문은 [Customer Name(고객 이름)] 및 [Order Date(주문 날짜)] 차원으로 시작한 후 [Order Date(주문 날짜)]를 제외합니다.
    • 그런 다음 IF 문이 해당 고객의 첫 번째 주문 날짜인 날짜에 대해 1을 반환합니다.
    • IF 문은 첫 번째 주문 날짜와 일치하는 날짜가 있는 모든 행에 대해 1을 반환합니다. 즉, 기초 데이터에 이 첫 번째 주문에 대한 여러 레코드가 있는 경우 이러한 각 행은 1이 됩니다. 각 고객의 수를 한 번만 계산할 것이므로 IF 문의 최소값은 [Customer Name(고객 이름)]으로 고정됩니다.
    • 또한 [Order Date(주문 날짜)]를 FIXED 문의 차원 선언에 추가해야 최종 뷰에 시간대별 변경이 표시됩니다.
옵션 2에 대한 참고:
  • Tableau 계산은 뷰에 따라 크게 달라집니다. 따라서 뷰의 컨텍스트가 없을 때 2단계의 계산은 처음에 뷰의 모든 마크(예: 행, 점, 막대 등)에 대해 1 값을 반환한 후 두 마크에서 이러한 1의 최대값을 다시 이 마크로 반환합니다.
  • 이 예에서 최종 뷰에는 모든 고객에 대한 모든 주의 마크가 표시됩니다. 이 컨텍스트에서 이 계산은 이 주 또는 2주 전에 주문이 있는 고객에 대해 1을 반환합니다. WINDOW_SUM()이 아니라 WINDOW_MAX()를 사용하므로 이 계산은 고객에게 매주 주문이 있는 경우에도 1을 반환합니다.
  • 이 계산만 사용할 경우 각 고객에 대해 1 또는 0만 반환됩니다. 따라서 WINDOW_SUM()에 이 계산을 중첩하여 모든 고객에 대한 모든 1을 합산해야 합니다.
  • 이러한 계산은 별도의 계산된 필드에 있어야 합니다. 그래야 테이블 함수를 다르게 계산하는 방법을 설정할 수 있습니다.
이 문서로 문제가 해결되었습니까?