Страницы: 1
RSS
Power Query - выбрать наименьшее значение
 
Добрый день.
Вроде простая функция, но не могу найти. Как Power Query сделать столбец, чтобы выбирал наименьшее значение из указанных столбцов? А потом еще рядом столбец, который возвращал бы название столбца, где находится наименьшее значение.

Спасибо.
 
Минимум = List.Min({[Column1], [Column2], [Column3]})
Название столбца = {"Column1", "Column2", "Column3"}{List.PositionOf({[Column1], [Column2], [Column3]}, [Минимум])}
F1 творит чудеса
 
Максим Зеленский, благодарю!
Вот только первая формула работает, а вторая - нет.
Файл приложил
 
Разобрался.
Вес работает - надо было просто пользовательский столбец, куда подставляется минимальное значение назвать "Минимум".
Большое спасибо!!
Не подскажите - где написано про эти формулы? Много где искал, но ничего подобного не нашел.
 
Цитата
dennn написал:
где написано про эти формулы?
Тут:
https://msdn.microsoft.com/en-us/library/mt211003.aspx
и тут:
https://msdn.microsoft.com/en-us/library/mt779182.aspx
F1 творит чудеса
 
Максим Зеленский, Понял.
А не подскажите еще - как добавить, чтобы искал наименьшее значение, кроме 0?
 
Минимум кроме 0 = List.Min(List.Select({[Column1], [Column2], [Column3]}, each _ <>0))
F1 творит чудеса
 
Максим Зеленский, спасибо тогда не написал. Исправляюсь - спасибо!

А как в группировке прописать, чтобы выбиралось больше 0.

Пример кода:
Код
   #"Сгруппированные строки" = Table.Group(Источник, {"ID"}, {{"МинЦена", each Table.SelectRows(_, let latest = List.Min([Закуп]) in each [Закуп] = latest), type table}}),

Файл с готовым результатом приложил.
 
Решил сам. Вот так должно:
#"Сгруппированные строки" = Table.Group(Источник, {"ID"}, {{"МинЦена", each Table.SelectRows(_, let latest = List.Min(List.Select([Закуп], each _ <>0)) in each [Закуп] = latest), type table}}),
 
Максим Зеленский,
Цитата
Максим Зеленский написал:
Минимум = List.Min({[Column1], [Column2], [Column3]})
Подскажите, у меня при таком подходе выдает ошибку:
Expression.Error: Неизвестный идентификатор. Использовалось ли условное обозначение [field] для _[field] вне выражения "each"?
В чем может быть проблема?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"дата", type datetime}, {"продажи", Int64.Type}}),
    #"minimum" = List.Min({[#"продажи"]})
in
    #"minimum"
 
не List.Min({[#"продажи"]}), а List.Min({[продажи]})
 
mechanix 85, пробовал и так и так, ошибка одна и та же
 
Цитата
Владимир Колотиев написал:
В чем может быть проблема?
в том, что непонятно, какой результат нужен. Максим показывал результат для вычисления минимума из строк на основании трех столбцов. Для каждой строки отдельно. В этом случае надо показанный код использовать как формулу пользовательского столбца. А Вам что надо? Одно значение минимума из всего столбца? Тогда так должно быть:
Код
List.Min(#"Измененный тип"[продажи])
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Цитата
Дмитрий(The_Prist) Щербаков написал:
А Вам что надо? Одно значение минимума из всего столбца?
Ну если глобально, то у меня есть папка, в которой 12 файлов по продажам по месяцам(таких папок несколько, за последние несколько лет). В каждом файле важны два столбца: дата, продажи. Я с помощью PQ редактирую пример файла, затем соединяю это всё в одну кучу. Но бывает такое, что в файлах не все данные прогружены (по разным причинам), поэтому мне нужно найти максимальноt значение даты и сравнить его с последним днем месяца. Если совпадений не найдено, то данный файл не должен попадать в общую кучу. Надеюсь, объяснил нормально.
 
Добрый день, подскажите как мне найти наименьшее число/дату в столбце по наименованию
пример 1 столбец  10 наименований (не уникальные)
2й столбец - даты (добавляются даты каждую неделю путем добавления запроса)
как найти последнюю дату для каждого уникального наименования?
написано возможно коряво, но надеюсь смысл понятен
заранее благодарю
 
Антон Новицкий, группировка с выбором строки по минимальной дате:
Код
let
  src    = Excel.CurrentWorkbook(){[ Name = "dataTable" ]}[Content],
  typed  = Table.TransformColumnTypes ( src, { { "Date", type date } } ),
  group  = Table.Group ( typed, { "Name" }, { { "minDate", each Table.Min ( [[Date]], "Date" ) } } ),
  expand = Table.ExpandRecordColumn ( group, "minDate", { "Date" }, { "minDate" } )
in
  expand

Upd. Можно, конечно, кнопочками List.Min натыкать, но Table.Min универсальнее, если нужно будет, к примеру, цену на минимальную дату выводить:

Код
let
  src    = Excel.CurrentWorkbook(){[ Name = "dataTable" ]}[Content],
  typed  = Table.TransformColumnTypes ( src, { { "Date", type date }, { "Price", type number } } ),
  group  = Table.Group ( typed, { "Name" }, { { "minDate", each Table.Min ( [[Date], [Price]], "Date" ) } } ),
  expand = Table.ExpandRecordColumn ( group, "minDate", { "Date", "Price" }, { "minDate", "Price" } )
in
  expand
Изменено: surkenny - 05.10.2021 08:27:39
 
Добрый день,
Цитата
написал:
Минимум = List.Min({[Column1], [Column2], [Column3]})
Название столбца = {"Column1", "Column2", "Column3"}{List.PositionOf({[Column1], [Column2], [Column3]}, [Минимум])}
подскажите, если количество столбцов непостоянно, как в формуле прописать:

1. Минимальное значение из всех столбцов, кроме первого;
2. Минимальное значение из всех столбцов, кроме тех, в названии которых присутствует "..."?
Изменено: kush.near - 25.08.2022 16:22:43
 
kush.near,
Record.FieldValues ( Record.SelectFields ( r,  list ) )
Где list вы определяете по вашим условиям из списка Table.ColumnNames
 
Цитата
написал:
Минимум кроме 0 = List.Min(List.Select({[Column1], [Column2], [Column3]}, each _ <>0)ПЕ
Подскажите пожалуйста дурочку, как вместо 0 подставить столбец, что бы минимальное значение бралось из столбца, при добавлении столбца выдает ошибку  
Изменено: Nikk Byz - 07.02.2023 21:15:13
 
Nikk Byz,

Цитата
написал:
как вместо 0 подставить столбец, что бы минимальное значение бралось из столбца
Ноль здесь фильтрует значения в столбцах (полях текущей строки), а не устанавливает минимальное значение.
Если надо вместо ноля подставить значение из другого столбца, то
Код
let 
  filter_value = [Column4],
  min_value = List.Min(List.Select({[Column1], [Column2], [Column3]}, each _ <>  filter_value))
in min_value
Изменено: Alien Sphinx - 08.02.2023 06:20:09
Пришелец-прораб.
Страницы: 1
Читают тему
Наверх