Sql-Server

CUBE 和計算維數

  • January 25, 2021

如果呈現的數據4-dimension中每個維度都依賴於分層的 3 級聚合,例如(國家、城市、街道),那麼我們可以將其總結為4096多種方式!

我們知道對於具有n維度的多維數據集,其中沒有一個維度是分層的,我們有2^n匯總方式,但在這種情況下,每個維度都有分層的 3 級聚合4^4=256方式。

為什麼上​​面的說法提到有4096辦法?

如果由於我的英語用法有缺陷而無法很好地說明我的問題,請參閱:

在此處輸入圖像描述

這是我的公式,但我的答案與 4096 大不相同!

在此處輸入圖像描述

似乎作為(年、月、週)給出的“分層維度”範例實際上與 3 個獨立維度相同 - 允許所有 8 種可能的組合 - 這意味著它們是獨立/正交的。

因此,如果您有 4 個這些三元組維度,則與 12 個獨立維度相同。

但無論如何,答案基本相同。

m 個獨立維度的 0 到 m 個可能選擇的可能組合的數量是二項式係數的總和,Wolfram 甚至有助於為我們簡化:

組合擴展( https://www.wolframalpha.com/input/?i=sum+m+choose+n+for+n+%3D+0+to+m )

這是 3 個維度的 8 種可能組合的來源,並說明了為什麼該列表包含具有 0 到 3 個元素的組合。

您也可以將其視為每個維度的二元選擇 - 我們知道您可以選擇包含或排除某個維度,因此您有 2 個選項來選擇是否包含每個維度,因此第一個有 2 個選擇, 2 代表第二個等等。所有這些的乘積是2 * 2 * ... = 2^n

所以對於 12 個維度,即2^124096。

如果您將其視為較胖的維度中的 4 個(基本上從二進制選擇到八進制選擇),則每個層次結構的產品組合數為 8,因此您有第一個“維度”的 8 個可能組合,結合第二個“維度”的 8 種組合,依此類推,8 * 8 * 8 * 8 = 8^4 = 4096您可以簡單地將其視為將 2 重新組合為 3 組。

我不想疏忽地指出,實際上,很多時候層次維度並不是以任意方式分組的,就好像組件維度是獨立的一樣。

畢竟,他們處於等級制度中是有原因的!

我注意到即使在(年、月、週)給出的範例中,(月、週)組合也很弱——因為我假設周是一年中的周數。這種匯總將持續多年,而幾週不能很好地適應幾個月,因此分析可能非常罕見。

在許多 3 層級的情況下,您只對分組 (d1, d2, d3)、(d1, d2)、(d1)、() 感興趣 - 永遠不要遺漏父級 - (國家、州、城市、 street, …) 就是一個很好的例子——一個真正的國家實體並不真正作為一個獨立於國家-國家組合的概念而存在。

歡迎來到 DBA.SE。這個問題更多的是一個數學問題,而不是一個數據庫問題。它可能更適合不同的站點。

然而,8 ^ 4 = 4096. 或者CUBE(3 級聚合)可能ROLLUP值的冪是可能變化的數量,即4096.

免責聲明

我不是數學家。如果你想要一個徹底的解釋,那麼你將不得不在不同的網站上發布。

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