是否可以根据数据之间的时间间隔删除 Power BI 中的重复项?

Is possible to remove duplicates in Power BI based on a time interval between the data?

我有一个潜在客户数据列表。

table 有很多信息,如日期、姓名、电子邮件、手机号码等。

但是,其中一些线索是重复的:同一个人产生了不止一条线索

我想做的是删除重复的线索。 问题是,要被视为重复线索,电子邮件或手机号码必须出现在不止一行中,在 30 天的时间间隔内。 只有下一个才必须被认为是重复的。第一个始终是不重复的线索。

例如

1) 如果琼斯在 01/01/20 通过他的电子邮件 abc@abc.com 产生了一个潜在客户,然后在 10 天后产生了另一个潜在客户 之后,20 年 1 月 10 日。第一条线索是一条线索(不是重复的),第二条线索 必须被认为是重复的

2) 如果 Maria 在 01/01/20 通过她的电子邮件 xyz@abc.com 产生了一个潜在客户,然后在 40 天后产生了另一个潜在客户 之后,2020 年 2 月 10 日。第一条线索是一条线索(不是重复的),第二条线索也必须被认为是一条线索(或不是重复的)

为了将线索标记为重复或不重复,我想生成一个新列,其中包含同一个人(同一电子邮件或同一手机号码)的最后一条线索之间的时间

然后根据最后一列显示的时间生成一个标签为“Duplicate”或“Not Duplicate”的新列.如果它 > 30 天,那就是单一线索。否则(<30 天)是重复的线索。

例如图片:

有人可以帮我看看怎么做吗?

获取 lag/lead 数据在 Power BI 中不是很直接。您将不得不结合使用 EARLIER 和一些聚合函数来获得特定结果。对于您的特定情况,以下计算可能有效:

Day Difference = 
        VAR name1 = 'Table'[Name]
        VAR Lastdate1 = MAXX(FILTER('Table','Table'[Name]=name1 && 'Table'[date]<EARLIER('Table'[date])),'Table'[date]) 
RETURN 
        IF(
            DATEDIFF(Lastdate1,'Table'[date],DAY)=BLANK(),
            100,
            DATEDIFF(Lastdate1,'Table'[date],DAY))

创建列后,您可以过滤所有记录 <=30 以获得您要查找的结果。我用 100 替换了空白,这样在应用条件时原始记录就不会被删除。

如果您要查找 "Tag" 值,则以下计算将直接为您提供标签值:

Tag = 
        VAR name1 = 'Table'[Name]
        VAR Lastdate1 = MAXX(FILTER('Table','Table'[Name]=name1 && 'Table'[date]<EARLIER('Table'[date])),'Table'[date]) 
RETURN 
        IF(IF(
            DATEDIFF(Lastdate1,'Table'[date],DAY)=BLANK(),
            100,
            DATEDIFF(Lastdate1,'Table'[date],DAY))<=30,"Duplicate","Single")