Countx, где предыдущая строка содержит указанное значение - PullRequest
0 голосов
/ 15 мая 2018

В PowerPivot у меня есть следующие настройки.

**column1**          **column2**    **column3 (count)**
wiliam              5460aeac1d0f1          2
Chicken             5460aeac1d0f1          2
faces               5460aeac1d0f9          2
massive turtle      5460aeac1d0f9          2
faces               5460aeac1d022          1
massive turtle      5460aeac1d027          1

Столбец 3 рассчитывается по формуле:

 =countx(filter

               ('table',EARLIER('table[Column2])='table[Column2])

        ,'table'[Column2])

Я хочу добавить 4-й столбец, который делает то же самое, НО также считает, если в ранее сопоставленной записи column2 также есть запись column1 массивной черепахи.

**column1**          **column2**    **column3 (count)** **column4 (count)**
wiliam              5460aeac1d0f1          2                 0
Chicken             5460aeac1d0f1          2                 0 
faces               5460aeac1d0f9          2                 1
massive turtle      5460aeac1d0f9          2                 1
faces               5460aeac1d022          1                 0
massive turtle      5460aeac1d027          1                 1

Я пробовал:

 =countx(filter('table',EARLIER('table[Column2])='table[Column2] && 
EARLIER('table[Column1])="massive turtle"),'table'[Column2])

Но это не учитывается для строк, у которых есть грани в column1, даже если они имеют соответствующие записи в column2, где column1 = 'массовая черепаха'.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 19 мая 2018


Ваша функция =countx(filter('table',EARLIER('table[Column2])='table[Column2] && EARLIER('table[Column1])="massive turtle"),'table'[Column2])

на первой итерации разделяет данные на::

    **column1**          **column2**    **column3 (count)** **column4 (count)**
faces               5460aeac1d0f9          2                 1
massive turtle      5460aeac1d0f9          2                 1

из-за значения второго столбца "5460aeac1d0f9", который один раз считает "массивную черепаху", но ранее примененный фильтр был "5460aeac1d0f9", поэтому вы получаете 1 для этих 2 строк из вашей функции подсчета.

поэтому я бы предложил что-то вроде:

=IF('table'[column1]="massive turtle",COUNTX(FILTER('table',EARLIER([column2])='table'[column2] && 'table'[column1]="massive turtle"),'table'[column2]),0)

Sample

Надеюсь, что помог

...