Здравствуйте.
Есть табличка вида:
Надо ее отфильтровать и оставить записи с самым последним периодом. В данном случае Март 2018 с 10-10-2017 по 30-04-2018 (выделено).
В принципе вопрос решается этой функцией. Из большой таблицы убрал лишние столбцы (ТаблицаДанныхУсеч). Передаю код счета и индекс строки. Фильтрую по коду счета. Сортирую в обратном порядке, и беру первую ячейку (тут нужный id = 6 получается). Если переданный код и индекс совпадает, получаю тру на выходе, по нему и фильтрую изначальную таблицу.
Проблема в том, что в файле >37к строк. Такой подход отрабатывает по секунде на строку ~10 часов получается. Файлов два, да еще меняться со временем будут :\
Подбросьте, пожалуйста, идей, как можно оптимизировать процесс.
Есть табличка вида:
id | code | Период | Дата начала | Дата окончания | Сумма |
1 | 000000055845 | Март 2014 | 01.11.2015 | 03.10.2017 | 76 432,65 |
2 | 000000055845 | Март 2014 | 01.11.2015 | 30.04.2018 | 82 076,94 |
3 | 000000055845 | Март 2014 | 10.10.2017 | 30.04.2018 | 20 023,61 |
4 | 000000055845 | Март 2018 | 01.11.2015 | 03.10.2017 | 76 432,65 |
5 | 000000055845 | Март 2018 | 01.11.2015 | 30.04.2018 | 82 076,94 |
6 | 000000055845 | Март 2018 | 10.10.2017 | 30.04.2018 | 20 023,61 |
7 | 000000055845 | Январь 2016 | 01.11.2015 | 03.10.2017 | 76 432,65 |
8 | 000000055845 | Январь 2016 | 01.11.2015 | 30.04.2018 | 82 076,94 |
9 | 000000055845 | Январь 2016 | 10.10.2017 | 30.04.2018 | 20 023,61 |
В принципе вопрос решается этой функцией. Из большой таблицы убрал лишние столбцы (ТаблицаДанныхУсеч). Передаю код счета и индекс строки. Фильтрую по коду счета. Сортирую в обратном порядке, и беру первую ячейку (тут нужный id = 6 получается). Если переданный код и индекс совпадает, получаю тру на выходе, по нему и фильтрую изначальную таблицу.
Код |
---|
(code, index)=> let Источник = ТаблицаДанныхУсеч, #"Строки с примененным фильтром" = Table.SelectRows(Источник, each [#"Номер лицевого счета "] = code), #"Сортированные строки" = Table.Sort(#"Строки с примененным фильтром",{{"Дата окончания периода взыскания", Order.Descending}, {"Дата начала периода взыскания", Order.Descending}, {"Период образования задолженности по поставщику", Order.Descending}}), Индекс = if #"Сортированные строки"{0}[Индекс] = index then true else false in Индекс |
Проблема в том, что в файле >37к строк. Такой подход отрабатывает по секунде на строку ~10 часов получается. Файлов два, да еще меняться со временем будут :\
Подбросьте, пожалуйста, идей, как можно оптимизировать процесс.