Страницы: Пред. 1 2
RSS
СУММЕСЛИМН в Power Query
 
Андрей VG, да, вот что пишет Formula Language Specification:
Цитата
Within M, table keys have no semantic meaning. However, it is common for external data sources, such as databases or OData feeds, to define keys over tables. Power Query uses key information to improve performance of advanced functionality, such as cross-source join operations
F1 творит чудеса
 
Добрый день,
подскажите пожалуйста язык М позволяет писать сложные формулы - аналог вложенным фукциям в excel или в нем все решается через внедрение дополнительных столбцов с расчетами?

и еще по "суммеслимн" выше приводили пример для суммирования в диапазоне - я не смог пока понять как в данном примере работает оператор "r"
не подскажите как можно в запросе настроить примерно вот такой вычисляемый столбец как в примере?
 
очень интересный вопрос, тоже хочется понимать/знать
 
Blood81,
Цитата
Blood81 написал:
язык М позволяет писать сложные формулы - аналог вложенным фукциям в excel
Весь код запроса М можно написать в одну строку, используя вложенные функции и вложенные выражения. Только это неудобно и не всегда оправдано, так как может вызывать многократное обращение к одним и тем же источникам данных (которое могло быть заменено расчетом одного выражения с последующим обращением к готовому результату).
Создавать ли временный доп.столбец или пытаться все сделать другим способом - зависит от задачи. Иногда проще создать доп.столбец, посчитать на нем что-то и убить его, чем городить огород сложной функцией. Все зависит от задачи, структуры данных и т.п.

Цитата
Blood81 написал:
оператор "r"
в М нет оператора "r". Это была запись аргумента вложенной функции, которая возвращает true или false для отбора строк таблицы. В данном случае r означает строку таблицы, проверяемую на соответствие условию.
Код
#"Added Custom" = Table.AddColumn(
    Exp, 
    "Количество", 
    each List.Sum(
        Table.SelectRows(
            Exp, 
            (r)=>r[Актив]=[Актив] and r[Дата]<=[Дата])[Движение]
        ), 
    type number),

конкретно эта запись означает следующее:
  1. В таблицу Exp добавляем столбец, который называется "Количество".
  2. этот новый столбец в каждой строке рассчитывается при помощи некоей функции, получающей на вход текущую строку таблицы.
  3. при помощи оператора each мы передаем текущую строку в функцию. В дальнейшем к столбцам (полям) текущей строки можем обращаться просто по имени, не указывая идентификатор строки (например, просто [Актив] вместо Строка[Актив])
  4. Функция, которая считает значения для нового столбца, идет после слова each
  5. Эта функция для каждой текущей строки делает следующее:
    • берет заново таблицу Exp
    • при помощи еще одной функции отбирает строки в этой таблице. Эта функция должна возвращать true или false для каждой строки, получая на вход эту строку. Передаваемую для проверки строку обозначаем как r, чтобы отличать ее от той строки, которую мы используем на шаге 2. В итоге мы по значениям текущей (шаг 2) строки фильтруем исходную таблицу).
  • Дальше из получившейся отфильтрованной таблицы мы берем столбец [Движение]
  • И суммируем его при помощи List.Sum
  • Изменено: Максим Зеленский - 26.06.2017 13:15:31
    F1 творит чудеса
     
    Цитата
    Максим Зеленский написал:
    ®=>r[Актив]=[Актив]
    ага вот оно что! я никак не мог прочитать именно эту формулу а оказывается это просто условия (аналог формула массива в эксель, диапазон с условием).
    читается как строка "r" в столбце "Актив" = равно (условие для СУММЕСЛИ) "Актив"  таким образом функция  Table.SelectRows выдерет лишь строчки которые соответвуют указанному условию, а функция List.Sum просуммирует "отфильтрованную" таблицу по столбцу "Движение" внесет данную сумму как значение ячеек по новому добавленному столбцу.

    Максим Зеленский, Спасибо вам, ))) снова выручили )))
     
    Добрый вечер!
    Подскажите а как просто подсчитать сумму по столбцу по условию в Power Query. Есть таблица в ней необходимо создать новый столбец и по двум условиям просуммировать кол-во в каждой строчке.    
     
    Создайте отдельную тему
    Страницы: Пред. 1 2
    Наверх