Стихи SSIS в этом году за прошлый год извлекают лучший дизайн - PullRequest
0 голосов
/ 06 мая 2020

У меня есть требование написать отчет с использованием SSIS для извлечения данных из базы данных SQL в файл CSV.

Данные - это продажи за эту неделю наряду с продажами за ту же неделю прошлой год.

Я написал пакет SSIS с двумя задачами потока данных, одна из которых загружает данные в постоянную таблицу, а другая извлекает их в CSV.

Проблема заключается в производительности действительно бедно. На этой неделе мы рассматриваем около 1000 записей о продажах, но соответствующая неделя прошлого года содержит 1,5 миллиона записей +

Та же таблица содержит эту неделю и прошлый год, поэтому это почти тот же запрос, но с другими параметрами даты.

Пока что пробовал:

  1. Один запрос с двумя объединенными CTE. Производительность составила 45 минут
  2. Вставка в таблицу только для данных за этот год и отдельное обновление для добавления данных за прошлые годы. Операция заняла 20 минут.
  3. Два SQL Источника с подсказкой NOLOCK, которые затем сортируются и объединяются с помощью Merge Join. Я надеялся, что оба будут работать параллельно, но остановил его через 45 минут.

Даже с вариантом 2 на 20 минут он будет примерно в 4 раза медленнее, чем любой другой пакет SSIS в поместье.

У меня вопрос, пожалуйста, как лучше всего выводить данные из одной и той же таблицы дважды?

1 Ответ

0 голосов
/ 14 мая 2020

Я изучил идею Union All, но она не сработала. Мне нужен был этот год и последний год в одной строке, и я не мог понять, как заставить его работать.

Я сократил время до менее 10 минут, удалив некоторые столбцы и выполнив поиск в SSIS вместо этого, и это повысило производительность до приемлемого уровня.

Спасибо за вашу поддержку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...