У меня есть требование написать отчет с использованием SSIS для извлечения данных из базы данных SQL в файл CSV.
Данные - это продажи за эту неделю наряду с продажами за ту же неделю прошлой год.
Я написал пакет SSIS с двумя задачами потока данных, одна из которых загружает данные в постоянную таблицу, а другая извлекает их в CSV.
Проблема заключается в производительности действительно бедно. На этой неделе мы рассматриваем около 1000 записей о продажах, но соответствующая неделя прошлого года содержит 1,5 миллиона записей +
Та же таблица содержит эту неделю и прошлый год, поэтому это почти тот же запрос, но с другими параметрами даты.
Пока что пробовал:
- Один запрос с двумя объединенными CTE. Производительность составила 45 минут
- Вставка в таблицу только для данных за этот год и отдельное обновление для добавления данных за прошлые годы. Операция заняла 20 минут.
- Два SQL Источника с подсказкой NOLOCK, которые затем сортируются и объединяются с помощью Merge Join. Я надеялся, что оба будут работать параллельно, но остановил его через 45 минут.
Даже с вариантом 2 на 20 минут он будет примерно в 4 раза медленнее, чем любой другой пакет SSIS в поместье.
У меня вопрос, пожалуйста, как лучше всего выводить данные из одной и той же таблицы дважды?