Вероятно, есть много способов сделать это, но вот довольно общее решение, которое я придумал:
FilteredList =
VAR ProductList = {5, 8}
VAR SummaryTable = SUMMARIZE(Transactions,
Transactions[OrderCode],
"Test",
COUNTROWS(INTERSECT(ProductList, VALUES(Transactions[Product])))
= COUNTROWS(ProductList))
RETURN SELECTCOLUMNS(FILTER(SummaryTable, [Test]), "OrderCode", Transactions[OrderCode])
Ключевым моментом здесь является то, что если набор продуктов для определенного кода заказа содержит как 5
, так и 8
, то пересечение VALUES(Transations[Product])
с набором {5,8}
точно соответствует этому набору и имеет счетчик 2
. Если он не имеет обоих, счет будет 1
или 0
и тест не пройден.