Создание меры для подсчета непустых ячеек в матрице - PullRequest
1 голос
/ 11 декабря 2019

У меня есть таблица данных о том, сколько пассажиров садятся в автобус и выходят из него. Он записывает, в какую секцию они вошли, а в какую вышли. Моя таблица выглядит следующим образом:

SectionIn  SectionOut  Pax
--------------------------
1          1           1
1          1           2
1          3           3
1          1           1
1          3           5
...etc...

С этими данными я создал матрицу с SectionIn в строках, SectionOut в столбцах и суммой Pax в качестве значения.

Example matrix (more in the file)

Сначала (и самое главное) мне нужно посчитать, сколько экземпляров у вас в матрице. То есть сколько ячеек в матрице имеют значение. В этом случае у меня 15 экземпляров (1 + 2 + 3 + 4 + 5 значений в верхнем треугольнике). В Excel это легко с формулой COUNT (проверьте файл, пожалуйста), но не динамически.

Затем мне нужно вычислить% от общего итога с фильтрами и без фильтров (я думаю, что у нас естьрассмотреть контекст оценки здесь). Это менее важно, потому что они зависят от магического подсчета выше.

Здесь вы можете найти образец базы данных с сводной таблицей и целью, которую я ищу. Я создал цель с помощью формул Excel, но мне это нужно в DAX, чтобы я мог динамически фильтровать сводную таблицу и получать результат в другой сводной таблице.

Пример теста: https://drive.google.com/file/d/1xtNdM7g8lWHvqF8UX4K3TP0uOp-fFIZ5/view?usp=sharing

Я нашелПроще использовать примеры в этом файле, чем объяснять словами, что мне нужно (надеюсь, вы тоже), но, если вы не понимаете, пожалуйста, не стесняйтесь спрашивать.

Большое спасибо заранее!

С уважением,

Энди

1 Ответ

1 голос
/ 12 декабря 2019

Вы можете создать сводную таблицу, в которой перечислены все комбинации SectionIn и SectionOut, а затем подсчитать количество строк в этой таблице. Это было бы так же, как ваша сводная таблица, но с двумя строками и выглядит так:

Summary table

Вот код DAX для этого:

CellCount =
COUNTROWS (
    SUMMARIZE (
        ALLSELECTED ( InOut ),
        InOut[SectionIn],
        InOut[SectionOut],
        "Passengers", SUM ( InOut[Pax] )
    )
)

(Примечание: вам даже не нужна строка "Passengers", SUM ( InOut[Pax] ), чтобы мера работала.)

Это действительно динамично, как показано здесь:

Final Analysis

...