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

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

20 ответов

29 просмотров

распилить на 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 написана в лоб и её надо допилить...

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

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

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

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

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

For all those that keep asking why no pump? why this ? and why that...? Please close ur ewt chart and open 2 others - TOTAL (total mc) and BTC.D (btc dominance). Maybe BTC a...
Inn3r_G
19
"Since pnut can flip FTM easily, I'm swapping my FTM to pnut and hoping for a easy x5-x10" Perfect recipe for disaster. NFA but chances are, you'll end up as exit liquidity ...
C. A.
7
AMD status update? No longer in the plan but something might be around the corner later on Chinese partner? No longer in the plan. This market does not seem to be the top ...
Ben
6
I get confused when people talk about the ‘bull market’ and the ‘next bull market’ as if anyone really has a clue what’s really going on in the world. First of all - there i...
Shah
1
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
@marycamacho @NATHANLENAE @popachubby It was said that HOT will be used for hosting payments. But HOT is ERC20 based. So slow and high paying. The ERC network does not seem ve...
Aragorn
17
Another way to think about it is like this: let's say we sell $100m of FXB2029 and another $100m of FXB2055 and we buy $200m of ETH with it. Do you think that ETH price will b...
Sam Kazemian ¤⛓️¤
20
Welcome Mary Clark to the Pirate Chain chat Matey ☠️ PIRATE CHAIN is a cryptocurrency for private anonymous transactions. Official website https://piratechain.com ⚠️ Beware...
Rose
1
[kilv3r] Hey everyone! You probably saw the AMA today, and are aware that CyberVerse has made it into the finalists list to be integrated on Ronin blockchain, that would be th...
DiscordBridge
3
Is alice project is only a game or studio as well?
Hana
15
Карта сайта