Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
PQ. Разделить 2 столбца по строкам
 
Добрый день.Столкнулся с такой проблемой.

Собираю данные из ячеек через сцепку. Где есть 2 столбика, в одном собираются магазины, а во втором собирается количество. Речь идет о перемещении товара, где каждое разделение точкой с запятой и обозначает адресацию и количество. Данные заходят параллельно.

Для формирование финального результата необходимо раскрыть данные параллельно по каждому входу разделителя, и вот как бы не беда, если бы не нужно было раскрывать сразу 2 столбца параллельно.

Возможно ктото подскажет как это сделать.
Для наглядности представляю эксель (вкл. pq) и фотку.
 
Доброе время суток.
Вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    getItems = (string) => Text.Split(string, ";"),
    addTemp = Table.AddColumn(Source, "temp", (rec) => Table.FromColumns({getItems(rec[Склады]), getItems(rec[#"Кол-во"])}, {"Склады", "Кол-во"})),
    #"Removed Columns" = Table.RemoveColumns(addTemp,{"Склады", "Кол-во"}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Removed Columns", "temp", {"Склады", "Кол-во"}, {"Склады", "Кол-во"})
in
    #"Expanded {0}"
 
Андрей VG, в очередной раз благодарю вас за помощь и желаю хорошего дня.
Все никак не дойду до М, только sql и пивот чутка освоил, чтото pq для меня совсем сложный
 
И еще вариант:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    MergedColumns = Table.CombineColumns(Source,{"Товар", "Склады", "Кол-во"},(x)=>Table.FromColumns( List.Transform(x, each List.Transform( Text.Split(_,";"), each try Number.From(_) otherwise _)),{"Товар", "Склады", "Кол-во"}),"t"),
    Out = Table.FillDown(Table.Combine(MergedColumns[t], type table [Товар=text, Склады=number, #"Кол-во"=number]),{"Товар"})
in
    Out
Вот горшок пустой, он предмет простой...
 
Ни в коем случаи не хочу преуменьшать помощь каждого из вас, но очень прошу совета.
Какой из этих кодов быстрее? просто массив не маленький будет
 
bereteli, а в чем проблема потратить 5 минут на измерение самостоятельно?

Проверил на массиве в 200к строк:
Андрей VG: 6,5 сек
PooHkrd: 16 сек
Изменено: PooHkrd - 20 фев 2021 09:51:36
Вот горшок пустой, он предмет простой...
 
Цитата
bereteli написал:
Какой из этих кодов быстрее?
Подскажите, пожалуйста, а что вам помешало самостоятельно протестировать?
 
Андрей VG, не хотел никого задеть. Хотел скорее понять принцип работы.
 
Цитата
bereteli написал:
Хотел скорее понять принцип
Хотели принцип, а спросили за скорость? Интересный подход. Сильно мой ответ про скорость помог понять принцип? :D
Если что-то не понятно в алгоритмах или примененных приемах, то спрашивайте именно за них. При чем тут скорость?
Изменено: PooHkrd - 24 фев 2021 12:02:39
Вот горшок пустой, он предмет простой...
Страницы: 1
Читают тему (гостей: 2)
Наверх