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

时间:2017-01-17 01:30:15

标签: database database-design ssas data-warehouse

我有以下格式的数据。

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

Vehicles1..*的关系Casualties,其关联方式与车辆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的衡量标准。

fact tables

有三种(可能更多)方法
  1. RoadAccident -> Vehicles -> Casualties上的两个加入 - >删除具有汇总数字的列 - >将属性提取到各自的维度。松散的汇总数据 - >没有有意义的措施 - >在SQL Server数据工具中创建度量。

  2. 有3个事实表。 FactRoadAccidentFactVehiclesCollisionFactCasaultiesInvInCollision

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

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

    事实表如下:

    FactAccidentfk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties)。

    采用这种方法。 VehiclesCasualties的事实表只是代理FK,其ID为VehicleCasualty。唯一的衡量标准是行数,即 - Vehicles的数量或Casualties的数量。

    1. 只保留1个事实表
    2. FactAccidentfk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties)。

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

      你会建议什么样的appraoch?

1 个答案:

答案 0 :(得分:-1)

使用Bridge表。当您具有多对多关系时,将使用桥表。见http://www.kimballgroup.com/2012/02/design-tip-142-building-bridges/