2015-05-12 19 views
-1

關係數據倉庫中的許多事實表將包含「主」日期以及其他日期。我應該如何在數據模型中指明這種優先級,以便構建在數據模型之上的應用程序默認將用戶引導至「主」日期?如何表明一個角色扮演日期維度是「主要」(更受歡迎)日期?

例如,在銷售事實表中,有一個「銷售日期」列是主要日期,但也是在報告中很少使用的「記錄日期」列。

另一個例子:WarehouseReceiving事實表有一個主要的「交貨日期」欄,也有一個很少使用的「交易入口日期」欄。

role-playing dimensions有一個關於如何模擬一個角色比其他角色更重要的約定嗎?

或者正試圖定義一個主要角色是一個壞主意,因爲它會在沒有自然「主要」角色的情況下混淆用戶?

如果問題重大,我們的平臺是SQL Server 2014,但問題的目的是平臺中立。

回答

1

角色扮演維度中沒有「主要」概念。

每個維度和角色都是出於商業原因。在你的情況下,sale_date和delivery_date看起來很重要,但也許你想質疑records_date和transaction_entry_date的作用,因爲它們可能不會在業務流程中扮演任何角色。

我們假設我們只有sale_date和delivery_date。哪一個更重要?都不是。都。這取決於撰寫查詢的人的觀點。

當處理包含多個日期的事實表時,我使用的一種技術是按照業務流程中的通常順序排列日期列。例如,date_ordered出現在date_shipped之前,它位於date_invoiced和date_paid之前。將日期列保存在一起並進行排序,可能有助於使臨時BI用戶熟悉數據。

+0

爲重複您的一些觀點而抱歉 - 我之前撰寫了大部分文章,但沒有機會發布。不過,希望這兩個答案都能爲OP和其他讀者提供一些東西。 –

+1

對我好,喬:) –

0

只要所有日期都明確命名或以其他方式標識給您的用戶,我不明白爲什麼您需要這樣做。如果從最終用戶的角度來看待這個問題,他們會認爲「同一類型的領域不止一次列出,所以現在我不知道是主要的「?我懷疑他們會認爲更像是「銷售發生的那一天我需要看銷售額......哦,銷售日期聽起來像我正在尋找的東西。」如果您遇到名稱確實不清楚的情況,那麼您可能需要採取進一步措施 - 無論是將其重命名爲與用戶達成一致,進行培訓還是設置文檔。

無論如何,您確實需要您的用戶瞭解所有維度的含義,而無需使用他們的事實表上下文。假設你把它放到一個SSAS立方體中;維度將獨立顯示,並可能跨越多個事實表,所以任何說一個是主要日期的可能是一個事實,而不是另一個事實。而且您可能會遇到一個用戶主要有興趣按銷售日期分析數據的情況,但另一個用戶主要有興趣通過記錄日期來分析數據。這是哪種情況下的主要日期?

如果您擔心自己無法將數據字段的含義傳達給用戶,請考慮設置數據字典。我不會鏈接到特定的教程,因爲我沒有驗證任何內容,而且似乎有不同的方法來執行此操作,但是如果您在Google上搜索數據字典SSAS,您會發現很多有關設置說明的建議您的多維數據集字段,然後在SSRS報告中顯示此信息。如果你不使用SSAS立方體作爲人們訪問數據的主要方式,那麼你可能需要做一些不同的事情,但希望這可以給你一個合適的解決方案的想法。

根據您傳播數據的方式,您還可以查看哪些字段可供哪些人使用 - 例如,如果他們使用報表生成器,則使用SQL Server中的權限,或者使用SSAS的觀點是否使用立方體。我不會這樣做,除非你的用戶抱怨他們以某種方式發現可用維度的數量有問題 - 但是如果有很多不相關的領域可能會讓人惱火併且減慢它們的速度(並且可能導致人們在某些情況下選擇了錯誤的字段),但您不想冒相關數據的隱患。