Size: a a a

Power BI Group RU

2020 October 13

MZ

Maxim Zelensky in Power BI Group RU
Zurab
лично я, без понимания что контекст строки не фильтрует, посчитал бы что SUMX  в 'Table' благодаря контексту строки вернул бы таблицу в одну строку. Т.е. для меня ключевое что контекст строки не фильтрует. Я прям получаю удовольствие от такого приобретенного знания))
а, да, просто вы написали "понимание, что контекст фильтра не ограничивает а итерирует" и тут я завис. :)
А в целом да, контексты строки и перенос контекста - первая ступенька в learning curve в DAX, после которой глаза открываются пошире :)
далее еще открытие, что любой фильтр в CALCULATE - это таблица :) и еще про расширенную таблицу тоже будет открытие :)
источник

SS

Sergei Sergeev in Power BI Group RU
Sergei Sergeev
Максим, переписал для себя, с мерой. Все вроде работает. Сейчас проверб с рабочей версией. Спасибо!
Нет, не работает. Вероятно из-за того, что я подставляю меру которая считает продажи за последние 90 дней.
источник

Z

Zurab in Power BI Group RU
Maxim Zelensky
а, да, просто вы написали "понимание, что контекст фильтра не ограничивает а итерирует" и тут я завис. :)
А в целом да, контексты строки и перенос контекста - первая ступенька в learning curve в DAX, после которой глаза открываются пошире :)
далее еще открытие, что любой фильтр в CALCULATE - это таблица :) и еще про расширенную таблицу тоже будет открытие :)
прошу прощения, опечатался, я имел ввиду контекст строки, в исходном сообщении исправил.
источник

MZ

Maxim Zelensky in Power BI Group RU
Sergei Sergeev
Нет, не работает. Вероятно из-за того, что я подставляю меру которая считает продажи за последние 90 дней.
Ну надо смотреть, что за мера. Может, именно ее надо модифицировать с allexcept. Или у вас там filter(sales,
источник

Z

Zurab in Power BI Group RU
Maxim Zelensky
Вот в случае с MAX в Power BI всё нагляднее.
Синтаксис у нее такой:
MAX ( <ColumnNameOrScalar1> [, <Scalar2>] )
Это означает, что если аргумент 1, то это должна быть ссылка на столбец:
MAX(Table[Column1]) = максимальное значение столбца Table[Column1]
А если аргументов 2, это могут быть 2 числа, 2 текста, 2 даты - в общем, 2 скалярных значения.
MAX("A","B")="B"
Но если мы напишем в вычисляемом столбце MAX(Table[Column1], Table[Column2]), то функция будет ожидать скалярные значения, и здесь они будут получены как значения Column1 и Column2 в текущей строке.

Правда, запутывает? :):):)
интересное свойство, запомню.
источник

SS

Sergei Sergeev in Power BI Group RU
Maxim Zelensky
Ну надо смотреть, что за мера. Может, именно ее надо модифицировать с allexcept. Или у вас там filter(sales,
Выручка факт руб 90d =
VAR _max_date =
   MAX ( 'calendar'[_Date] )
VAR _calc_date =
   MIN ( _max_date, [__yesterday_ekb] )
VAR _start_date = _calc_date - 89
VAR _result =
   CALCULATE (
       [_Выручка факт руб],
       FILTER (
           ALL ( 'calendar'[_Date] ),
           _start_date <= 'calendar'[_Date]
               && 'calendar'[_Date] <= _calc_date
       )
   )
RETURN
   _result
источник

MZ

Maxim Zelensky in Power BI Group RU
Sergei Sergeev
Выручка факт руб 90d =
VAR _max_date =
   MAX ( 'calendar'[_Date] )
VAR _calc_date =
   MIN ( _max_date, [__yesterday_ekb] )
VAR _start_date = _calc_date - 89
VAR _result =
   CALCULATE (
       [_Выручка факт руб],
       FILTER (
           ALL ( 'calendar'[_Date] ),
           _start_date <= 'calendar'[_Date]
               && 'calendar'[_Date] <= _calc_date
       )
   )
RETURN
   _result
а вот эта: [_Выручка факт руб] ?
источник

SS

Sergei Sergeev in Power BI Group RU
Maxim Zelensky
а вот эта: [_Выручка факт руб] ?
_Выручка факт руб = SUM('Продажи'[Сумма])
источник

SS

Sergei Sergeev in Power BI Group RU
Sergei Sergeev
_Выручка факт руб = SUM('Продажи'[Сумма])
Когда я предварительно в столбце посчитал продажи за 90 дней - все работает. Но как только появляется мера - все перестает работать. Делаю вывод что дело в ней. Ну и во мне, конечно )
источник

Z

Zurab in Power BI Group RU
Maxim Zelensky
Вот в случае с MAX в Power BI всё нагляднее.
Синтаксис у нее такой:
MAX ( <ColumnNameOrScalar1> [, <Scalar2>] )
Это означает, что если аргумент 1, то это должна быть ссылка на столбец:
MAX(Table[Column1]) = максимальное значение столбца Table[Column1]
А если аргументов 2, это могут быть 2 числа, 2 текста, 2 даты - в общем, 2 скалярных значения.
MAX("A","B")="B"
Но если мы напишем в вычисляемом столбце MAX(Table[Column1], Table[Column2]), то функция будет ожидать скалярные значения, и здесь они будут получены как значения Column1 и Column2 в текущей строке.

Правда, запутывает? :):):)
а в PP выдает ошибку, значит изначально логика была ожидаемая, но в PBI потом решили вместо ошибки добавить скил)) интересно
источник

MZ

Maxim Zelensky in Power BI Group RU
Zurab
а в PP выдает ошибку, значит изначально логика была ожидаемая, но в PBI потом решили вместо ошибки добавить скил)) интересно
да, я специально пометил, что в Power BI так. в PP не работает еще такой синтаксис
источник

MZ

Maxim Zelensky in Power BI Group RU
Sergei Sergeev
Когда я предварительно в столбце посчитал продажи за 90 дней - все работает. Но как только появляется мера - все перестает работать. Делаю вывод что дело в ней. Ну и во мне, конечно )
вы в какой таблице в итоге создаете столбец-то?
источник

SS

Sergei Sergeev in Power BI Group RU
Maxim Zelensky
вы в какой таблице в итоге создаете столбец-то?
В клиентах, т.к. им надо присваивать ABC
источник

MZ

Maxim Zelensky in Power BI Group RU
Sergei Sergeev
В клиентах, т.к. им надо присваивать ABC
можете сделать в них столбец по типу моего - с одной переменной и с SUMX, чтобы проверить, что оно считает. Можно вместо SUMX использовать
RETURN 
COUNTROWS ( FILTER ( _SalesByBanner, NOT ( ISBLANK ( [@SalesByBanner] ) ) ) )
чтобы посчитать количество непустых строк там.

Может, проблема вообще не в этой части
источник

A

AC@ in Power BI Group RU
Zurab
я читаю на русском книгу итальянцев, возможно если бы я в первый раз читал то опять бы не понял, а по второму разу, разбор в четвертой главе контекстов как то лучше прочувствовался, и пришло понимание, что контекст строки не ограничивает а итерирует))Там так и написано, в общем то, но как то с первого раза я лично  не усвоил
А что за книга? В электронном виде? Можете поделиться?
источник

SS

Sergei Sergeev in Power BI Group RU
Maxim Zelensky
можете сделать в них столбец по типу моего - с одной переменной и с SUMX, чтобы проверить, что оно считает. Можно вместо SUMX использовать
RETURN 
COUNTROWS ( FILTER ( _SalesByBanner, NOT ( ISBLANK ( [@SalesByBanner] ) ) ) )
чтобы посчитать количество непустых строк там.

Может, проблема вообще не в этой части
COUNTROWS = 179 (и это правильно, значения есть именно у этого количества головных)
SUMX(         SalesByProduct         , [@ProdSales]     ) - тоже правильно. Это сумма всех продаж по головным за 90 дней.

И вы правы, где-то в другом месте проблема. ))
источник

Z

Zurab in Power BI Group RU
AC@
А что за книга? В электронном виде? Можете поделиться?
Извините, но я бы не стал этой книгой делиться. Я очень сильно намучился переводить с английского, и не хотел бы переводчика и издательство лишать честно заработанных денег, и хотел бы чтобы были ещё переводы и по power query например.
источник

СБ

Станислав Берсиров... in Power BI Group RU
Где ее можно купить тогда подскажите людям)
источник

Z

Zurab in Power BI Group RU
Zurab
Перефразирую изначальное сообщение в треде:
Для книг по анализу данных и DAX реактивированы их первоначальные промокоды:
PowerBI_Tlg_2020 и
DAX_PowerBI_Tlg_2020 соответственно.
В этом треде можно получить и промокод и ссылку на книги найти под первым сообщением
источник

SS

Sergei Sergeev in Power BI Group RU
Maxim Zelensky
можете сделать в них столбец по типу моего - с одной переменной и с SUMX, чтобы проверить, что оно считает. Можно вместо SUMX использовать
RETURN 
COUNTROWS ( FILTER ( _SalesByBanner, NOT ( ISBLANK ( [@SalesByBanner] ) ) ) )
чтобы посчитать количество непустых строк там.

Может, проблема вообще не в этой части
Максим, спасибо! В итоге проблема была в другом месте, теперь все работает как надо. Ваше решение с summzrize было правильным.
источник