Наши источники данных - это агрегированные плоские файлы с продажами за день и ниже зерна.
T_date, Store, Consumer unit, Reail Line Code, Sales Amount,
20/05/20, 10, 1001, 80, 120,
20/05/20, 10, 1002, 80, 90,
20/05/20, 20, 1001, 80, 50,
21/05/20, 10, 1002, 80, 90,
21/05/20, 20, 1001, 80, 80,
21/05/20, 20, 1003, 90, 150,
21/05/20 30, 1001, 80, 180
Я пытаюсь смоделировать его со стандартами Data Vault 2.0. Это единственное решение, которое я могу придумать для заполнения хранилища необработанных данных. Я также пытался смоделировать продажи как HUB, но в итоге LINK и HUB держали одни и те же ключи.
CREATE TABLE hub_store
(
hub_store_key VARCHAR(32) NOT NULL PRIMARY KEY,
store_name VARCHAR(100) NOT NULL PRIMARY KEY
);
CREATE TABLE hub_consumer_unit
(
hub_consumer_unit_key VARCHAR(32) NOT NULL PRIMARY KEY,
consumer_unit_code NUMBER(4, 0) NOT NULL
);
CREATE TABLE hub_retail_line
(
hub_retail_line_key VARCHAR(32) NOT NULL PRIMARY KEY,
retail_line_code NUMBER(2, 0) NOT NULL
);
CREATE TABLE hub_date
(
hub_date_key VARCHAR(32) NOT NULL PRIMARY KEY,
transaction_date DATETIME
);
CREATE TABLE lnk_day_store_sales
(
lnk_day_store_sales_key VARCHAR(32) NOT NULL PRIMARY KEY,
hub_date_key VARCHAR(32) NOT NULL,
hub_store_key VARCHAR(32) NOT NULL,
hub_consumer_unit_key VARCHAR(32) NOT NULL,
hub_retail_line_key VARCHAR(32) NOT NULL
);
CREATE TABLE sat_day_store_sales
(
lnk_day_store_sales_key VARCHAR(32) NOT NULL,
load_datetime TIMESTAMP_LTZ NOT NULL,
sales_amount NUMBER(18, 2),
CONSTRAINT pk_lnk_day_store_sales_key
PRIMARY KEY (lnk_day_store_sales_key, load_datetime)
);
Есть ли другое решение для моделирования этого без изменения зернистости?
Спасибо!