Создание плоского файла из множества других таблиц в среде SQL Server - PullRequest
1 голос
/ 22 февраля 2012

Извините, если это неправильное место, но я не уверен, какой сайт Stack Exchange подходит для таких вопросов.

У меня есть задача создать пул адресов для прямого маркетинга. Я должен:

  • Объединение разных списков адресов (все из которых уже есть в базе данных)
  • Исправьте имена на основе некоторых правил (например, если имя похоже на «Джон и Мэри Доу», мне нужно разделить имя на «Джон Доу» и «Мэри Доу»)
  • Дублирующиеся записи
  • Найдите номера клиентов, присоединившись к нашей базе данных клиентов по именам и адресам
  • Присоединитесь к нескольким таблицам, которые предоставляют информацию о клиенте (возраст, пол, ценность для клиента, какие продукты он / она уже купил у нас, когда он / она недавно связался)
  • Объедините несколько таблиц с региональной информацией (сколько продуктов мы продали в этом регионе, какова социально-демографическая структура, каков средний доход региона)
  • Создайте плоский стол со всей этой информацией и сделайте его доступным в той же базе данных (без ввода / вывода из / в другие системы или плоские файлы)
  • Запланируйте запуск каждую ночь

Так что теперь я обдумываю, какой из этих способов является лучшим. Я могу думать о следующих альтернативах.

  1. Просто напишите большой пакет SQL с UNIONs, JOINS и SELECT INTOs
    + просто
    + гибкий
    - трудно читать
    - трудно поддерживать
    - медленно, когда я всегда создаю промежуточные таблицы между шагами

  2. Службы интеграции SQL Server
    + легко читать и поддерживать
    + хорошая обработка ошибок
    + самостоятельная документация
    + визуальный
    - Мне нужно выучить это
    - не уверен, достаточно ли он гибок в отношении оконных функций (ранжирование, номер строки и т. д.)
    - не уверен, будет ли он быстрее или медленнее, чем SQL
    - AFAIK нет способа создать SQL из потока данных (на всякий случай)

  3. Службы аналитики SQL Server
    - Я даже не знаю, чем он отличается от SSIS

  4. Как-то иначе ??

Спасибо

1 Ответ

1 голос
/ 22 февраля 2012

SSIS, как следует из названия, полезен для интеграции / преобразования данных из разных источников. Если вы все делаете на SQL Server - используйте хранимые процедуры. И этого должно быть достаточно для ваших нужд. Временные таблицы будут очень полезны здесь.

С другой стороны ...

SSIS - очень мощный инструмент, потому что вся работа с потоками данных выполняется в оперативной памяти, поэтому это быстро, но вам нужно беспокоиться о потреблении памяти. Это зависит от объема данных, но вам также следует избегать любых асинхронных операций (группировка, сортировка), потому что они могут легко заполнить вашу память. Если в потоке данных будет много трансформаций, обновлений, расчетов и т. Д., SSIS может быть еще быстрее.

Но ...

У вас есть третий вариант здесь. Объедините их, используя компоненты «Поток данных» и «Выполнить задачу SQL».

...