首页 文章

DataWarehouse - 具有不同粒度/维度度量的事实表

提问于
浏览
0

我有以下格式的数据 .

RoadAccidents (pk_accidentIdentifier) 与关系 1..*Vehicles(fk_accidentIdentifier, ordinalNumber) -> 自然PK(复合)和代理,这简直就是 rowID ) .

ordinalumber 只是一个迭代参与事故的车辆的数字 .

--Sample Row
Accident001, 1, [list of attributes of a vehicle] -- 1st car involved in an inc
Accident001, 2, [list of attributes of a vehicle] -- 2nd car involved in an inc

Vehicles 与表 Casualties1..* 关系,其连接方式与车辆相同 RoadAccidents 含义:

Casualties (Compound PK: (fk_vehicleID, casualtyOrdinalNumber)

--Sample Row:
Vehicle001, 1, [list of attributes of a casualty] -- 1st casualty involved in inc
Vehicle001, 2, [list of attributes of a casualty] -- 2st casualty involved in inc

所以这种关系看起来如下 .

RoadAccidents 1..* Vehicles 1..* Casualties

另外,表 RoadAccidents 已经汇总了 numberOfVehiclesInvolvednumberOfCasualties 的度量 .

这里有3种(可能更多)方法 fact tables

  • RoadAccident -> Vehicles -> Casualties 上的两个JOINS - >删除带有聚合数字的列 - >将属性提取到各自的维度 . 松散的聚合数据 - >没有有意义的措施 - >在SQL Server数据工具中创建度量 .

  • 有3个事实表 . FactRoadAccidentFactVehiclesCollisionFactCasaultiesInvInCollision

我面临的问题:事实表不应该直接用外键链接 . 因此,我可以提取尺寸,例如 .

DimRoadAccident *..1 DimRoadAccidentLocation 
DimRoadAccident` *..1 DimWeatherConditions

事实表如下:

FactAccidentfk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties ) .

用这种方法 . VehiclesCasualties 的事实表只是一个代理人FK,其id为 VehicleCasualty . 唯一的衡量标准是行数,意思是 - Vehicles 的数量或 Casualties 的数量 .

  • 只保留1个事实表

FactAccidentfk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties ) .

将维度链接 DimRoadAccident 1..* DimVehicle 1..* DimCasualty 并在数据工具中创建层次结构,并可能在维度上创建一些新的半加性度量 .

你会建议什么appraoch?

1 回答

相关问题