Sql-Server

SSIS / SSAS:處理年齡列

  • October 5, 2017

我在表格中有一些代表年齡的列,取值從 0 到 100,還有 -1 表示“缺失值”。我不想將它們儲存為字元串以便能夠找到平均年齡等,但是 SSAS 預設將 0 變為 NULL,我也想將 -1 替換為 NULL,所以有經典的“重複屬性鍵”錯誤。

是否有適當的方法/類型來處理年齡值?

你在你的問題中混淆了兩件事。由於您聲明您有重複的屬性鍵錯誤,因此您將年齡表用作維度,但由於您還希望找到平均值,因此您將年齡表用作事實表。

當使用年齡作為維度時,您可能不希望軸上的每個年齡,因此通常所做的是將年齡劃分為桶並將桶儲存為字元串,這樣您就可以得到這樣的結果

+-------+--------+
|  Age  |  sales |
+-------+--------+
| <10   |      0 |
| 10-20 |    100 |
| 21-30 |    250 |
| 31-40 |    124 |
| 41-50 |   3598 |
| > 50  |    715 |
+-------+--------+

您可以在維度中使用離散化儲存桶,也可以在維度表中手動創建儲存桶。

但是,如果您也想平均年齡,我想您想查看某些維度的平均值(例如訂購產品 X 的人的平均年齡),因此您需要使用要報告的維度的鍵創建一個事實表然後定義事實表和維度表之間的關係

在同一個表中混合這兩個概念(維度和事實)會隨著時間的推移而導致頭疼,因此您應該在 ETL 過程中解決這個問題,或者在 SSAS 中的 dmv 中使用命名查詢。

引用自:https://dba.stackexchange.com/questions/187713