209 похожих чатов

Как преобразовать таблицу 1 в таблицу2?

20 ответов

31 просмотр

распилить на 3 по показателю, каждую преобразовать и склеить обратно

Транспонировать, поднять заголовки, отменить свёртывание. Классическая задача на многоуровневый анпивот.

Михаил-Скубченко Автор вопроса

300к IDшников в столбцы - это очень жестокая классика.

Михаил Скубченко
300к IDшников в столбцы - это очень жестокая класс...

Соберите sql-ем готовое. Будет вам light и легко)))

Я ваше решение не смотрел. Ибо нет возможности. Можете прогнать на вашем массиве? А то есть ещё пара идей по оптимизации. Пока Миша не пришел и через Table.FromList всех не уделал.

На пивоте очень сильно задумался, до этого момента вполне шустро действовал. Минуты две висел на этом шаге. Сейчас тест скорости запущу. На курсе Сергея Ожиганова, у которого я учился PQ, говорилось про то, что PQ с пивотом больших массивов не дружит.

Вот какие у меня были результаты.

Алексей Мельников
screenshot Вот какие у меня были результаты.

Вчерашний вопрос многоуровневого анпивота больших массивов мучил меня весь вечер, поэтому сегодня я решил провести эксперимент. Опыты показали, что торможение происходит на этапе пивота показателей, так что можно считать это тестом скорости пивота PQ в зависимости от размера таблицы. Эксперимент проводился на массиве из файла экселя, будь источником CSV, было бы быстрее, я думаю. Была написана функция, которая берёт массив в 400 тысяч строк, вырезает из него кусочек и лишь после этого обрабатывает. Без Table.Buffer результаты были весьма печальны, поэтому после первой попытки тексты проводились только с буферизацией. Наиболее оптимальный диапазон оказался 500-1000 строк в обрабатываемом блоке с пиком где-то в районе 750 строк. Разница в обработке блоком по 10 тысяч и по 750 оказалась практически в два раза. Так что если планируете делать пивот больших массивов в PQ, режьте буферизованного слона на относительно маленькие кусочки и лишь после этого скармливайте запросу на пивот. @PooHkrd, @kkadikin, @dark_buh, тегаю вас троих как участников вчерашнего обсуждения.

Алексей Мельников
Вчерашний вопрос многоуровневого анпивота больших ...

а зачем вообще пайвот? вот по такому принципу не шустрее? let f=(x)=>{{x{0},"категория1",x{1},x{3},x{5}},{x{0},"категория2",x{2},x{4},x{6}}}, from = Table.Buffer(Excel.CurrentWorkbook(){[Name="TData"]}[Content]), lst = Table.ToRows(from), tr = List.Transform(lst,f), cmb = List.Combine(tr), to = Table.FromRows(cmb) in to здесь f написана в лоб, её можно привести в универсальный вид за исходник взял лист с данными в файле примере

Mikhail Muzykin
а зачем вообще пайвот? вот по такому принципу не ш...

13,82 секунды. Более чем в два раза быстрее и в кучу раз короче. Аплодирую стоя. А теперь можете рассказать, как эта магия работает, по шагам?

Алексей Мельников
13,82 секунды. Более чем в два раза быстрее и в ку...

Смогу вечером, только допилю f и проведу немножко тестов Общий принцип - на списках оно обычно шустрее, не нужно вертеть в памяти абстрактный тип - таблицу, особенно когда она большая

Mikhail Muzykin
Смогу вечером, только допилю f и проведу немножко...

Покопался, общий принцип уловил, но всё равно с большим интересом почитаю ваши пояснения.

Алексей (PooHkrd) Семилетов
Я ваше решение не смотрел. Ибо нет возможности. Мо...

Тут как раз неприменима, поскольку с каждого элемента получаем две строки, потому через FromRows, но я ещё подумаю

Алексей Мельников
На пивоте очень сильно задумался, до этого момента...

Ну правильно, причём "большой" начинается уже на тысячах строк

Mikhail Muzykin
Смогу вечером, только допилю f и проведу немножко...

Покопался глубже и понял, что решение относительно узкозаточенное под конкретный формат исходника. Если бы количество категорий менялось от 2 до N, как бы вы решили? Какой-то цикл был бы?

Алексей Мельников
Покопался глубже и понял, что решение относительно...

Я написал, что f написана в лоб и её надо допилить, прямым текстом

Mikhail Muzykin
Я написал, что f написана в лоб и её надо допилить...

как в старом анекдоте, после сборки немного обработайте напильником)

Сергей
как в старом анекдоте, после сборки немного обрабо...

Ну покажи как без напильника - делов-то, а я пойду попаботаю

Похожие вопросы

Обсуждают сегодня

@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Hello, Is iExec also part of the "inception program" or another one ? Would it be a name to qualified the nature of the relationship between iExec and Nvidia? And does Secret ...
Ñïķøłäś
8
Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
any reference of this implementation?
BitBuddha
29
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Карта сайта