SSAS的維度表之間的關係只能有乙個不能有多個

2022-02-06 18:53:38 字數 3319 閱讀 4025

我們在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

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.geographykey=geography.geographykey生效了,而customer.customerkey=geography.customerkey這個關係在上面的sql語句中根本沒有出現。。。

這說明雖然我們在customer表和geography表之間定義了兩個連線關係,但是在處理customer維度的時候只有乙個關係是起作用的,另乙個關係被ssas忽略了。所以維度表之間的關係不能有多個,有且只能有乙個。

現在我們將上面customer.geographykey=geography.geographykey和customer.customerkey=geography.customerkey從兩個關係合併為乙個關係如下

然後再次處理customer維度,檢視geography info屬性的sql語句如下

select

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])

)

很明顯這一次customer.geographykey=geography.geographykey和customer.customerkey=geography.customerkey這兩個連線關係都生效了,達到了我們預期的效果。

所以切記ssas中乙個維度中的多個表之間的連線關係有且只能有乙個,如果定義了多個連線關係實際上也只有乙個會起作用。

維度表,實體表,事實表之間的關係

這段時間在慢慢學習有關維度建模的一些東西,其中有個問題當時被老大挖了個坑就跳了進去幾天都沒爬出來,這個坑主要在於我對維度表,實體表,事實表這三種表之間的關係和概念認知比較模糊,當時老大要我去設計乙個關於裝置的維度和事實表及實體表出來時,結果我就真的去傻乎乎的對裝置進行各種維度表和事實表的設計,然後在...

維度表,實體表,事實表之間的關係

這段時間在慢慢學習有關維度建模的一些東西,其中有個問題當時被老大挖了個坑就跳了進去幾天都沒爬出來,這個坑主要在於我對維度表,實體表,事實表這三種表之間的關係和概念認知比較模糊,當時老大要我去設計乙個關於裝置的維度和事實表及實體表出來時,結果我就真的去傻乎乎的對裝置進行各種維度表和事實表的設計,然後在...

表與表之間的關係

最近領導一直在提 表之間關聯 資料的身份證 之類的我聽不懂的名詞 今天就總結一下,表之間的關係 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,...