0

我需要關於如何在我的數據倉庫中構建重疊日期範圍的幫助。我的目標是以允許日期級別過濾報表的方式對數據建模。使用自定義日期範圍存儲重疊日期範圍

我的尺寸 - DimEmployeeDimDate和一個叫FactAttendance事實。在這一事實的記錄被存儲如下 -

Fact Attendance

以圖形方式表示這一點 -

Leave Management System

報告需要出這個數據的創建,將允許最終用戶通過選擇日期範圍來過濾它。假設用戶選擇日期範圍D1到D20。在進行此選擇時,用戶應該看到值多少天至少有一名員工離開。在這個特定的例子中,我應該看到底部增加了淺藍色的部分,即11天。

我正在考慮的方法是每個員工每個日期爲每個葉子存儲一行。這種方法唯一的問題是,它會成倍增加事實表中的記錄數。此外,事實上還有其他欄目會有冗餘數據。

這樣的重疊日期/時間問題在倉庫中通常如何處理?有沒有更好的方式,不涉及插入多行?

回答

0

考慮造型的事實是這樣的:

fact_attendance (date_id,employee_id,hours,...) 

這將使你通過簡單的日期維度篩選回答你原來的問題,但你也將能夠處理像假信用問題,和分數休假日使用。

是的,它可能使用比第一個建議更多的存儲空間,但它是一個更好的尺寸表示,並且將滿足更多(潛在)的要求。

如果你真的擔心存儲 - 可能不是真正的擔心 - 使用列壓縮的DBMS,你會看到大量的磁盤節省。

我說「不是真正擔心」存儲的原因是您的儲蓄在當今的存儲世界中毫無意義。 1000名員工每年離開20天,超過5年將意味着總共100,000行。您的DBMS可能會執行RAM中的整個星形連接。即使是一百萬名員工,在壓縮之前也需要不到一兆兆字節。

+0

是的,這是我正在考慮的方法。但是,事實表中還有其他字段主要是與假期相關的度量標準,如果我將粒度增加到日期級別,則每個日期都會重複。這將產生處理措施中重複值的開銷。 –

+0

您能給出一個需要重複的假期相關度量示例嗎?這將有助於確定候選解決方案。 –

+0

那麼,必須重複的一些指標是* IsPreApproved *和* IsLeaveWithoutPay *,而其他一些適合具有日期粒度的表格如* IsCasualLeave *,* IsSickLeave *等 –