資料蔣堂 | JOIN延伸 - 維度其它應用

資料派THU發表於2018-01-11

640?wx_fmt=png&wxfrom=5&wx_lazy=1

來源:資料蔣堂

作者:蔣步星

本文長度為1320,建議閱讀3分鐘

本文為你講解JOIN延伸之維度的其他應用。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

明確維度定義後,還可以換一種更清晰的方式來審視資料庫的結構。

這是我們常見的E-R圖:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

E-R圖是個網狀結構,實體(表)之間的外來鍵關係直接畫在圖上,當實體較多時這個圖就會顯得非常零亂,關聯線很隨意,任何兩個實體之間都有可能發生關聯,表現出來的資料結構耦合度很高。在增加刪除實體時就要考慮與之關聯的所有其它實體,很可能發生遺漏關聯或迴圈關聯的現象。

640?wx_fmt=png

而如果把維度抽取出來之後,我們可以使用匯流排式的結構圖:

640?wx_fmt=png

所有維度單獨列出來處於中心地位,實體(表)只和維度發生關聯,實體之間沒有直接的關聯線,資料結構的耦合度看起來很低。增加刪除實體時不會影響到其它實體,不會發生遺漏關聯和重複關聯。

不過,需要指出的是。無論是E-R圖還是匯流排圖,只要畫正確時,其中的關聯線數量是差不多的,這是資料本身的關係決定的。匯流排圖並不會比E-R中的關聯線更少,但改變了看待方法後會更清晰。

640?wx_fmt=png

為了提供關聯查詢能力,有些BI產品將表間關聯關係(相當於一個區域性E-R圖)直接暴露給業務人員,這不是個好辦法,業務人員難以理解E-R圖,這個方案的可用性很差。如果能夠由業務人員選擇了資料項(欄位)後就自動建立出合理的關聯,那樣可用性就能提高很多了。

有了維度概念,就可以一定程度地實現這一目標。

業務人員任意選擇了欄位之後,我們可以找出這些欄位所在表,再在這些表之間尋找同維欄位(優先選擇主鍵),然後使用這些同維欄位建立JOIN關係。當某個表上只有唯一的欄位和另一表的主鍵欄位同維時,那麼基於這兩個欄位建立的JOIN關係在絕大多數情況下都是正確合理的。而且,在資料結構不是特別複雜的時候,兩表之間只有唯一欄位同維的條件也常常能夠滿足,這時候就真地能只基於資料項自動建立正確的關聯關係,有些BI產品確實是這麼做的。

不過,這種辦法不能處理同表自關聯和表間有多個同維欄位的情況,以及多次遞迴關聯的問題。想要完善地解決問題,還是需要基於DQL語法來實現關聯。

640?wx_fmt=png

上面的討論中,我們會把發現的同維欄位JOIN起來,DQL語法也是這樣,只要同維的(廣義)欄位就可以JOIN。這樣的JOIN一定有業務意義嗎?

是的,只要是同維欄位,JOIN起來總能想出合理業務意義。反過來,也只有同維欄位之間可以JOIN,不同維欄位的JOIN是沒有業務意義的,不過SQL並不禁止,只要資料型別相同就可以JOIN。欄位同維和JOIN有業務意義是等價的,DQL在這方面可以確保這一點。

DQL中GROUP BY總是要對應著ON(如果單表可以看成是省略ON),也就是說,GROUP BY總是針對某個維度進行的。事實上也是這樣,針對測度的分組運算沒有業務意義,不過SQL並沒有明確出維度和測度的概念,也不會禁止這個運算。DQL則確保了不會發生無業務意義的分組。

利用這個特點,可以提高分組運算的效能。維度可能的取值是由維表長度決定的,而維表是事先知道的,這樣在分組時可以採用類似基數排序法的手段提速,當然,針對維度的排序運算也可以用這種辦法。不過,這個演算法細節與本篇主題相關性較低,這裡就不詳細說明了。

專欄作者簡介

640?

潤乾軟體創始人、首席科學家


清華大學計算機碩士,著有《非線性報表模型原理》等,1989年,中國首個國際奧林匹克數學競賽團體冠軍成員,個人金牌;2000年,創立潤乾公司;2004年,首次在潤乾報表中提出非線性報表模型,完美解決了中國式複雜報表製表難題,目前該模型已經成為報表行業的標準;2014年,經過7年開發,潤乾軟體釋出不依賴關係代數模型的計算引擎——集算器,有效地提高了複雜結構化大資料計算的開發和運算效率;2015年,潤乾軟體被福布斯中文網站評為“2015福布斯中國非上市潛力企業100強”;2016年,榮獲中國電子資訊產業發展研究院評選的“2016年中國軟體和資訊服務業十大領軍人物”;2017年, 自主創新研發新一代的資料倉儲、雲資料庫等產品即將面世。


資料蔣堂

《資料蔣堂》的作者蔣步星,從事資訊系統建設和資料處理長達20多年的時間。他豐富的工程經驗與深厚的理論功底相互融合、創新思想與傳統觀念的相互碰撞,虛擬與現實的相互交織,產生出了一篇篇的瀝血之作。此連載的內容涉及從資料呈現、採集到加工計算再到儲存以及挖掘等各個方面。大可觀資料世界之遠景、小可看技術疑難之細節。針對資料領域一些技術難點,站在研發人員的角度從淺入深,進行全方位、360度無死角深度剖析;對於一些業內觀點,站在技術人員角度闡述自己的思考和理解。蔣步星還會對大資料的發展,站在業內專家角度給予預測和推斷。靜下心來認真研讀你會發現,《資料蔣堂》的文章,有的會讓使用者避免重複前人走過的彎路,有的會讓攻城獅面對扎心的難題茅塞頓開,有的會為初入行業的讀者提供一把開啟資料世界的鑰匙,有的甚至會讓業內專家大跌眼鏡,產生思想交鋒。


往期回顧:

資料蔣堂 | JOIN延伸 - 維度查詢語法

資料蔣堂 | JOIN延伸 - 維度概念

資料蔣堂 | JOIN提速 - 有序歸併

資料蔣堂 | JOIN提速 - 外來鍵指標的衍生

資料蔣堂 | JOIN提速 - 外來鍵指標化

資料蔣堂 | JOIN簡化 - 意義總結

資料蔣堂 | JOIN簡化-消除關聯

資料蔣堂 | JOIN簡化 - 維度對齊

資料蔣堂 | JOIN運算剖析

資料蔣堂 | 迭代聚合語法

資料蔣堂 | 非常規聚合

資料蔣堂 | 再談有序分組

資料蔣堂 | 有序分組

資料蔣堂 | 非等值分組

資料蔣堂 | 還原分組運算的本意

資料蔣堂 | 有序遍歷語法

資料蔣堂 | 常規遍歷語法

資料蔣堂 | 從SQL語法看離散性

資料蔣堂 | 從SQL語法看集合化

資料蔣堂 | SQL用作大資料計算語法好嗎?

資料蔣堂 | SQL的困難源於關係代數

資料蔣堂 | SQL像英語是個善意的錯誤

資料蔣堂 | 開放的計算能力為資料庫瘦身

資料蔣堂 | 計算封閉性導致臃腫的資料庫

資料蔣堂 | 怎樣看待儲存過程的移植困難

資料蔣堂 | 儲存過程的利之弊

資料蔣堂 | 不要對自助BI期望過高

資料蔣堂 | 報表的資料計算層

資料蔣堂 | 報表應用的三層結構

資料蔣堂 | 列式儲存的另一面

資料蔣堂 | 硬碟的效能特徵

資料蔣堂 | 我們需要怎樣的OLAP?

資料蔣堂 | 1T資料到底有多大?

資料蔣堂 | 索引的本質是排序

資料蔣堂 | 功夫都在報表外--漫談報表效能優化

資料蔣堂 | 非結構化資料分析是忽悠?

資料蔣堂 | 多維分析的後臺效能優化手段


校對:林亦霖

為保證發文質量、樹立口碑,資料派現設立“錯別字基金”,鼓勵讀者積極糾錯

若您在閱讀文章過程中發現任何錯誤,請在文末留言,或到後臺反饋,經小編確認後,資料派將向檢舉讀者發8.8元紅包

同一位讀者指出同一篇文章多處錯誤,獎金不變。不同讀者指出同一處錯誤,獎勵第一位讀者。

感謝一直以來您的關注和支援,希望您能夠監督資料派產出更加高質的內容。

640?wx_fmt=jpeg

相關文章