2016-05-31 42 views
0


是在我的情況

我設計的是在它的呼叫和電話數據的數據倉庫推薦的日期/時間維度。在我的事實表(其實電話)我有多個DATETIME領域,如CallStart, CallEnd, CallAnswered, CallRecordSaved,等...(所有這些都year, month, day, hour, minute, second

我的問題是,我應該保存這些領域DATETIME數據類型或者我應該引用它們到另一個表格(日期/時間維度),考慮到我打算生成DW中的多維數據集並計劃計算其中一些DateTime值之間的時間差。

您怎麼看?

+2

如果你想計算兩個值之間的差異,那麼我建議使用底層數據類型來存儲它們。必須使用維度表來區別是很麻煩的。 –

+0

@ GordonLinoff我同意,但我必須問,如果沒有日期/時間維度的分析會更重(例如:接到電話,按月,日等)。 – Fourat

+0

同意Gordon和Fourat。我將以CallStart作爲日期時間,然後將Duration作爲秒數。日期時間的所有好處,而無需計算每個聚合函數的持續時間 –

回答

0

我在過去做過的最重要的日期有一個日期/時間維度,然後有另一個維度(例如,在您的情況下稱爲「呼叫」),它存儲了整個日期的負載可能在一個地方有用。該維度不必包含日期表中的所有列,並且通常只包含那些額外屬性的日期/時間字段。

這給了你兩個世界中最好的一些,儘管它可能不適合每一種情況 - 它具有能夠將這些維度字段拉回到作爲日期/時間表的關鍵字的優勢,查看是否有必要,因此它在這方面具有前向兼容性。

1

我喜歡之前的評論,並同意你只需要在一個字段中做一個完整的維度 - callStart。但是你在看什麼通話量?每分鐘1次通話的平均值,每分鐘10次的平均值。您的峯值有多高?如果通話費率變化平穩,那麼你可以增加你的時間粒度。你需要同一維度的日期和時間嗎?你能把時間段和日期作爲單獨的維度嗎?與持續時間類似。把它作爲一個持續時間和一個桶值。您已經有通話開始的日期。 編輯 回到問題。我會存儲每個日期時間,但我只會將開始鏈接到一個維度。其餘的將可用於顯示但不導航

+0

我必須保存日期時間值(用於歷史目的),所以我沒有在ETL中進行任何計算。同時,我喜歡將CallStart引用到日期/時間維度並將其他字段作爲日期時間單獨維度的想法。此外,現在我每分鐘撥打100+電話(平均)並增長 – Fourat