移除重复行

在 Tableau Prep Builder 版本 2024.1 及更高版本以及 Tableau Cloud 中的 Web 上受支持。

重复数据可能会影响数据质量、预测结果存在偏差并浪费存储空间。移除重复项可确保每个值都是唯一的,从而提供数据的准确表示形式。移除重复项的第一步是识别数据中的重复行。识别出重复项后,您随后可以将它们从工作流程中移除。

识别并移除重复项

Tableau Prep 将重复项标识为至少有一个其他行具有相同值的任何行。

识别并移除重复的行。

  1. (可选)对于 Excel 和文本文件,您可以单击“输入”步骤并添加“源行号”字段以按原始数据源对行进行排序。有关详细信息,请参见将源行号字段添加到您的流程计算字段的排序顺序
  2. 单击“输入”或“输出”步骤以外的任何步骤。
  3. 识别重复的行。
    • 若要识别所有字段中的重复行,请从工具栏中单击“识别重复行”
    • 若要识别特定字段中的重复行,请选择一个或多个字段,然后单击“识别重复行”。(可选)在配置窗格中,您可以单击从所选字段中选择“更多选项”菜单,并选择“识别重复行”

    将创建一个计算字段并在“更改”窗格中列出。计算字段提供重复行跨越的字段的描述和名称。数据网格显示哪些行是唯一的,哪些行是重复的。

    下图显示了选择“区域”“项目类型”两个字段以仅识别那些选定字段中的重复行的结果。

    如果源行号可用,则它用于对行的顺序进行排序。否则,行将根据表架构中的第一个字段进行排序。若要更改计算字段中的值,您可以直接编辑计算或编写自己的计算。请参见计算字段的排序顺序

  4. 若要评估重复行,请单击“是否为重复行?”字段或数据网格中的“重复”“唯一”
  5. 下图显示了所有字段中的重复行。

    下图仅显示了“区域”和“项目类型”字段中的重复行。

  6. 若要筛选并仅保留唯一行,请单击“数据”网格或“是否为重复行?”字段中的“唯一”,然后从工具栏中选择“仅保留”。或者,您可以单击“数据”网格或“是否为重复行?”字段中的“唯一”,然后右键单击以选择“仅保留”

    您还可以选择“重复” ,然后选择“排除”以筛选重复项数据。这会产生与选择“唯一”和“仅保留”相同的结果,并且不会影响排除或保留哪些行。

    将会在更改窗格中创建一个筛选器,显示仅保留唯一行并排除重复行。

  7. 从“是否为重复行?”计算字段中,单击“更多选项” 菜单,然后选择“移除”

    当您运行流程并创建输出时,重复的行将被移除。

    注意:不要移除“是否为重复行?”计算字段(如果您要调整采样数据)。

样本数据中的重复项

重复的行可能不会出现在采样数据中,并且可能会在模型中引入偏差。

若要解决重复行采样数据,请执行以下操作:

  1. 不要移除“是否为重复行?”计算字段(如果您要调整采样数据)。这使您可以选择更改样本大小或调整输入步骤中的样本数据。
  2. 调整样本大小以加载尽可能多的数据用于行选择。请参见设置数据样本大小
  3. 根据样本的大小,重复项可能不会出现在采样数据中。对唯一行使用“仅保留”选项允许您移除重复行,即使它们在采样数据中不可见。

计算字段的排序顺序

默认情况下,如果多行包含相同的值,它们将按第一个字段或源行号(如果可用)排序。这些字段用于将第一行标识为“唯一” ,将其余行标识为“重复” 。更改字段的排序顺序允许您指定要将哪个重复行标识为“唯一”。您可以通过编辑计算并更改“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 用于识别重复计算

您可以在计算编辑器中使用 IFCASE 函数。例如:

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

感谢您的反馈!您的反馈已成功提交。谢谢!