Как происходит обновление записи в таблице измерений по методу SCD? - PullRequest
0 голосов
/ 01 февраля 2019

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

Я хочу увидеть историческую записьзапись в форме типа два scd в таблице измерений, если в таблице для регионов сбыта, которые считаются обновленными до нового значения, имеется обновление. Наша главная цель - обновить записи на основе метода сохранения исторических данных.

Алгоритм обновления таблицы измерений (в которой меньше записей - несколько сотен) в SCD-2 будет выглядеть так:

FOR ALL ROWs in the SOURCE table query LOOP 
IF ( a corresponding row exists in the DIM TABLE 
THEN 
IF data are different THEN 
1. UPDATE the ""CURRENT"" row of the DIM TABLE 
SET EFFECTIVE_TO = NOW 
ACTIVE_FLAG = 0 (ZERO) 
2. INSERT new version into DIM TABLE 
SET EFFECTIVE_TO = NOW+1 day ahead 
ACTIVE_FLAG = 1 (ONE)
END IF 
ELSE 
INSERT new row into DIM TABLE 
END IF

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

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Итак, у вас есть таблица SCD2, это один из способов посмотреть на нее:

Исходя из таблицы / таблиц, вы определяете свои записи, поступившие в тот день (в инкрементах) / или полные записи изображений ...я буду использовать псевдоним source

В вашем SCD2 вы должны фильтровать записи, активные в день загрузки (фильтр date между valid_from и valid_to ).я буду использовать псевдоним target .

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

  • Если у вас есть проблемы с производительностью, вы можете создать 2-3 промежуточные таблицы с одинаковой структурой с механизмом усечения / вставки:

    1. Один с записями для закрытия.

    2. Один с новыми записями.

    3. Только с измененными записями.

  • Если у вас много таблиц с SCD2, вы можете создать пакет, который генерирует структуру таблиц PL / SQL ...со временем меняются, появляются новые таблицы.

Сложно написать код для ваших таблиц, мы не знаем ваших исходных таблиц: PK, FK (включить или отключить?), столбцы.

0 голосов
/ 01 февраля 2019

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

 BEGIN
      LOOP cusrsor    
       SELECT COUNT(1)
         INTO V_COUNT
         FROM DIM table_name
         WHERE <conditions here key columns and change fields here >

         IF V_COUNT = 1 THEN -- update flag and insert new record

         UPDATE stmt;
         INSERT stmt;
         ELSE -- New values to insert
         INSERT stmt;
         END IF;
   END LOOP;
    END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...