Как рассчитать, когда строковое значение, отфильтрованное по A, равно строковому значению, отфильтрованному по B - PullRequest
1 голос
/ 03 июня 2019

В настоящее время я работаю в Power BI, и мне нужно написать код DAX для подсчета количества строковых значений, когда строка, отфильтрованная по A, также появляется, когда такая же строка фильтруется по B.

Я пробовал различные коды и все, что приходило мне в голову, но мне не хватает опыта в сравнении значений в DAX и в некотором роде на данный момент.

например.
enter image description here

При взгляде на таблицу мне нужно сосчитать (отчетливо), когда Джон, Адам, Джули из A также появляются в B, что в данном случае равно 3.

Я буду счастлив, если у кого-нибудь появятся какие-нибудь идеи или указания для меня!

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Предполагая, что ваша таблица называется «Данные»:

 Count of Common Names   =
    VAR A_Names =
        CALCULATETABLE ( VALUES ( Data[Name] ), Data[Filter] = "A" )
    VAR B_Names =
        CALCULATETABLE ( VALUES ( Data[Name] ), Data[Filter] = "B" )
    VAR Common_Names =
        INTERSECT ( A_Names, B_Names )
    RETURN
        COUNTROWS ( Common_Names )

Как это работает: Сначала мы создаем таблицу различных имен для фильтра А. Во-вторых, мы делаем то же самое для фильтра B. Наконец, мы находим, какие имена существуют в обеих таблицах, находя их пересечение.

Edit:

Чтобы рассчитать стоимость для общих имен, измените вышеуказанный показатель:

Cost of A given B =
VAR A_Names =
    CALCULATETABLE ( VALUES ( Data[Name] ), Data[Filter] = "A" )
VAR B_Names =
    CALCULATETABLE ( VALUES ( Data[Name] ), Data[Filter] = "B" )
VAR Common_Names =
    INTERSECT ( A_Names, B_Names )
RETURN
    CALCULATE ( SUM ( Data[Cost] ), Common_Names, Data[Filter] = "A" )
0 голосов
/ 03 июня 2019

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

Names with Multiple Distinct Values = 
COUNTROWS ( 
    FILTER ( 
        SUMMARIZECOLUMNS ( 
            MyTable[Name], 
            "Distinct Values", 
            DISTINCTCOUNT ( MyTable[Values] )
        ),
        [Distinct Values] > 1
    )
)
...