Какова наилучшая практика для служб SSIS в решении истории ведения загрузки данных с отсутствующими новыми строками? - PullRequest
0 голосов
/ 03 января 2019

Мне 20 лет .NET, начиная с бета-версии. У меня SSIS, начиная с DTS, и несколько лет серьезного опыта работы с Datawarehouse, измерений, таблиц фактов и т. Д. Я выполнил медленно меняющееся измерение типа 2, реализуя задачи слияния и необработанного SQL.чтобы выполнить проверку существующих строк, новых строк и измененных строк.

Но я не являюсь разработчиком BI, и это не моя сильная сторона.

Мне необходимо учитывать ежедневный импорт данных ввечно растущий стол.Отметьте строки (удалите отметку даты и времени, я думаю), чтобы указать, что новая загрузка не содержала соответствующую строку, возможно, эта строка была удалена?И, конечно, регулярные изменения загрузки данных, обновления новых вставок и т. Д. Очевидно, это похоже на медленно меняющееся измерение типа 2.

Это правильное предположение, основанное на этом ограниченном описании?

Я ищу проверенные временем принятые отраслевые стандарты для решения этого сценария.

Нет хранилища данных, нет «информационной панели» для аналитической ссылки, эти данные фактически будут использоваться для поддержки серьезныхпоиск и ссылки для реального выставления счетов.

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

Тип 2, медленно меняющийся размер.Странно, потому что на самом деле нет таблицы измерений, только ежедневная загрузка данных, здесь вообще нет аналитики!

У меня пока ничего нет, я ищу направление для реализации принятого шаблона.

GenericКод псевдо:

  • Строка 123 (у меня даже нет PK) входит в и является уникальным и загружается первым втаблица этапов, наконец, к основному столу в нагрузке "понедельник".

  • нагрузка "вторник" Строка 123 имеет изменение адреса и изменения, чтобы сказать, скажем, это цветной столбец .... подтвердите, что в обеих таблицах есть строки Обновить поле измененных полей / поле даты обновления, указывающее, что оно изменилось.

  • Прибытие "Среда" приходит и строка 123отсутствует в исходных данных. Строка 123 удаления с датой удаления (специальный столбец DateTime, указывающий на выход в отставку, и, возможно, битовый флаг для указания выхода на пенсию)

  • Просто реализуйте базовыйТип 2?

1 Ответ

0 голосов
/ 06 января 2019

Очевидно, многослойная структура SQL MERGE, обеспечивающая требуемые условия:

КОГДА СООТВЕТСТВУЕТ И (Поля SDC меняются (разные)), ТО ОБНОВЛЕНИЕ .....

КОГДА НЕ СООТВЕТСТВУЕТTARGET THEN INSERT ()

КОГДА НЕ СООТВЕТСТВУЮТ ИСТОЧНИКОМ И Target.IsRowCurrent = 1 THEN UPDATE

Это в основном лишь краткое изложение блога Алекса Уиттла на purplefrogsystems.com.Стандарт де-факто, хотя проверка «текущей даты» вместо «флага строки-течения» также очень заметна.

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

Но, как есть, это быстрее, чем мастер по строкам SSIS SSIS.

Iбыло бы упущено не упоминать дополнительно видео Тодда МакДермида о компоненте SCD метода Кимбалла.Я не люблю вставлять в SSIS какой-то другой предварительно встроенный компонент даже из прославленной группы Кимбалл.

Я бы лучше понял, что происходит, но если вам небезразлично, что сериал видео проходит этот шаг в двух ручных стилях, прежде чем демонстрировать компонент add in: https://www.youtube.com/channel/UCks8CDxSGRRh9IbtTc3ZRqw

...