假设我有一个简单的 OLTP 数据库,其中包含订单、产品和客户:
从它开始,我正在构建一个包含订单事实表、产品维度、客户维度和日期维度的数据集市:
将订单表加载到 fact_orders 时(假设我使用 SSIS 查找转换来分配代理键),这是否意味着订单的数据源也需要具有关联的自然“外键”值OLTP系统中的订单?
换句话说,正在加载的数据会来自这样的查询吗?
SELECT
order_date, -- needed to get date surrogate key
customer_name, -- needed to get customer surrogate key
product_name, -- needed to get product surrogate key
order_number, -- denegenerate dimension,
qty_ordered AS order_qty, -- measure
total_amount AS order_amount -- measure
FROM orders o
INNER JOIN customers c
ON o.customer_id = c.customer_id
INNER JOIN products p
ON o.product_id = p.product_id
我不确定您是否需要“自然”键,但您可能确实需要维护各种键映射。因此,您需要了解源系统和目标系统之间的关系映射,确定这些关系的键并从那里构建键映射。
我之前有一个关于此的问题,称为“从自然键映射到基于整数的键的最佳实践是什么?(ETL)”。