Надо обратить внимание, что они приходят именно в текстовом виде. Колонок с числами, аналогичных колонке 4 и 5 больше (60), но идут подряд. В зависимости от значения в колонке 2 требуется умножить каждое число из колонок 4, 5...60 на число. А число исчисляется так:
buchlotnik написал: скорость сильно зависит от исходных данных
Это, да. Проблема варианта Алексея в том, что при слишком большом наборе TRUE/FALSE выборка строк даёт заметные тормоза. Михаил, большое спасибо за контрольное исследование.
let
from = Excel.CurrentWorkbook(){[Name="TD"]}[Content],
i = Table.AddIndexColumn(from,"i"),
cols = List.Buffer(List.Skip(Table.ColumnNames(from),3)),
lst = List.Transform(List.Distinct(from[m]),(x)=>{x,Number.Power(10, (Number.FromText(x)-383)*3)}),
trnsf = List.Transform(lst, (x)=>Table.TransformColumns( Table.SelectRows(i, each [m]=x{0}), List.Transform(cols, (c) => {c, each Number.From(_) * x{1}}))),
comb= Table.Combine(trnsf),
final = Table.RemoveColumns(Table.Sort(comb, {"i", 0}), "i")
in
final
Данный форум меня научил ставить мини-задачи, чтобы быстро находить решения. В итоге передумал, взял Ваш вариант - самый быстрый, суда по тестам. Запустил просчёт.... поскольку таблиц 10, то решение получим часов через 5 (с учётом всез дополнительных преобразований).
Спасибо большое за помощь! Я очень стараюсь научиться.
Kirill Gureev написал: то решение получим часов через 5 (с учётом всез дополнительных преобразований).
Однако! По тестам для 60 столбцов скорость 3000 строк в секунду 5 * 3600 * 3000 = 54 000 000 Пусть у вас столбцов только 10, считаем зависимость линейной от числа столбцов, тогда 54 000 000 * 6 = 324 000 000.
Загрузка из текстового файла на 10 столбцов с целыми числами идёт в модель данных со скоростью чуть более 100 тысяч строк в секунду. Соответственно, 1 миллиард строк 8,3 часа. Несколько это три и более, следовательно, только загрузка займёт 25 часов. Если Excel и Power Pivot сможет это проглотить.
Row limit - the maximum number of rows in your dataset (when not using DirectQuery) is 2 billion, with three of those rows reserved (resulting in a usable maximum of 1,999,999,997 rows)
Что меньше 2 миллиардов. Конечно, можете надеяться, что с 2018 года ограничения были увеличены.