我有一個客戶維度和跟蹤與客戶會話事實表中,這些有以下欄目:迷你/垃圾尺寸諮詢
代碼:
[DimClient]
----------
PK_ClientKey
ClientNumber
EmailAddress
Postcode
PostcodeLongitude
PostcodeLatitude
DateOfBirth
Gender *
Sexuality *
CulturalIdentity *
LanguageSpokenAtHome *
CountryOfBirth
UsualAccommodation *
LivingWith *
OccupationStatus *
HighestLevelOfSchooling *
RegistrationDate
LastLoginDate
Status
[FactSession]
-------------
PK_SessionKey
FK_ClientKey
...
我的第一個要求是開始分組的在特定會話(FactSession)中客戶的年齡,解決此問題的最佳方法是創建年齡段維度並在FactSession中爲DimAgeGroup維度創建一個外鍵(FK_AgeGroupKey)。
現在我想這將是一個很好的跟蹤*(上圖)的所有列。這些可能(尚未證明)與Sessions有很高的相關性。通過DWH工具包讀這似乎是一個迷你尺寸,以適應所有的*列同年齡組一起配不配最好的,所以我總結了以下結構:
代碼:
[DimClient]
----------
PK_ClientKey
ClientNumber
...
Status
[DimDemographic]
-----------------
PK_DemographicKey
AgeGroup
Gender
Sexuality
...
HighestLevelOfSchooling
[FactSession]
-------------
PK_SessionKey
FK_ClientKey
FK_DemographicKey
的DimDemographic表將需要利用SCD Type 2來跟蹤隨時間變化的變化。這對我的要求是最好的方法嗎?
此外,我的客戶維度上有RegistrationDate和LastLoginDate列,在客戶端註冊但從未登錄的情況下,放入LastLoginDate字段的最佳值是什麼?像'1900-01-01'或NULL?
對不起,很長的文章,但希望我已經提供了足夠的信息預先感謝!
謝謝先生。 KAV。我認爲在DimClient中滾動人口統計數據是有道理的,但是我想知道我應該如何處理AgeGroup。我想在會議期間瞭解客戶的年齡組。我想我必須在ETL中引入邏輯,以便它看起來是否會在一年後發生新的Session,如果是這樣,則更新DimClient中的AgeGroup? – schone 2012-02-27 00:49:55
這裏有兩種方法,第一種假設ETL過程只能向前運行,即不需要重建一年前的AgeGroup。 ETL每天運行,並將彙總數據放在一邊。在這個方法中,你可以在DimClient中管理它。第二種方法和我的偏好是使用您使用過的表格結構,它將允許您隨時重建DWH,因爲數據將始終在源數據庫中正確編目。是否有意義? – itayw 2012-02-27 09:26:31
先生。 kav,有道理,我認爲我會繼續推進垃圾/迷你維度,但不會預加載所有數據,只加載顯而易見的獨特組合,否則我會加載數百萬*可能無關的數據。我知道,如果相關性較低,我不應該在垃圾/迷你維度中加載數據,但是想法是查看是否存在任何關聯。再次感謝! – schone 2012-02-27 09:43:51