Tableau Prep 통합 문서 "duplicates from union.tfl"에서 "January Orders"는 1월의 첫 번째 주문 보고서입니다. "January Orders (corrections)" 테이블은 신규 주문이 추가되고 "January Orders"에 이미 있는 주문이 수정된 후에 릴리스된 보고서입니다. 두 테이블을 유니온하면 두 테이블의 모든 행이 유지되고 중복된 측정값이 만들어집니다.
"duplicates from union.tfl"의 첫 번째 흐름에서 이 문제가 나타납니다.
옵션 1: 한 테이블의 모든 데이터와 다른 테이블의 일치하지 않는 데이터 유지
이 예에서는 "January Orders (corrections)"의 모든 데이터와 "January Orders"에서 "January Orders (corrections)"에 없는 주문만 필요합니다.
- "January Orders"과 "January Orders (corrections)" 간의 새 조인을 만듭니다.
- 조인 1단계에서 다음을 수행합니다.
- 적용된 조인 절의 경우 [Order ID] = [Order ID]에 조인 절을 만듭니다.
- 조인 유형의 경우 벤 다이어그램의 구획을 클릭하여 가장 왼쪽의 세그먼트만 채웁니다. Tableau Prep에서는 이를 "일치하지 않는 왼쪽 항목만" 조인이라고 합니다.
- "January Orders (corrections)"를 조인 1로 끌어오고 새 유니온에 테이블을 놓습니다.
옵션 2: 최근 날짜의 레코드만 유지
예를 들어 Ms. Mouse 씨는 다른 코트를 추가하기 위해 주문을 변경했지만 이 변경 사항이 실수로 "January Orders"에 기록되었습니다. 올바른 주문은 최근 날짜의 주문입니다.
- [Order ID] = [Order ID]에 "January Orders"과 "January Orders (corrections)" 간의 FULL OUTER 조인을 만듭니다.
- 조인 2의 단계를 추가합니다.
- 날짜 필드 및 측정값을 제외하고 일치하는 모든 필드를 병합합니다.
- 프로필 패널에서 다른 값을 대체할 값이 포함된 필드를 클릭합니다.
- Ctrl 키를 누른 상태에서 일치하는 필드를 클릭합니다.
- 필드를 마우스 오른쪽 단추로 클릭하고 필드 병합을 선택합니다.
- 필드가 병합되면 Tableau Prep에 두 값이 유지되지 않고(2개의 서로 다른 값이 있는 경우) 처음 선택한 필드의 값이 있는 경우 해당 값이 유지됩니다.
- 예를 들어 Ms. Horse의 이름이 실수로 Ms. House로 "January Orders" 테이블에 기록되었고 올바른 이름은 "January Orders (corrections)"에 나타납니다. [Customer]와 [Customer-1]을 병합할 때 [Customer-1]을 먼저 선택합니다.
- 병합된 필드의 이름에서 다른 필드를 대체할 필드가 어느 필드인지 확인할 수 있습니다. 이름은 [첫 번째 필드 이름 & 두 번째 필드 이름] 같은 형식으로 지정됩니다. 처음에 나열되는 필드 이름이 다른 필드를 대체하는 필드가 됩니다.
- 필드를 잘못된 순서로 병합한 경우 프로필 패널에서 병합된 필드 이름 위의 병합 아이콘을 마우스 오른쪽 단추로 클릭하고 제거를 선택하여 병합을 실행 취소할 수 있습니다.
- 계산된 필드 만들기... 단추를 클릭합니다.
- 계산된 필드 대화 상자에서 다음을 수행한 후 확인을 클릭합니다.
- 계산된 필드에 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 "Most Recent Date(최근 날짜)"입니다.
- 수식 필드에서 다음과 유사한 계산을 만듭니다.
IF [Date] > [Date-1]
THEN [Date]
ELSE IFNULL( [Date-1], [Date] )
END
- 위의 계산에서는 [Date]가 [Date-1]보다 크거나 최근인 경우 [Date]가 반환됩니다. 그렇지 않은 경우에는 계산에서 [Date-1]이 반환됩니다.
- 한 필드가 NULL인 경우 첫 번째 조건은 항상 false가 됩니다. IFNULL() 함수는 [Date-1]이 NULL인 경우 [Date-1]을 [Date]로 대체합니다. 즉, 이 계산은 NULL이 아닌 값이 있는 경우 항상 NULL이 아닌 값을 반환합니다.
- [Date] 및 [Date-1]을 제거합니다.
- "New Cost"라는 이름 및 다음과 유사한 계산을 사용하여 계산된 필드를 만듭니다.
IF [Date] > [Date-1]
THEN [Cost]
ELSE IFNULL( [Cost-1], [Cost] )
END
- [Cost] 및 [Cost-1]을 제거합니다.
- 모든 측정값에 대해 6~7단계를 반복합니다.
옵션 3: 모든 중복을 서로 다른 방법으로 처리
- [Order ID] = [Order ID]에 "January Orders"과 "January Orders (corrections)" 간의 FULL OUTER 조인을 만듭니다.
- 조인 3의 단계를 추가합니다.
- a) 두 테이블의 값이 동일하거나 b) 한 테이블의 값으로 항상 대체해야 하는 모든 필드를 병합합니다.
- 계산된 필드 만들기... 단추를 클릭합니다.
- 계산된 필드 대화 상자에서 다음을 수행한 후 확인을 클릭합니다.
- 계산된 필드에 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 "New Cost(새 비용)"입니다.
- 수식 필드에서 다음과 유사한 계산을 만듭니다.
CASE [Order ID-1 & Order ID]
WHEN 5 THEN [Date]
WHEN 9 THEN [Date]
ELSE IFNULL([Date-1],[Date])
END
- 위의 계산은 [Order ID-1 & Order ID]의 모든 값을 읽고 지정된 날짜 필드를 반환합니다. 작업을 간단히 하기 위해 [Date]를 반환해야 하는 ID만 지정했습니다. 나머지 모든 항목은 [Date-1]을 반환하거나 [Date-1]이 NULL인 경우 ELSE 문에 따라 [Date]를 반환합니다.
- 이 필드에는 데이터의 모든 행에 대해 고유한 값이 포함되므로 [Order ID-1 & Order ID] 값이 CASE 문에 사용됩니다.
- 또한 이후에 ID가 새로 추가될 때마다 이 흐름을 다시 실행하면 [Date-1]이 반환됩니다.
- [Date] 및 [Date-1]을 제거합니다.
- 중복을 개별적으로 처리해야 하는 모든 필드에 대해 4~6단계를 반복합니다.