Страницы: 1 2 След.
RSS
Нужен аналог функции СчетЕсли в Power Query
 
Здравствуйте, я новичок в Power Query, помогите решить простую задачку.

Задача: через надстройку Power Query Добавить Столбцы с суммами количества  
определенных значений в каждой строке.
По факту, нужен аналог функции СЧЕТЕСЛИ в Power Query
Прилагаю пример и скриншот примера что было - что нужно.

Заранее спасибо.
Также буду благодарен, если у кого-то есть Документация по функциям Power Query на русском языке (с английским туговато)...


 
Доброе время суток
Цитата
varikvn написал:
нужен аналог функции СЧЕТЕСЛИ в Power Query
Код
newCount = Table.AddColumn(Source, "NEW", each List.Count(List.Select(Record.FieldValues(_), each _ = "NEW")))

Успехов.
P. S. Советую не рассуждать при описании и решении задачи в терминах формул рабочего листа Excel - легче будет изучать и понимать Power Query.
 
Всем привет!
Не стал создавать новую тему, вопрос. Что бы обратиться к столбцу нужно в List.Select прописать его, столбец, в принципе как я и сделал, но выдает ошибку, код:
Код
Table.AddColumn(Источник, "NEW", each List.Count(List.Select({[MIS]},Record.FieldValues(_), each _ <>"")))
Да и ещё вопрос по теме, возможно ли указать два столбца и два устовия

В принципе решение нашёл, воспользоваться группировкой, но в данном случае придётся перепрыгивать с запроса на запрос, в одну строчку решение было бы проще
Изменено: adamm - 11.01.2020 16:34:18
 
Цитата
adamm написал:
Что бы обратиться к столбцу нужно в List.Select прописать его, столбец
И что, это автоматом разрешает использовать в List.Select три аргумента, вместо допустимых двух?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, как бы я и спрашиваю, возможно ли это?
 
Цитата
adamm написал:
возможно ли это?
Возможно что? Вам уже Алексей делал замечание о том, чтобы вы не излагали задачу в рамках формул Excel. Нет этого в Power Query. СчётЕсли тоже нет. Есть другие подходы к решению.
Но! Для этого задачу нужно сформулировать и с учётом 555 сообщений уже усвоить, что пример что есть, что должно быть - обязателен!
 
Цитата
adamm написал:
как бы я и спрашиваю, возможно ли это?
как бы в сообщении Вашем не было такого вопроса  :(  Только описания проделанного и вопрос про два аргумента(куда их пихать, откуда брать и что должно быть непонятно).
И ту строку, что Вы привели, так же неясно куда пихать и что от неё хотите. И что вообще она значит. Чтобы указать конкретный столбец надо лишь подменить один аргумент:
Код
List.Count(List.Select(Source[MIS], each _ <>"")))
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, да это и нужно было, спасибо
 
я бы не советовал всё же так делать, хоть это и правильно синтаксически и по смыслу. Рассчитывать в каждой строке одно и то же число, читая таблицу заново - бэд прэктис.
В таких случаях имеет большой смысл подредактировать строку так:
Код
=Table.AddColumn(Источник, "NEW", let mis = List.Count(List.Select(Источник[MIS] , each _ <>"")) in each mis)

хотя такое написание тоже имеет мало смысла и проще/правильнее вытащить расчет количества значений в отдельный шаг. Хотя велика вероятность, что я вообще не понял, чего хочет автор
F1 творит чудеса
 
Коллеги, доброго времени суток!
Продолжая ветку про СЧЕТЕСЛИМН в PowerQuery, вопрос:
есть КолонкаДляВПР, в которой хранятся текстовые значения.
Хочу добавить столбец, в котором будет выводить количество вхождений значения из столбца [КолонкаДляВПР] выше, включая текущую строку.

Не понимаю от слова совсем как это сделать...
Изменено: nikotinus - 19.02.2020 10:55:50
 
Цитата
nikotinus написал:
Продолжая ветку про суммеслимн
а ветка про
Цитата
varikvn написал:
СЧЕТЕСЛИ в Power Query
так что лучше бы в новую тему это все, а не тут.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Как-то так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Индекс1", 0, 1),
    #"Grouped Rows" = Table.Group(#"Added Index", {"КолонкаДляВПР"}, {{"таб", each Table.AddIndexColumn(_, "Индекс", 1, 1), type table}}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Grouped Rows", "таб", {"Столбец1", "Индекс1", "Индекс"}, {"Столбец1", "Индекс1", "Индекс"}),
    #"Sorted Rows" = Table.Sort(#"Expanded {0}",{{"Индекс1", Order.Ascending}}),
    #"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Индекс1"})
in
    #"Removed Columns"
Вот горшок пустой, он предмет простой...
 
Дмитрий(The_Prist) Щербаков, спасибо, поправил свой вопрос - конечно, про СЧЕТЕСЛИМН был вопрос

PooHkrd, спасибо, работает. Пошел дальше разбираться как теперь их конкатенировать, но при этом добавить ведущий ноль к счетчику < 10
 
Цитата
nikotinus написал:
ведущий ноль к счетчику < 10
Это тоже не сложно
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Индекс1", 0, 1),
    #"Grouped Rows" = Table.Group(#"Added Index", {"КолонкаДляВПР"}, {{"таб", each Table.AddIndexColumn(_, "Индекс", 1, 1), type table}}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Grouped Rows", "таб", {"Столбец1", "Индекс1", "Индекс"}, {"Столбец1", "Индекс1", "Индекс"}),
    #"Sorted Rows" = Table.Sort(#"Expanded {0}",{{"Индекс1", Order.Ascending}}),
    #"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Индекс1"}),
    #"Added Prefix" = Table.TransformColumns(#"Removed Columns", {{"Индекс", each Text.PadStart( Text.From(_, "ru-RU"), 2, "0" ), type text}})
in
    #"Added Prefix"
Вот горшок пустой, он предмет простой...
 
Всем привет!
В продолжении темы. Ни как не пойму почему в данном коде считает значения:
Код
= Table.Group(Источник, {"Объект", "Source.Name","Column1","Column2"}, 
{"Номер сварного шва", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва"]<>null))}
)
А когда добавляю ещё один столбец, выдает ошибку:
Код
= Table.Group(Источник, {"Объект", "Source.Name","Column1","Column2"}, 
{"Номер сварного шва", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва"]<>null))},
{"Номер сварного шва.1", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва.1"]<>null))}
)
Ведь по сути я добавил ещё одно условие, для подсчета ещё одного столбца?
 
adamm, по моему вы скобочки забыли
= Table.Group(Источник, {"Объект", "Source.Name","Column1","Column2"},
{ {"Номер сварного шва", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва"]<>null))},
{"Номер сварного шва.1", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва.1"]<>null))} }
)
Вот горшок пустой, он предмет простой...
 
PooHkrd,а точно) спасибо!
 
Всем привет!
Опять возвращаюсь к данной теме, вопрос однотипный.
Хочу сосчитать значения, при условии даты, только за последние 30 дней, группировка выдает список с ошибками, что я не так делаю?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Append1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Column1", type text}, {"Атрибут", type datetime}, {"Значение", Int64.Type}}),
#"Сгруппированные строки" = Table.Group(#"Измененный тип", {"Column1", "Атрибут"}, 
{{"Количество", each {[Атрибут]>DateTime.Date(Date.AddDays(DateTime.LocalNow(),-30)),List.Sum([Значение]), type number}}})
in


   #"Сгруппированные строки"
 
adamm, например, так
Может, можно и пятый аргумент в Table.Group использовать
Код
// Append1
let
    Источник = Excel.CurrentWorkbook(){[Name="Append1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Column1", type text}, {"Атрибут", type date}, {"Значение", Int64.Type}}),
    #"Сгруппированные строки" = Table.Group(#"Измененный тип", {"Column1"}, {"Количество", each 
   List.Count(List.Select(_[Атрибут], each _>DateTime.Date(Date.AddDays(DateTime.LocalNow(),-30)) and _<=DateTime.Date(DateTime.LocalNow())))})
in
    #"Сгруппированные строки"
 
Михаил Л,спасибо буду разбираться!
 
Добрый день!
Очень нужна помощь: начальная стадия погружения в Qwery)
Вопрос по индексам как к числовым, так и к текстовым значениям, а также как прописать условия. Пример в Excel.
Заранее благодарю всех отзывчивых участников форума!
 
В столбце Ж у вас очень странное условие.
И как-то неочевидна связь вопроса с темой.
Изменено: Xel - 16.04.2021 17:30:44
 
Цитата
Xel написал:
В столбце Ж у вас очень странное условие.И как-то неочевидна связь вопроса с темой.
Да, неочевидна) но цель общая, поэтому не стала делить
Жаль, что по делу, хотя бы частично, так никто и не ответил).

Смотрела историю: в кодах содержится ссылка на лист, а у меня только подключение к источнику, может из-за этого не получается их применить?
Изменено: Новичок327 Новичок327 - 19.04.2021 09:35:03
 
Цитата
Новичок327 Новичок327 написал:
у меня только подключение к источнику
в вашем файле подключения отсутствуют
Цитата
Новичок327 Новичок327 написал:
Жаль, что по делу, хотя бы частично, так никто и не ответил
если вы покажете как выглядит источник и ожидаемый результат будет несколько проще, может и связь с текущей темой всплывет
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, Михаил, может лучше будет, если ТС всё же соизволит ознакомиться с правилами и их соблюдёт? Или ему придётся ждать того, кто мыслит ровно в том же ключе и к тому же хорошо знает Power Query :)
 
Уважаемые эксперты, добрый день!

Нужна ваша помощь для новичка в pq, необходимо в power query на запросах языка M, сделать аналогичную проверку (подсчет) как в примере в приложенном файле по СНИЛС, которая сейчас реализована через функции СЧЁТЕСЛИ и СЧЁТЕСЛИМН.

Заранее благодарен за ваши идеи!
 
serj-kor,
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  data_rec = [ СНИЛС_мужа = data[СНИЛС_мужа], СНИЛС_жены = data[СНИЛС_жены] ],
  checks = {
    { "1", "СНИЛС_мужа", "СНИЛС_жены" },
    { "2", "СНИЛС_жены", "СНИЛС_мужа" },
    { "3", "СНИЛС_жены", "СНИЛС_жены" },
    { "4", "СНИЛС_мужа", "СНИЛС_мужа" }
  },
  addChecks = List.Accumulate (
    checks,
    data,
    ( s, c ) =>
      Table.AddColumn (
        s,
        "Проверка " & c{0},
        ( r ) => List.Count ( List.Select ( Record.Field ( data_rec, c{1} ), ( x ) => x = Record.Field ( r, c{2} ) ) ),
        Int64.Type
      )
  )
in
  addChecks
 
surkenny, это просто великолепный код... мне потребуется время его осознать.
Спасибо!
 

Добрый день!

Подскажите пожалуйста как реализовать в PQ данный вариант формулы СЧЕТЕСЛИМН (пример в приложении).

В желтых столбцах формулой получен желаемый результат, серые столбцы - исходный вариант. Формула оставлена для наглядности.

 
Александр Гаврилов,
1) Где Ваши попытки? Нам что исправлять?
2) Нет в PQ аналога этой функции. Хотите решение (а не подсказку) - обращайтесь в раздел "Работа".
3) PQ - ETL-инструмент, зачем на нем делать аналитику вообще? Почему не реализовать это в PP на DAX?

На небольшом объеме Вам достаточно join и фильтрации приджойненной таблицы по Вашим условиям. Я не вижу тут проблемы сделать это кнопками.
А вот сделать это максимально шустро - посложнее.
Но опять же п.1 :) Вы хотите нас попросить поработать за Вас? :)
Страницы: 1 2 След.
Наверх