移除重複列
在 Tableau Prep Builder 版本 2024.1 及更高版本,以及 Tableau Cloud 中的 Web 上受支援。
重複資料可能會影響資料品質、預測結果偏差並浪費儲存空間。移除重複可確保每個值都是唯一的,從而提供資料的準確呈現。移除重複的第一步是識別資料中的重複列。識別出重複後,可以將它們從工作流程中移除。
識別並移除重複
Tableau Prep 將重複識別為至少有一個其他列具有相同值的任何列。
識別並移除重複列。
- (可選)對於 Excel 和文字檔案,可以按一下「輸入」步驟並新增「來源列編號」欄位以按原始資料來源對列進列排序。有關詳情,請參閱將來源列編號欄位新增至流程中和計算欄位的排序順序。
- 按一下輸入或輸出步驟以外的任何步驟。
- 識別重複列。
- 若要識別所有欄位中的重複列,請從工具列中按一下識別重複列。
- 若要識別特定欄位中的重複列,請選取一個或多個欄位,然後按一下識別重複列。或者,可以在設定檔窗格中,從選取的欄位中按一下更多選項 功能表並選取識別重複列。
將建立一個計算欄位並在「變更」窗格中列出。計算欄位提供重複列跨欄的欄位描述和名稱。「資料網格」顯示哪些列是唯一的,哪些列是重複的。
下圖是選取兩個欄位,區域和項目種類的結果,以識別僅那些選取的欄位中重複列。
如果來源列編號可用,則它用於對列的順序進行排序。否則,列將根據表結構描述中的第一個欄位進行排序。若要變更計算欄位中的值,您可以直接編輯計算或編寫自己的計算。請參閱計算欄位的排序順序。
- 若要評估重複列,請在「是否為重複列?」欄位或「資料網格」中按一下重複或唯一。
- 若要篩選並僅保留唯一列,請在「是否為重複列?」欄位或「資料網格」中按一下唯一,然後從工具列選取僅保留。或者,可以在「是否為重複列?」欄位或「資料網格」中按一下唯一,然後右鍵按一下以選取僅保留。
您也可以選取重複然後選取 排除以為資料篩選重複。這會產生與選取「唯一」和「僅保留」相同的結果,並且不會影響排除或保留哪些列。
在變更窗格中建立一個篩選器,顯示僅保留唯一列並排除重複列。
- 從「是否為重複列?」計算欄位,按一下更多選項 功能表,然後選取移除。
當您執行流程並建立輸出時,重複列將被移除。
附註:如果要為範例資料進行調整,請不要移除「是否為重複列?」計算欄位。
下圖顯示所有欄位中的重複列。
下圖顯示僅於欄位區域和項目類型的重複列。
範例資料重複
重複列可能不會出現在範例資料中,並且可能會在模型中引入偏差。
若要解決重複列範例資料:
- 如果要為範例資料進行調整,請不要移除是否為重複列?計算欄位。這使您可以選擇變更範例大小或調整輸入步驟中的範例資料。
- 調整範例大小以載入盡可能多的資料以進行列選取。參看設定資料範例大小
- 根據範例的大小,範例資料中可能不會出現重複。對唯一列使用僅保留選項允許移除重複列,即使它們在範例資料中不可見。
計算欄位的排序順序
預設情況下,如果多個列包含相同的值,它們將按第一個欄位或來源列編號(如果可用)排序。這些欄位用於將第一列識別為唯一,剩餘的為重複。變更欄位的排序順序可讓您指定要將哪個重複列識別為「唯一」。可以透過編輯計算並變更 ORDERBY
欄為。
例如:
IF ({PARTITION [Field1], [Field2], [Field3]: { ORDERBY [FieldName] ASC: ROW_NUMBER() } } = 1) THEN 'Unique' ELSE 'Duplicate' END
對於 Excel 和文字檔案,可以透過新增來源列編號欄位來按原始資料來源排序。
例如:
IF ({PARTITION [Source Row Number], [Field1], [Field2], [Field3]: { ORDERBY [Source Row Number] DESC: ROW_NUMBER() } } = 1) THEN 'Unique' ELSE 'Duplicate' END
有關詳情,請參閱將來源列編號欄位新增到流程。
編寫自己的篩選器計算來尋找並移除重複
可以跨多個欄位編寫自己的篩選器計算,以尋找並移除重複。
以下篩選器計算將僅傳回傳回 True 的結果。根據用於 PARTITION 的欄位,計算傳回 True 或 False
{PARTITION [Field1], [Field2], [Field3]: { ORDERBY [Field1] DESC: ROW_NUMBER() } } = 1
使用 CASE
或者 IF
以識別重複計算
可以使用計算編輯器中的 IF
或者 CASE
函數。例如:
CASE {PARTITION [Field1], [Field2], [Field3] : { ORDERBY [[Field3]]: ROW_NUMBER() } } = 1 WHEN TRUE THEN 'UNIQUE' ELSE 'DUPLICATE' END
IF ({PARTITION [[Field1]], [[Field2]], [[Field3]]: { ORDERBY [[Field3]] DESC: ROW_NUMBER() } } = 1) THEN 'Unique' ELSE 'Duplicate' END