PowerBI DAX - идентификация первого экземпляра на основе нескольких критериев - PullRequest
0 голосов
/ 21 марта 2019

Использование DAX для идентификации первого экземпляра записи

Я столкнулся с попыткой идентифицировать первый экземпляр в базе данных, где кто-то (идентифицированный по столбцу ID) впервые приобрел продукт.Указанное лицо может приобрести продукт несколько раз в разные дни или приобрести разные продукты в один и тот же день.Я набрал формулу Excel, которая меня туда привела, но у меня возникли проблемы с переводом в DAX.

=COUNTIFS(ID,ID,PurchaseDate,"<="&PurchaseDate,Product,Product)

Что приводит к правильным значениям в «Первом экземпляре»?Столбец.

enter image description here

В идеале мне не нужно жестко кодировать значения, так как я хотел бы использовать столбец «Продукт» в качестве параметра в будущем,Если есть другие предложения, кроме перевода этого в DAX, это также будет оценено!(IE использует фильтры или другие инструменты в PowerBI)

Заранее спасибо!

1 Ответ

1 голос
/ 21 марта 2019

Это очень похоже на ответ, который я дал на другой вопрос (который вы можете найти здесь ).

В этом вопросе запрос состоял в том, чтобы просмотреть текущий ряд строк для заданного критерия строки (продукт, год и т. Д.). Мы можем немного изменить это, чтобы оно работало в вашей проблеме.

Это формула, которую я привел в ответе, который я связал выше. Основная концепция заключается в использовании функций EARLIER для получения значения из строки и передачи его в оператор фильтра.

Running Count = 
    COUNTROWS(
        FILTER(
            'Data',
            [ProductName] = EARLIER([ProductName]) &&
            [Customer] = EARLIER([Customer]) &&
            [Seller] = EARLIER([Seller]) &&
            [Year] <= EARLIER([Year])
        )
    )

Что бы я предложил для вашей проблемы, это создайте его как флаг ИСТИНА / ЛОЖЬ, просто проверив, равно ли число счетчиков, равное 1. Эта формула оценивается как логический флаг.

First Instance = 
    COUNTROWS(
        FILTER(
            'Data',
            [ID] = EARLIER([ID]) &&
            [Product] = EARLIER([Product]) &&
            [Purchase Date] <= EARLIER([Purchase Date])
        )
    ) = 1
...