Цитата |
---|
Solomama написал: применение List.Buffer или его плюсы? |
Вы выполняете проверку для каждой строки таблицы на попадание значений в некий список. Списки (как и таблицы), в отличие от обычных скалярных значений, обладают свойством мутабельности (изменчивости) - то есть, PQ может решить, что между проверкой первой и второй строки список мог измениться, поэтому его надо прочитать снова. И так он будет пытаться читать его из источника снова и снова, для каждой строки второй таблицы. Если вторая таблица большая, то можно удивиться. В общем, нужно как-то запретить ему это делать.
Есть несколько вариантов:
- перед фильтрацией положить список в буфер (т.е. в память). Фактически, можно было в основном запросе сделать шаг типа
Код |
---|
MyList = List.Buffer(#"ТаблицаДляОтбора"[Группа]) |
и ссылаться на него
- рассчитать список как часть определения функции (это уже более тонкие материи, долго описывать), тогда шаг с фильтрацией выглядел бы так:
Код |
---|
= Table.SelectRows(Source, let MyList = #"ТаблицаДляОтбора"[Группа] in each List.ContainsAny(MyList, {[Субконто Дт],[Субконто Кт]})) |
ну и прочие другие способы