기술 자료

여러 날짜 필드 결합


게시 날짜: 24 Apr 2017
마지막 수정 날짜: 09 Apr 2024

질문

여러 날짜 필드를 단일 축 또는 단일 날짜 머리글로 결합하는 방법.

예를 들어 모든 주문에는 [Order Date(주문 날짜)]와 [Ship Date(배송 날짜)]가 있습니다. 최종 목표는 각 월에 제출되고 배송된 주문 수에 대한 라인 차트 또는 크로스탭을 표시하는 것입니다. [Order Date(주문 날짜)]를 축 또는 머리글로 사용하면 각 월에 배송된 주문의 수가 잘못되고 그 반대의 경우도 마찬가지입니다.

환경

Tableau Desktop

답변

첨부된 예제 통합 문서에서는 Superstore 샘플 데이터 집합을 사용하여 모든 옵션을 설명합니다.
클릭하여 솔루션 확장
옵션 1: 날짜 필드 피벗
  1. 날짜 필드를 피벗하여 날짜 데이터가 있는 필드 하나와, 이벤트가 "제출된 주문"인지 아니면 "배송된 주문"인지를 설명하는 "이벤트" 같은 두 번째 필드만 남겨둡니다. 참고: 일부 데이터 원본의 경우 Tableau Desktop에서 직접 피벗을 수행할 수 있습니다. 자세한 지침은 데이터 피벗(열에서 행으로)을 참조하세요.
  2. [Pivot Field Values(피벗 필드 값)]을 마우스 오른쪽 단추로 클릭하고 행 선반으로 끌어옵니다.
  3. 필드 놓기 대화 상자에서 MY(Pivot Field Values)를 선택하고 확인을 클릭합니다.
  4. 데이터 패널에서 [Pivot Field Names(피벗 필드 이름)]을 마우스 오른쪽 단추로 클릭하고 별칭…을 선택합니다.
  5. 별칭 편집 대화 상자에서 Order Date(주문 날짜) 및 Ship Date(배송 날짜)에 설명적인 별칭을 지정하고 확인을 클릭합니다.
  6. [Pivot Field Names(피벗 필드 이름)]을 열 선반으로 끌어옵니다.
  7. [Order ID(주문 ID)]를 마우스 오른쪽 단추로 클릭하고 마크 카드의 텍스트로 끌어옵니다.
  8. 필드 놓기 대화 상자에서 CNTD(Order ID)를 선택하고 OK(확인)를 클릭합니다.
클릭하여 솔루션 확장
옵션 2: LOD 계산 사용
이 옵션을 사용하려면 모든 날짜 필드에 뷰의 모든 날짜 구간차원에 대한 하나 이상의 레코드가 있어야 합니다. 이 예에서는 모든 행이 월이므로 [Order Date(주문 날짜)]와 [Ship Date(배송 날짜)]에 모든 월에 대한 하나 이상의 주문이 있어야 합니다.
  1. 날짜 필드 하나를 선택하여 날짜 축 또는 머리글을 만듭니다. 이 예에서는 [Order Date(주문 날짜)]를 사용합니다.
  2. [Order Date(주문 날짜)]를 마우스 오른쪽 단추로 클릭하고 행 선반으로 끌어옵니다.
  3. 필드 놓기 대화 상자에서 파란색 # 아이콘이 있는 MY(Order Date)를 선택하고 확인을 클릭합니다.
  4. [Order ID(주문 ID)]를 마우스 오른쪽 단추로 클릭하고 마크 카드의 텍스트로 끌어옵니다.
  5. 필드 놓기 대화 상자에서 CNTD(Order ID)를 선택합니다.
  6. 뷰에서 "Distinct count of Order ID(주문 ID의 고유 카운트)" 머리글을 마우스 오른쪽 단추로 클릭하고 Edit Alias…(별칭 편집…)를 선택합니다.
  7. 별칭 편집 대화 상자에서 새 이름을 입력하고 확인을 클릭합니다.
  8. "Orders Shipped(배송된 주문)"라는 이름 및 다음과 유사한 계산을 사용하여 계산된 필드를 만듭니다.

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. 데이터 패널에서 [Orders Shipped(배송된 주문)]를 두 번 클릭하여 필드를 뷰에 추가합니다.

     
클릭하여 솔루션 확장
옵션 3: 날짜 스캐폴딩 사용
이 옵션을 사용하려면 하나의 날짜 필드가 다른 날짜 필드 앞에 와야 하며, 이 옵션은 날짜 필드 2개로 범위를 정의하는 경우 가장 효과적으로 작동합니다.
  1. 원래 데이터 연결에 조인할 모든 가능한 날짜의 마스터 목록이 포함된 테이블을 만듭니다. 이 예에서 테이블 이름은 "Master Date List(마스터 날짜 목록)"입니다.
  2. Tableau Desktop에서 데이터 원본 탭으로 이동합니다.
  3. "Sheet 1" 테이블을 캔버스 영역에 추가합니다.
  4. 조인 대화 상자에서 다음을 수행합니다.
    1. Left를 선택합니다.
    2. 데이터 원본에서 Order Date(주문 날짜)를 선택합니다.
    3. Sheet 1에서 날짜를 선택합니다.
    4. 등호를 클릭하고 <=를 선택합니다.
    5. 데이터 원본에서 새 조인 절 추가를 클릭하고 Ship Date(배송 날짜)를 선택합니다.
    6. Sheet 1에서 날짜를 선택합니다.
    7. 등호를 클릭하고 >=를 선택합니다.
  5. Analysis(분석) > Create Calculated Field(계산된 필드 만들기)를 선택합니다.
  6. 열린 Calculated Field(계산된 필드) 대화 상자에서 다음 작업을 수행한 후 OK(확인)를 클릭합니다.
    1. 계산된 필드 이름을 지정합니다. 이 예에서 계산된 필드 이름은 "Orders Placed(제출된 주문)"입니다.
    2. 수식 필드에서 다음과 유사한 계산을 만듭니다.
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. "Orders Shipped(배송된 주문)"라는 이름 및 다음과 유사한 계산을 사용하여 계산된 필드를 만듭니다.
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. [Date(날짜)]를 마우스 오른쪽 단추로 클릭하고 행 선반으로 끌어옵니다.
  9. 필드 놓기 대화 상자에서 MY(Date)를 선택하고 OK(확인)를 클릭합니다.
  10. [Orders Placed(제출된 주문)]를 마크 카드의 텍스트로 끌어옵니다.
  11. 데이터 패널에서 [Orders Shipped(배송된 주문)]를 두 번 클릭하여 필드를 뷰에 추가합니다.
클릭하여 솔루션 확장
옵션 4: 데이터 통합 사용
이 옵션은 날짜 범위에 대해 작동하지 않습니다.
  1. 모든 가능한 날짜의 마스터 목록이 포함된 테이블을 만들고 해당 목록에 대한 새 연결을 만듭니다. 이 예에서 연결 이름은 "Sheet1 (master date list)"입니다.
  2. Data(데이터) > Sample - Superstore > Duplicate(복제)로 이동합니다. 이 예에서는 명료성을 위해 "Sample - Superstore"의 복사본 2개 이름을 "Sample - Superstore (link on order date)"와 "Sample - Superstore (link on ship date)"로 지정했습니다.
  3. Data(데이터) > Edit Relationships…(관계 편집…)으로 이동합니다.
  4. 관계 대화 상자에서 다음을 수행합니다.
    1. 주 데이터 원본으로 Sheet1 (master date list)를 선택합니다.
    2. 보조 데이터 원본으로 Sample - Superstore (link on order date)를 선택합니다.
    3. 사용자 지정 라디오 버튼을 선택합니다.
    4. Add…(추가…)를 클릭합니다.
  5. 필드 매핑 추가/편집 대화 상자에서 다음을 수행합니다.
    1. 날짜 옆의 화살표를 클릭하여 날짜 옵션을 확장합니다.
    2. 뷰에 사용된 가장 세분화된 날짜 수준과 일치하는 날짜 수준을 선택합니다. 이 예에서는 뷰에 MY(Date)가 사용됩니다.
    3. 오른쪽 패널에서 Order Date(주문 날짜) 옆의 화살표를 클릭합니다.
    4. Order Date(주문 날짜)에 대해 일치하는 날짜 수준을 선택합니다.
    5. OK(확인)를 클릭합니다.
  6. "Sample - Superstore (link on ship date)"를 보조 데이터 원본으로 사용하고 MY(Date) = MY(Ship Date)의 관계를 추가하여 4~5단계를 반복합니다.
  7. OK(확인)를 클릭하여 관계 대화 상자를 닫습니다.
  8. 새 워크시트에서 "Sheet1 (master date list)" 데이터 연결의 [Date(날짜)]를 마우스 오른쪽 단추로 클릭하고 뷰로 끌어옵니다.
  9. 필드 놓기 대화 상자에서 MY(Date)를 선택하고 OK(확인)를 클릭합니다.
  10. 뷰에서 "Distinct count of Order ID(주문 ID의 고유 카운트)" 머리글을 마우스 오른쪽 단추로 클릭하고 Edit Alias…(별칭 편집…)를 선택합니다.
  11. 별칭 편집 대화 상자에서 보다 설명적인 이름을 입력하고 OK(확인)를 클릭합니다.
  12. "Sample - Superstore (link on order date)" 데이터 원본에서 [Order ID(주문 ID)]를 마우스 오른쪽 단추로 클릭하고 마크 레이블의 텍스트로 끌어옵니다.
  13. 필드 놓기 대화 상자에서 CNTD(Order ID)를 선택하고 OK(확인)를 클릭합니다.
  14. "Sample - Superstore (link on ship date)" 데이터 원본에서 [Order ID(주문 ID)]를 마우스 오른쪽 단추로 클릭하고 마크 레이블의 텍스트로 끌어옵니다.
  15. 필드 놓기 대화 상자에서 CNTD(Order ID)를 선택하고 OK(확인)를 클릭합니다.
  16. 마크 카드의 세부 정보에서 CNTD(Order ID)를 뷰의 숫자 위로 끌어오고 필드를 놓습니다.
  17. 별칭 편집 대화 상자에서 보다 설명적인 이름을 입력하고 OK(확인)를 클릭합니다.

추가 정보

옵션 2에 대한 참고(세부 수준 식):
  • 모든 날짜 필드에는 뷰에 사용된 날짜 수준에 대한 하나 이상의 레코드가 있어야 합니다.
  • FIXED 식은 각 월의 [Ship Date(배송 날짜)]가 뷰에 나타나는 위치에 관계없이 해당 월의 [Ship Date(배송 날짜)]에 배송된 주문의 총 고유 카운트를 반환합니다. 예를 들어 1월과 2월에 제출된 주문이 2월에 배송된 경우 FIXED 식 자체는 MY(Order Date) = January와 MY(Order Date) = February에서 모두 59를 반환합니다.
  • 전체 IF 문은 LOD 식이 IF 문 안의 중복 값을 반환하지 않도록 MIN()으로 묶입니다.

옵션 3에 대한 참고(날짜 스캐폴딩):
  • 상위 날짜 수준(예: 매월 1일)에서 모든 날짜를 나열할 수도 있습니다. 이 경우 4-2 및 4-5단계에서 원본 테이블의 날짜를 DATETRUNC('month', [Order Date(주문 날짜)]) 같은 올바른 날짜 수준으로 설정하는 조인 계산을 사용합니다.
  • 모든 날짜가 있는 원래 데이터 원본에 테이블을 추가할 수 없는 경우 모든 날짜가 포함된 외부 테이블에 대한 교차 데이터베이스 조인을 만듭니다. 이렇게 하려면 교차 데이터베이스 조인 기능의 조인 절에서 부등식을 사용할 수 있도록 Tableau Desktop 10.5 이상으로 업그레이드해야 합니다.
  • 이 옵션을 사용하면 데이터가 중복되므로 동일한 데이터 원본을 사용하는 다른 뷰에 영향을 미칠 수 있습니다.
  • Tableau Prep 2021.3.1부터 날짜 목록을 만들지 않아도 Tableau Prep에서 날짜 스캐폴딩을 만들 수 있습니다. 지침은 순차적 데이터의 간격 채우기를 참조하세요.
옵션 4에 대한 참고(데이터 통합):
  • 데이터 통합에는 다수의 제한 사항이 있습니다. 잠재적 문제에 관한 도움이 필요한 경우 데이터 통합 문제 해결을 참조하세요.
  • 연결하는 날짜는 관계 대화 상자에서 선택한 가장 세분화된 날짜 수준에서 정확히 일치해야 합니다.
  • 서로 다른 데이터 원본의 필드 간 관계를 만드는 경우 각 필드를 한 번에 하나의 다른 필드에만 연결할 수 있으므로 원래 데이터 원본을 복제해야 합니다.
  • [Order Date(주문 날짜)]에 연결된 모든 필드를 MY(Date) = MY(Order Date)에서 연결된 원래 데이터 원본의 복사본에서 가져오고, [Ship Date(배송 날짜)]에 연결된 모든 필드에 대해서도 그렇게 해야 합니다.

시간에 따른 유효 레코드 표시
데이터 혼합
Tableau에서 세부 수준 식 만들기
세부 수준 식을 포함하는 CASE 및 IF 문이 예기치 않은 결과를 반환함
이 문서로 문제가 해결되었습니까?