Я создал первичный ключ измерения, основанный на естественных ключах исходной таблицы.
CAST (CONCAT ('DIM_', NVL (A.CD1, 'TEXT')) || '.' || A.EAR AS VARCHAR (255))
Со временем я буду использовать суррогатный ключ в качестве первичного ключа.Поскольку я буду объединять свой факт с измерением на основе текущего первичного ключа (DimKey) измерения, я должен применить аналогичную логику в условии соединения факта.
Размер:
CREATE OR REPLACE VIEW DimTable1
AS
select
CAST(CONCAT('DIM_', NVL(A.CD1,'TEXT')) || '.' || A.YEAR AS
VARCHAR(255)) as Year_Key,
Year_CD
from base_table a
Факт:
SELECT
B.Year_Key,
A.Col1,
B.Year_CD
FROM Table1 A
LEFT JOIN DimTable1 B
ON CAST(CONCAT('DIM_', NVL(A.CD1,'TEXT')) || '.' || A.YEAR AS
VARCHAR(255))=B.Year_Key
Мне было интересно, можно ли как-нибудь избежать жесткого кодирования в таблице объединения фактов, так как яизменить таблицу Dim, чтобы использовать суррогатный ключ.