Страницы: 1
RSS
Комбинирование двух столбцов в Power Query, В Power Query из двух столбцов из разных источников нужно сделать комбинацию всех сочетаний значений этих столбцов
 
Только начинаю познавать Power Query, требуется помощь такого рода.
Есть два столбца, в разных источниках, на выходе при помощи запроса Power Query нужно получить таблицу содержащую два столбца со всеми возможными комбинациями.
Пример прикладываю.
Изменено: PooHkrd - 21.03.2017 13:16:18
Вот горшок пустой, он предмет простой...
 
Если только стандартными командами - то см.вложение.  Если правильно понял, что фрукты и города - это две разные таблицы.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Круто, догадывался что в этом направлении нужно идти, но до индексирования не додумался.
Спасибо.
А что за не стандартные команды? Я заинтригован.
Изменено: PooHkrd - 01.07.2021 05:15:19
Вот горшок пустой, он предмет простой...
 
Нестандартные имеется ввиду программирование своих функций и кодов в расширенном редакторе.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток.
Цитата
The_Prist написал:
программирование своих функций и кодов в расширенном редакторе
PooHkrd,  для примера, без лишних телодвижений.
 
Красиво. Я правильно понимаю, что и обработка такого запроса будет шустрее чем в примере от The_Prist?
Изменено: PooHkrd - 12.05.2021 14:30:41
Вот горшок пустой, он предмет простой...
 
The_Prist, кнопочками можно проще:
1. В каждую таблицу по столбцу единичек
2. Слияние по этому столбцу
3. Развернуть таблицу
4. Убрать столбец единичек.
Изменено: Максим Зеленский - 21.03.2017 14:33:59
F1 творит чудеса
 
Максим, вот честно, так и пробовал - не получилось. Видимо, где-то протупил и не взлетело. поэтому пришлось мудрить :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
PooHkrd написал:
обработка такого запроса будет шустрее чем в примере от  The_Prist ?
Не думаю, что будет большая разница. Там самое тяжёлое N * M по числу строк. А в этом смысле алгоритмы одинаковые.
Цитата
Максим Зеленский написал:
кнопочками можно проще
Вот с самого начала освоения ими-то и не пользовался. И не вижу, честно говоря, особого достижения в кнопочном решении. Да, в некоторых случаях быстрее... на чём-нибудь простом. Но чаще всего чуть по сложнее и кнопочками не решишь. Это как с SQL тоже можно drag&drop в Access или Management Studio, только чаще всего текущие запросы они даже отобразить в режиме конструктора отказываются.
 
Цитата
Андрей VG написал:
Вот с самого начала освоения ими-то и не пользовался. И не вижу, честно говоря, особого достижения в кнопочном решении.
Для человека, который программировал крайний раз в универе 15 лет назад, но имеющий понимание об алгоритмизации кнопочное решение - самое то. Я еще толком не знаю язык, а уже собираю дивные отчеты из вагона разных источников всего за 2 недели знакомства с Power Query. Со всеми возникающими вопросами разбирался сам, с этим вот первый раз обратился к источнику мудрости.
Но это оффтоп.
По сабжу - всем огромное спасибо, все свободны :)
З.Ы. От себя добавлю, еще вот такой красивый вариант получения нужного результата:
Код
let
    fruits = Excel.CurrentWorkbook(){[Name="Фрукты"]}[Content],
    city = Excel.CurrentWorkbook(){[Name="Города"]}[Content],
    Beautiful_Join = Table.Join(fruits,{},city,{})
in
    Beautiful_Join
Изменено: PooHkrd - 07.03.2018 17:47:43
Вот горшок пустой, он предмет простой...
 
Добрый! А как сделать чтобы эти 2 столбца комбинировались в прямом и обратном порядке?
Понятное дело что при увеличении столбцов возникает стремление к бесконечности комбинаций Посему ограничусь двумя (мне для решения задачи более не надо)  Кроме того, в файле "написал" что м.б комбинировать надо не столбцы а значения в одном столбце  Прошу ткнуть носом для обоих вариантов
 
Цитата
Сергей написал:
А как сделать чтобы эти 2 столбца комбинировались в прямом и обратном порядке?
общий подход вот такой:
Код
let
    lst = {"a", "b"}, 
    comb = List.Transform({lst, List.Reverse(lst)}, (x) => Text.Combine(x, ", "))
in
    comb

Ну а дальше - "куда кривая вывезет". Можно попроще, можно сложнее - от вашей фантазии зависит.
Вар 01
Код
#table(
    {"н-нада"}, 
    List.Combine(
        Table.ToList(
            Source, 
            (x) => List.Transform({x, List.Reverse(x)}, (w) => {Text.Combine(w, ", ")})
        )
    )
)

Вар 02
Код
Table.FromColumns(
    {((x) => List.Transform({x, List.Reverse(x)}, (w) => Text.Combine(w, ", ")))(Source[Данные])} ,
    {"н-нада"}
)

Вар 01 - методом извращений
Код
Table.FromRows(
    List.TransformMany(
        Table.ToList(Source, (x) => x),
        (x) => x,
        (x, y) => {Text.Combine(List.Union({{y}, x}), ", ")}
    ),
    {"н-нада"}
)

в файле варианты накидал.
Пришелец-прораб.
 
спасииибо  упс

Кривую буду выбирать
Изменено: Сергей - 31.10.2024 13:22:42
 
AlienSx, однако и трансформмэни не все варианты выдает в лучае числа столбцов, бОльшего чем 3  (хотя и это здорово да и задача была про 2 столбца)
 
Цитата
Сергей написал:
да и задача была про 2 столбца
вот именно.
Пришелец-прораб.
Страницы: 1
Наверх