Как мне рассчитать, сколько различных / уникальных продуктов доступно в нескольких или во всех штатах США?

#powerbi #dax

Вопрос:

Я пытаюсь определить, сколько различных продуктов доступно в нескольких или во всех странах. (Я собираюсь сосредоточиться на 3 штатах США, Вашингтон, ОР и Калифорния)

Для примера у меня есть таблица, которая выглядит следующим образом:

Продукт Государство
Первый wa
Первый около
Первый около
Второй wa
Второй или
Второй около
Второй или
Третий или
Третий wa
Третий wa
Третий wa
Четвёртый wa
Четвёртый около
Четвёртый или
Четвёртый около

Из таблицы видно, что у меня есть 4 уникальных продукта и 3 уникальных состояния. Используя dax, я хочу найти уникальные продукты, доступные во всех 3 штатах.

На выходных данных должно быть указано 2 для второго и четвертого продукта, так как они имеют состояния покрытия WA, CA и ИЛИ.

Я пытался сделать это с помощью

 dax = CALCULATE(DISTINCTCOUNT(table1[product],filter(table1,[state] IN {"WA","CA","OR"})) 
 

но он возвращает максимальное количество различных продуктов для любого состояния.

Ответ №1:

Вы можете попробовать это

 Measure4 = 
VAR _0 =
    CONCATENATEX ( VALUES ( 'fct'[State] ), fct[State], ",", fct[State], DESC )
VAR _1 =
    COUNTX ( VALUES ( 'fct'[State] ), fct[State] )
VAR _2 =
    IF ( _1 > 2, _0, BLANK () )
RETURN
    _2
 

Решение

Edit

Вы можете создать следующую меру после приведенной выше, чтобы получить желаемый результат в карточке

 newMeasure =
COUNTX (
    FILTER (
        ADDCOLUMNS (
            SUMMARIZE (
                fct,
                fct[Product],
                "test", CONCATENATEX ( VALUES ( fct[State] ), fct[State], ",", fct[State], DESC )
            ),
            "test2", [Measure4]
        ),
        [test2] <> BLANK ()
    ),
    [test2]
)
 

Комментарии:

1. Похоже, все идет в правильном направлении, которое я ищу. Как бы я вывел только количество уникальных продуктов, доступных в WA, OR и CA? Например, Четвертым и вторым будут 2 уникальных продукта, соответствующих данной категории, поэтому вывод должен быть 2, если я покажу его на карте в Power BI.

2. Отредактировано по запросу

3. Спасибо! Кажется, это работает. Мне нужно будет «перепроектировать» это, чтобы понять, как все это работает, но я ценю помощь!

Ответ №2:

Вы можете попробовать использовать функцию INTERSECT (из ваших выборочных данных мера возвращает единицу, потому что в четвертом продукте нет «ИЛИ»).:

  dax = 
var __WA_product = CALCULATETABLE(VALUES(table1[product]), filter(table1,[state] = "WA"))
var __CA_product = CALCULATETABLE(VALUES(table1[product]), filter(table1,[state] = "CA"))
var __OR_product = CALCULATETABLE(VALUES(table1[product]), filter(table1,[state] = "OR"))
return
countrows( INTERSECT(INTERSECT(__WA_product, __CA_product ), __OR_product ))
 

Комментарии:

1. Я исправил свою таблицу примеров, чтобы четвертая часть включала «ИЛИ». Там была опечатка. Предоставленный вами dax не решает мою проблему. У меня все еще возникает та же проблема, когда он показывает 4, потому что второй содержит 4 значения, которые имеют WA, ИЛИ или CA.