У меня есть набор данных, содержащий данные прогноза продаж по годам за 5 лет.
В каждой строке указаны заказчик, тип позиции, год, количество и цена продажи.
Не все клиенты покупают все продукты за все годы.
Я хочу получить список всех продуктов, приобретенных за все указанные годы.
Пример сокращенной таблицы выглядит так:
Customer Product Year Qty Price
CustA ProdA 2020 50 100
CustA ProdA 2021 50 100
CustA ProdA 2022 50 100
CustA ProdB 2020 50 100
CustA ProdB 2021 50 100
CustA ProdC 2021 50 100
CustA ProdC 2022 50 100
CustA ProdD 2020 50 100
CustA ProdD 2021 50 100
CustA ProdD 2022 50 100
CustB ProdA 2021 50 100
CustB ProdA 2022 50 100
CustB ProdC 2020 50 100
CustB ProdC 2021 50 100
CustB ProdC 2022 50 100
CustB ProdD 2020 50 100
CustB ProdD 2021 0 100
CustB ProdD 2022 50 100
И транспонировано, выглядит так:
Customer Product 2020 2021 2022
CustA ProdA 50 50 50
CustA ProdB 50 50
CustA ProdC 50 50
CustA ProdD 50 50 50
CustB ProdA 50 50
CustB ProdC 50 50 50
CustB ProdD 50 0 50
Итак, для этого примера я бы хотел выполнить расчеты или указать строки, в которых есть продажи за все три года. Я пытался использовать следующую формулу, которую я бы сравнил с максимальным количеством лет в наборе, чтобы пометить строку как действительную или нет, но это убивает Excel. В исходной таблице всего 32 000 строк.
=CALCULATE(
DISTINCTCOUNT(DataTable[Year]),
filter(DataTable, DataTable[Product] = EARLIER(DataTable[Product])),
filter(DataTable, DataTable[Customer] = EARLIER(DataTable[Customer])),
filter(DataTable, DataTable[Qty] > 0)
)
Есть ли лучший подход, который я мог бы использовать для этого?