Цитата |
---|
PooHkrd написал: Хотя буфер на очень больших таблицах - вариант спорный. |
Буфер использовал, чтобы сравнить именно скорость обработок, в реальных запросах не использую. Без первого буфера (загрузки таблицы из excel) первый вариант вообще бесконечно считался;)
Странно, но без буфера в шаге tbl первый вариант заметно проигрывает:
Неужто AddColumn вызывает пересчет предыдущего шага??? Хотя в "рабочих" запросах без буфера этот вариант у меня всегда был быстрее, чем replace.
Понятно, что первый вариант самый простой в освоении;) Но вариант с transform хорош тем, что можно менять сразу несколько столбцов:
Код |
---|
let
src = Table.Buffer ( Excel.CurrentWorkbook(){[ Name = "data" ]}[Content] ),
typed = Table.TransformColumnTypes ( src, { { "Столбец2", Int64.Type } } ),
tbl = Table.Repeat ( typed, 10000 ),
replace = Table.FromRecords (
Table.TransformRows (
tbl,
( r ) =>
Record.TransformFields (
r,
{
{ "Столбец2", each if r[Столбец1] = "q" or r[Столбец1] = "w" then 7 else _ },
{ "Столбец1", ( x ) => if x = "q" or r[Столбец2] = 5 then x & "!!!" else x }
}
)
),
Value.Type ( tbl )
)
in
replace |