Добрый день! Прошу помощи в решении очередной задачи. С помощью группировки сворачиваю строки, в каждой вложенной таблице-фрагменте может быть от одной до нескольких строк. Как по условию возвращать из таких таблиц-фрагментов только одну строку?
Реально такое в PQ сделать? С условиями немного знаком, но не сталкивался с их использованием в таблицах-фрагментах.
PooHkrd, при чем тут картинки? Это визуализация примера. Если вы имеете ввиду, что нужно "тело"... Excel-евский файл с исходными данными загрузить не могу - большой и имеющий конфиденциальные сведения((
тут на фиг никому не сдался. Нужен файл-пример, максимально полно отображающий структуру ваших данных с десятком-другим строк вымышленных значений. На которых возможно воспроизвести интересующую вас задачу. Если это так трудно, значит вот так вам нужно решение.
Не чувствуется. Сначала вас надо файл уговорить выложить, теперь ещё внятный пример вывода показать... Вариант - насколько хватило моих телепатических способностей.
Код
let
Source = Excel.CurrentWorkbook(){[Name="Вариант_6"]}[Content],
grouped = Table.Group(Source, {"ЧЕРТЕЖ"}, {{"Количество", each Table.RowCount(_), Int64.Type}, {"Первая папка", each [ПАПКА]{0}?, Text.Type}})
in
grouped
Андрей VG, телепатические способности, конечно, у вас... Мало что понятно непрофи, но почти то, что надо, спасибо!
Только нужно оставить столбец "Папка с листами" - если бы этого не требовалось, я бы не писал запрос в PQ)) Можно как-то внедрить ваш код в запрос примера?
jeka-irbis написал: Хоть и 35 действий, зато свое, логика понятна)
и двое суток возиться - лишь пример не делать В прочем, если собственное ковыряние на пользу себе любимому, то так и стоит делать. Только пример решения не забывайте выкладывать - форум всё же.
Ну почему же - дали понять, что мой пример непонятен, а пока я его пытался сделать "более внятным" - пришла идея, как сделать самому. За сутки (не двое ) справился - куда на работе торопиться-то)) Идея в том, чтобы ввести индексацию и количества строк в таблицах-фрагментах, чтобы нужные строки всегда становилась первыми, а потом при разворачивании удалить дубликаты. Наверняка, есть более изящный способ, но пока умею так...
Судя по тому, что выложенный пример был не понят - имеет ли смысл готовое решение?) Хотя - мне не жалко (запрос "не причесывался"):
let
Source = Excel.CurrentWorkbook(){[Name="ИсходныеДанные"]}[Content],
Group = Table.Group(Source, {"Изометричка", "КОМПЛЕКТ"}, {{"a", each [КОМПЛЕКТ]{0} & " (" & Text.Combine(List.Transform([#"Л."],Text.From),", ") &")"},{"b" , each List.Sum([Масса])}}),
Group1 = Table.Group(Group, {"Изометричка"}, {{"Исходный комплект", each [КОМПЛЕКТ]{0}},{"Ссылки на РД",each Text.Combine([a],"; ")},{"Масса Трубопровода", each List.Sum([b])},{"Модель копирования", each [КОМПЛЕКТ]{0}}})
in
Group1
Андрей Лящук, /в шоке/ Пока за гранью понимания, как... Хотя не идеально... Могут простакивать неправильные значения в "Модель копирования", строка 46. Нужна сортировка комплектов по количеству листов, чтобы комплект с бОльшим количеством шел первым, тогда в "Модель копирования" попадет нужное (как я понимаю, извлекается первое значение из списка)
С запросом в моем файле какая-то лажа вышла, сейчас перезалью:
Андрей Лящук,теперь, в случае равенства количества листов в комплектах в "Модель копирования" попадает не первый следуемый в склейке ссылок...
Судя по результату, в "Исходный комплект" в случае равенства листов попадает последний комплект, который и выводится в "Модель копирования": строки 2, 17, 27, 40-45, 65, 70, ...
Андрей Лящук, последний нюанс, в примере его нет, но выявлен в рабочем файле. Если несколько комплектов имеют максимальное число листов, то в значение "Исходный комплект" выводится значение комплекта, который идет последним. В файле добавил строку для демонстрации - результат выделен оранжевым.
Добрый день! Кто-нибудь может объяснить конструкцию Table.Max(_,each Text.FromBinary(#binary({[c],[d]}))) из #18 или помочь заменить ее на что-то другое, т.к. на рабочем файле выдает ошибку "Число находится вне диапазона байтового значения."? Не понимаю я суть "двоичного значения"( Можно как-то попроще, для масс, пожалуйста.