Ich habe Daten im folgenden Format.DataWarehouse - Fact-Tabellen mit unterschiedlicher Granularität/Dimensionsmessungen
RoadAccidents (pk_accidentIdentifier)
mit Beziehung 1..*
-Vehicles(fk_accidentIdentifier, ordinalNumber)
->
natürlichen PK (Verbindung) und Surrogat, die einfach eine rowID
).
ordinalumber
ist nur eine Nummer, um durch Fahrzeuge zu iterieren, die in einen Unfall verwickelt waren.
--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
mit 1..*
Beziehung mit Tisch Casualties
, die in der gleichen Art und Weise verbunden ist, wie Fahrzeuge mit RoadAccidents
Bedeutung sind:
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
So sieht die Beziehung wie folgt.
RoadAccidents 1..* Vehicles 1..* Casualties
Zusätzlich Tabelle RoadAccidents
hat bereits Maßnahmen von numberOfVehiclesInvolved
und numberOfCasualties
aggregiert.
Es gibt 3 (möglicherweise mehr) hier für die fact tables
Zwei auf
RoadAccident -> Vehicles -> Casualties
JOINS Ansätze -> löschen Spalten mit aggregierten Zahlen -> Extrakt Attribute jeweiligen Dimensionen. Lose aggregierte Daten -> haben keine sinnvolle Kennzahl -> erstellen Sie Kennzahlen in SQL Server-Datentools.Haben Sie 3 Fakten Tabellen.
FactRoadAccident
,FactVehiclesCollision
,FactCasaultiesInvInCollision
Das Problem, das ich konfrontiert: Faktentabellen nicht direkt durch Fremdschlüssel verknüpft werden soll. Daher kann ich Dimensionen wie z.
DimRoadAccident *..1 DimRoadAccidentLocation
DimRoadAccident` *..1 DimWeatherConditions
Faktentabelle würde wie folgt aussehen:
FactAccident
(fk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties
).
Mit diesem Ansatz. Faktentabellen für Vehicles
und Casualties
wären nur ein Ersatz FK mit der ID eines Vehicle
oder Casualty
. Die einzigen Maßnahmen wären die Zeilenanzahl, dh die Nummer Vehicles
oder die Nummer Casualties
.
- halten nur 1 Faktentabelle
FactAccident
(fk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties
).
Lassen Sie die Dimensionen verknüpft werden DimRoadAccident 1..* DimVehicle 1..* DimCasualty
und haben Hierarchien in Data Tools erstellt und möglicherweise einige neue semi-additive Kennzahlen für Dimensionen erstellen.
Welche Appraoch würden Sie vorschlagen?
Es gibt eine sehr ähnliche Frage hier (möglicherweise sogar basierend auf dem gleichen Datensatz?), Meine Antwort darauf kann Ihnen helfen: http://stackoverflow.com/q/40774305/3964881. Wenn Sie immer noch stecken bleiben, werde ich versuchen, eine detailliertere Antwort zu schreiben, da Sie hier mehr Informationen gegeben haben als der andere. Überlegen Sie sich die geringste Granularität der Daten, bevor Sie entscheiden, was Ihre Fakt- oder Dimensionstabellen sind. Sobald Sie die geringste Granularität verstehen, werden die Fakten und Dimensionen deutlicher. –
Danke deine Antwort Joe, es scheint in der Tat der gleiche Datensatz zu sein. Ich habe auf den Kern der Daten in meinem Kommentar in der Post darunter hingewiesen. –