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

Добрый день. К заметке из "танка" про "суммесли" есть пара вопросов: 1.

Как превратить суммесли в суммеслимн (сам придумал только на этапе после Table.Group выполнять Table CombineColumns получая таким образом одномерный ключ, который потом используется в Record.Field)

2. Есть ли возможность ещё сильнее сэкономить производительность, чем использование в итоге функций Table.AddColumn + Record.Field? (они же все равно перебирают большой массив?)

(пример прям в самой записи есть)

https://t.me/pbi_pq_from_tank/193

19 ответов

41 просмотр

2. О каком переборе идёт речь? Там прямое обращение к полю 1. Тут в группе пару раз выкладывал вариант с записью записей - как вариант В остальном - см. закреп

Pestunovich-Konstantin Автор вопроса

А в записи не ищется поле перебором? Тогда второй вопрос снят.

Pestunovich Konstantin
А в записи не ищется поле перебором? Тогда второй ...

Я неоднократно указывал, что на скорость принципиально влияет длина списка, но не число полей в записи

сколько условий вы в реальности перебираете?

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
сколько условий вы в реальности перебираете?

Не менее 8, плюс будет несколько столбцов (~5) содержащих промежуточные суммы для разного набора условий.

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
сколько условий вы в реальности перебираете?

Сейчас задача решена последовательными Join что очевидно удручает пользователей.

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
чем удурчает?

Производительностью, запрос висит минут 5.

мне сравнивать не с чем, поэтому вариант строго по примеру: let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Марка продукта", type text}), lst = List.Buffer(List.RemoveLastN(Table.ColumnNames(typ),1)), g=(y,z)=>(x)=>Record.Field(z,Text.Combine(Record.FieldValues(Record.SelectFields(x,y)),"@")), f=(tbl,col)=>[ lst1=List.Buffer(List.RemoveItems(lst,{col})), cmb=Table.CombineColumns(tbl,lst1,(x)=>Text.Combine(x,"@"),"Name"), gr=Table.Group(cmb,"Name",{"Value",(t)=>List.Sum(t[тн])}), dict=Record.FromTable(gr), add=Table.AddColumn(tbl,"без "&col,g(lst1,dict))][add], to=List.Accumulate(lst,typ,f) in to

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
мне сравнивать не с чем, поэтому вариант строго по...

А List.Buffer зачем нужен? Он производительность ускорит?

Pestunovich Konstantin
А List.Buffer зачем нужен? Он производительность у...

можете не использовать, если не хотите, а так в танке отдельный пост был

Pestunovich-Konstantin Автор вопроса

Очень круто, спасибо. Могу попросить комментарий словесный к функции "g = ..." написать?

Pestunovich Konstantin
Очень круто, спасибо. Могу попросить комментарий с...

и кстати, если плюнуть на порядок строк и делать именно join - по скорости выходит также let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], typ = Table.TransformColumnTypes(from,{"Марка продукта", type text}), lst = List.Buffer(List.RemoveLastN(Table.ColumnNames(typ),1)), f=(tbl,col)=>[ lst1=List.Buffer(List.RemoveItems(lst,{col})), gr=Table.Buffer(Table.Group(tbl,lst1,{"без "&col,(t)=>List.Sum(t[тн])})), join=Table.Join(tbl,lst1,gr,lst1)][join], to=List.Accumulate(lst,typ,f) in to

Pestunovich-Konstantin Автор вопроса

Ммм а есть смысл тогда заморачиваться именно с Record.Field? Я думал он увеличивает скорость обработки запроса .

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
и кстати, если плюнуть на порядок строк и делать и...

Порядок строк в итоговой таблице не важен, она будет использоваться через агрегированные значения.

Pestunovich Konstantin
Ммм а есть смысл тогда заморачиваться именно с Rec...

скорость обработки увеличивает хороший алгоритм и приемлемое железо на этом и закончим

Pestunovich-Konstantin Автор вопроса
Mikhail Muzykin
скорость обработки увеличивает хороший алгоритм и ...

И все же - есть преимущества у алгоритма через Record.Field перед алгоритмом через Table.Join?

Pestunovich Konstantin
И все же - есть преимущества у алгоритма через Rec...

нету, проста данные нужны правильные, чтобы join не тупил

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

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

@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
Карта сайта