«Поиск / обновление измерений»: тип-2 SCD date_from значение? - PullRequest
1 голос
/ 13 августа 2010

Я пытаюсь использовать Pentaho Data Integration / Pan для создания таблицы типа 2 (SCD).

После того, как я впервые проверил свои данные через шаг DimensionLookup, я получил тип 2таблица выглядит так:

PKID  version  date_from             date_to                MyPK  Field1  Field2  ...
150   1        1900-01-01 00:00:00   2199-12-31 23:59:59    1     "X"     "Y"     ...

Пока все хорошо.Затем позже я получил новые данные, обновил свою исходную таблицу и выполнил тот же шаг DimensionLookup, и все измененные записи выглядели так:

PKID  version  date_from             date_to                MyPK  Field1  Field2  ...
150   1        1900-01-01 00:00:00   2010-06-24 03:45:00    1     "X"     "Y"     ...
151   2        2010-06-24 03:45:00   2199-12-31 23:59:59    1     "X2"    "YYY"   ...

Это выглядит хорошо,тоже.Но для записей, которые были добавлены в мой набор данных с прошлого раза, они добавляются с date_from = '1900-01-01 00:00:00'.(И если подумать, это немного странно, что моя первоначальная загрузка тоже использовала date_from = '1900-01-01 00:00:00'.)

Я использую запуск по умолчаниюdate, которая утверждает, что это текущее время системы, хотя я также попробовал "start_trans" ("Дата начала трансформации"), которая сделала то же самое, за исключением использования временной метки 9 часами ранее (1899-12-31).

Я не могу понять, как использование 1900 для всех новых записей имеет смысл: вы не можете сказать, что было добавлено, когда, поскольку похоже, что каждая новая запись существовала с начала времен.Я даже искал тип 2 в книге Кимбалла, и хотя он не был сверхъестественным, он, казалось, указывал, что вновь вставленные значения должны иметь в качестве даты_с момента, когда они начинают действовать.

Это ошибкав PDI?Есть ли обходной путь?Я просто использую это неправильно?Я неправильно понимаю весь смысл типа-2?

Спасибо!

1 Ответ

1 голос
/ 02 сентября 2010

Вы хотите добавить в преобразование новое поле или переменную с текущим системным временем.

Есть несколько способов сделать это, поэтому я просто предложу один. Добавьте новое преобразование в начале задания с именем set_current_time. Это преобразование получит текущее системное время (вы можете получить его из базы данных, используя шаг Table Input ). Затем вы используете Set Variable , чтобы установить текущее время в качестве переменной, которая будет доступна на протяжении всего задания.

Отсюда довольно легко найти, нужно ли вам использовать переменную или ранее доступную дату в качестве поля date_from, используя комбинацию поиска и формулы / сценария.

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