Добрый день,
Сразу прошу прощения, что не прикладываю файл с примером, т.к. вопрос больше теоретический.
Порядок вычисления:
1. Добавляется столбец со списком всех календарных дней, в течение которых выполнялась работа:
2. Затем добавляется еще один столбец, в котором собирается список только рабочих дней.
Понимаю, что происходит каждый элемент одного списка сравнивается с каждым элементом другого. И это, скорее всего, и влияет на скорость.
Пробовал другой вариант для п.2 через List.Intersect() но скорость вычислений примерно такая же.
Хотел спросить совета, может быть возможен другой, более быстрый алгоритм для расчета рабочих дней?
Как вариант, создавать список для сравнения не рабочих дней, а нерабочих. Их - меньше, стало быть и скорость будет чуть выше?
Или же есть еще более быстрый вариант?
Заранее благодарю за конструктивные ответы.
Сразу прошу прощения, что не прикладываю файл с примером, т.к. вопрос больше теоретический.
- Есть большая таблица (более 100 тыс. строк) со списком работ, выполненных за год. Для каждой "работы" указана дата/время начала и окончания выполнения (Id работы, <... дополнительные данные по работе>, ДатаВремяНачалаВыполнения, ДатаВремяОкончания).
- Есть отдельная таблица со списком всех рабочих дней в году.
- Необходимо вычислить количество рабочих дней для каждой выполненной работы. Далее вычисляется общее количество часов/минут для получения чистого рабочего времени, в течение которого работа была выполнена.
Порядок вычисления:
1. Добавляется столбец со списком всех календарных дней, в течение которых выполнялась работа:
Код |
---|
List.Dates(Date.From([DateTimeBegin]) + #duration(1,0,0,0), Number.From(Date.From([DateTimeEnd])) - Number.From(Date.From([DateTimeBegin])), #duration(1,0,0,0)) |
Код |
---|
List.Select([список из п1.], each List.Contains("Таблица, содержащая только столбец с рабочими днями", _)) |
Понимаю, что происходит каждый элемент одного списка сравнивается с каждым элементом другого. И это, скорее всего, и влияет на скорость.
Пробовал другой вариант для п.2 через List.Intersect() но скорость вычислений примерно такая же.
Хотел спросить совета, может быть возможен другой, более быстрый алгоритм для расчета рабочих дней?
Как вариант, создавать список для сравнения не рабочих дней, а нерабочих. Их - меньше, стало быть и скорость будет чуть выше?
Или же есть еще более быстрый вариант?
Заранее благодарю за конструктивные ответы.