Возможно ли удалить дубликаты в Power BI на основе временного интервала между данными? - PullRequest
0 голосов
/ 22 января 2020

У меня есть список данных о потенциальных клиентах.

В таблице много информации, такой как дата, имя, адрес электронной почты, номер мобильного телефона и т. Д. c.

Однако некоторые из этих отведений являются дубликатами : один и тот же человек создал более одного отведения

Я хочу удалить дубликаты отведений. Проблема в том, что для того, чтобы считаться дублирующим потенциальным клиентом, адрес электронной почты или номер мобильного телефона должен отображаться в нескольких строках с интервалом в 30 дней . И только те, кто последует дальше, должны считаться дублированными. Первый всегда является не дублированным отведением.

Например,

1) Если Джонс сгенерировал отведение в 01/01/20 со своей электронной почтой abc@abc.com, а затем Создайте еще один шаг 10 дней после, в 10.10.20. Первое отведение - одиночное (не дублируется), и это второе отведение должно считаться дубликатом .

2) Если Мария сгенерировала отведение в 01/01/20 с ее электронной почтой xyz@abc.com, а затем сгенерировать еще один запрос * через 1027 * 40 дней после 10.02.20. Первое отведение представляет собой одиночное отведение (не дублируется), и это второе отведение также должно считаться одиночным (или не дублированным) .

Чтобы отметить отведение как дублирующее или нет, я хочу создать новый столбец с указанием времени между последним лидерством одного и того же человека (тот же адрес электронной почты или тот же номер мобильного телефона)

Затем создать новый столбец с меткой " Duplicate " или " Not Duplicate"в зависимости от времени, указанного в последнем столбце. Если его> 30 дней, это один раз. В противном случае (<30 дней) ведется дубликат. </p>

Например, картинка:

enter image description here

Может кто-нибудь, пожалуйста, помогите мне как это сделать?

1 Ответ

1 голос
/ 22 января 2020

Получение данных о запаздывании / опережении в Power BI не очень прямое. Вам нужно будет использовать комбинацию EARLIER и некоторую статистическую функцию, чтобы получить указанный c результат. Для указанного вами сценария c могут работать следующие вычисления:

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, чтобы исходные записи не удалялись при применении условия. </p>

Если вы ищете значение «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")
...