我們在ssas中建立維度的時候,有時候可能乙個維度需要用到多個表的字段作為維度屬性,那麼這多個表之間勢必存在關聯關係,但是切記維度表之間的關聯關係有且只能有乙個不能有多個,下面我們來看乙個例子。
現在我們建立了乙個維度customer,由於該維度中的屬性除了用到customer表的字段以外,還要用到了geography表的字段,所以customer用到了兩個表。
但是customer表和geography表之間現在存在兩個依賴關係
其中乙個關係是customer.customerkey到geography.customerkey
另乙個關係是customer.geographykey到geography.geographykey
在理想狀態下我們認為在處理customer維度的時候,這兩個關係會作為customer表和geography表連線的條件同時生效,也就是說會有customer.geographykey=geography.geographykey and customer.customerkey=geography.customerkey這樣乙個關係存在。
但是實際情況是如何呢?
我們現在看一看customer維度的屬性geography info,它的keycolumns是customer表的geographykey欄位,namecolumns是geography表的city欄位,所以這個維度屬性實際上就同時用到了customer表和geography表
接下來我們處理customer維度,看看生成geography info屬性時的sql語句是怎樣的
生成geography info屬性時的sql語句如下
select我們驚訝地發現雖然我們前面在customer表和geography表之間定義了兩個連線關係,但是只有其中的customer.geographykey=geography.geographykey生效了,而customer.customerkey=geography.customerkey這個關係在上面的sql語句中根本沒有出現。。。distinct
[dbo_dimcustomer
].[geographykey]as
[dbo_dimcustomergeographykey0_0
],[dbo_dimgeography
].[city]as
[dbo_dimgeographycity1_0
]from
[dbo
].[dimcustomer]as
[dbo_dimcustomer
],[dbo
].[dimgeography]as
[dbo_dimgeography
]where
(
(
[dbo_dimcustomer
].[geographykey]=
[dbo_dimgeography
].[geographykey])
)
這說明雖然我們在customer表和geography表之間定義了兩個連線關係,但是在處理customer維度的時候只有乙個關係是起作用的,另乙個關係被ssas忽略了。所以維度表之間的關係不能有多個,有且只能有乙個。
現在我們將上面customer.geographykey=geography.geographykey和customer.customerkey=geography.customerkey從兩個關係合併為乙個關係如下
然後再次處理customer維度,檢視geography info屬性的sql語句如下
select很明顯這一次customer.geographykey=geography.geographykey和customer.customerkey=geography.customerkey這兩個連線關係都生效了,達到了我們預期的效果。distinct
[dbo_dimcustomer
].[geographykey]as
[dbo_dimcustomergeographykey0_0
],[dbo_dimgeography
].[dbo_dimgeographycity1_0]as
[dbo_dimgeographycity1_0
]from
[dbo
].[dimcustomer]as
[dbo_dimcustomer],
(select
[city]as
[dbo_dimgeographycity1_0
],geographykey as
[dbo_dimgeographycustomerkey1_1
],[geographykey]as
[dbo_dimgeographygeographykey1_2
]from
[dbo
].[dimgeography])
as[dbo_dimgeography
]where
(
(
[dbo_dimcustomer
].[customerkey]=
[dbo_dimgeography
].[dbo_dimgeographycustomerkey1_1])
and(
[dbo_dimcustomer
].[geographykey]=
[dbo_dimgeography
].[dbo_dimgeographygeographykey1_2])
)
所以切記ssas中乙個維度中的多個表之間的連線關係有且只能有乙個,如果定義了多個連線關係實際上也只有乙個會起作用。
維度表,實體表,事實表之間的關係
這段時間在慢慢學習有關維度建模的一些東西,其中有個問題當時被老大挖了個坑就跳了進去幾天都沒爬出來,這個坑主要在於我對維度表,實體表,事實表這三種表之間的關係和概念認知比較模糊,當時老大要我去設計乙個關於裝置的維度和事實表及實體表出來時,結果我就真的去傻乎乎的對裝置進行各種維度表和事實表的設計,然後在...
維度表,實體表,事實表之間的關係
這段時間在慢慢學習有關維度建模的一些東西,其中有個問題當時被老大挖了個坑就跳了進去幾天都沒爬出來,這個坑主要在於我對維度表,實體表,事實表這三種表之間的關係和概念認知比較模糊,當時老大要我去設計乙個關於裝置的維度和事實表及實體表出來時,結果我就真的去傻乎乎的對裝置進行各種維度表和事實表的設計,然後在...
表與表之間的關係
最近領導一直在提 表之間關聯 資料的身份證 之類的我聽不懂的名詞 今天就總結一下,表之間的關係 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,...