Цитата |
---|
PooHkrd написал: Table.Group + Table.Max + Table.Combine |
не-не-не, так низзя. А Table.Group + Table.Max + Table.FromRecords можна
Цитата |
---|
PooHkrd написал: И не спрашивайте почему так, сам не знаю. |
Да в общем причина довольно "простая"
, насколько мне известно. Называется straming semantics ))) Суть, короче, в том, что таблицы читаются не обязательно целиком за один присест и не обязательно в том же порядке, как мы видим. Ну и плюс к тому есть понятие query folding. Соответственно, некий набор операций может быть выполнен не в том порядке, который мы видим, и некоторые шаги даже теоретически могут не выполняться. Например, интерпретатор видит последовательность шагов, которая может быть схлопнута в более короткий запрос SQL (или внутреннюю процедуру) с тем же результатом.
Например, для обычной глобальной группировки (или удаления дубликатов как ее разновидности) порядок строк не важен. Поэтому если мы делаем StepN+Sort+Group, алгоритм группировки соберет строки так, как ему удобно, и, возможно, без учета Sort - нафиг он нужен, если все равно группируем. Но если мы зафиксируем непосредственно перед группировкой таблицу в памяти, то тогда порядок строк сохранится - группировка будет брать данные из вот этой фиксированной таблицы.
Фиксация происходит разными путями: добавление столбца индекса, добавления столбца ключа, буфферизация - в общем, любая операция, которая требует enumerate all rows in the table.