Страницы: 1
RSS
Функция CONTAINS в DAX на несколько условий в модели данных POWER PIVOT
 
Добрый день,
подскажите, пожалуйста с формулой с модели данных POWER PIVOT
На текущий момент она выглядит:

= Var groupFilter = CALCULATETABLE('Запрос7'; ALLEXCEPT('Запрос7'; 'Запрос7'[doc_id]);'Запрос7'[Decision for count])
Var nzk_summo = CALCULATE(SUM('Запрос7'[real])/COUNTA('Запрос7'[ZKZ]); groupFilter)
Var pnk_summo = CALCULATE(SUM('Запрос7'[Сумма ПНК без НЗК])/COUNTA('Запрос7'[ZKZ]); groupFilter)
var ZKZ_summo = CALCULATE(SUM('Запрос7'[Сумма ЗКЗ])/power(COUNTA('Запрос7'[ZKZ]);2); groupFilter)
Var groupFilter2 = CALCULATE(contains('Запрос7'; 'Запрос7'[Imya];"НЗк");groupFilter)
Return SWITCH(groupFilter2; TRUE(); ZKZ_summo - nzk_summo;FALSE(); pnk_summo)


У меня есть столбец 'Запрос7'[Imya] со значениями в ячейках - пусто, НЗк, Пнк. Может быть только одно значение в ячейке, какое-то из трех
Столкнулся с тем, что в выделенной колонке мне нужно не просто выяснить есть ли словосочетание "НЗк" в массиве, а сделать в таком ключе:
1. Проверить встречаются ли словосочетания "НЗк" и "ПНк" в массиве, в категории groupFilter. Если встречаются оба значения, то допустим пусть присваивает значение groupFilter2=3
2. Если в массиве ячеек встречается только значение Пнк, то groupFilter2=2
3. Если в массиве ячеек встречается только значение Нзк, то groupFilter2=1
4. Если в массиве ячеек везде ПУСТО, то groupFilter2=0

Таким образом в конце на основании значения groupFilter2 уже смогу вывести необходимое условие.
 
Через
Код
FILTER( VALUES( 'Запрос7'[Imya] ); 'Запрос7'[Imya] <> BLANK() )
убираете дубликаты и пустоты, потом считаете количество строк в получившейся таблице, если их 2 то = 3, если 0, то 0, если одна то сравниваете на равенство нужных двух значений и выбираете =1 или =2.
Примерно так.
Вот горшок пустой, он предмет простой...
 
В одном массиве данных может быть несколько ПНК и одна НЗк, или наоборот....Может быть несколько ПНк и ни одной НЗК
Наверное, тогда не подойдет такой вариант, да? Я просто не очень понял как построить формулу по Вашему варианту  
 
Уважаемый Gerzzog, я не могу на форуме открыть все тайны DAX не имея даже примера под рукой. Тем более что все тайны мне не ведомы. Так что не обессудьте, какой вопрос - такой ответ.
Вот горшок пустой, он предмет простой...
 
Прикладываю файл. Это не модель данных, но я перенес общий вид таблицы. По понятным причинам не могу выложить в исходнике. Заранее спасибо за помощь
Изменено: Gerzzog - 27.04.2021 16:40:48
 
Gerzzog,
ну если в excel делать. то подправить функцию вот так:
Код
mera:=VAR _nzk =ROW("col";  "НЗк" )
VAR _pnk = ROW("col";  "ПНк" )
VAR _double =    UNION ( _nzk; _pnk )
VAR _values =
    VALUES ( 'Запрос7'[Imya] )
RETURN
    SWITCH (
        TRUE ();
        COUNTROWS ( INTERSECT ( _values; _double ) ) = 2; 3;
        COUNTROWS ( INTERSECT ( _values; _pnk ) ) = 1; 2;
        COUNTROWS ( INTERSECT ( _values; _nzk ) ) = 1; 1;
        0
    )
Изменено: StepanWolkoff - 27.04.2021 16:55:11
 
Цитата
Gerzzog написал:
Прикладываю файл.
Позже увидел ваш файл. Ну какой пример, такая и помощь. См.вложение
 
Спасибо, буду пробовать!

Ввожу формулу меры и через несколько секунд вылетает файл....Если открываю Ваш пример, то при открытии модели данных тоже вылетает файл.
Не подскажете, на каком этапе может быть проблема?
Изменено: Gerzzog - 27.04.2021 17:28:57
 
Цитата
Gerzzog написал:
Не подскажете, на каком этапе может быть проблема?
Какая версия Excel? Какой массив данных?
 
Excel 2016, массив данных 200 000 строк
 
Решил задачу, немного её видоизменив. Решение мне не нравится, чисто технически, в отличии от решения StepanWolkoff, но поскольку более изящное решение у меня не работает, пользуюсь следующим кодом:
Страницы: 1
Наверх