最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Power BI之DAX神功:第4卷第6回 理解DAX中的物理關系

2021-12-21 09:40 作者:孫興華zz  | 我要投稿

一、VertiPaq和DirectQuery存儲模式

跟我學過Access基礎篇的小伙伴,一定知道,數(shù)據(jù)庫中可以導入表,也可以鏈接表。

// 如果你在火力全開第1集沒聽我的,沒去學習且無基礎,那也就證明你不懂數(shù)據(jù)庫基本原理,雖然DAX原理有些地方有爭議性,是各抒己見的。但是很多不懂數(shù)據(jù)庫基本原理的人,直接學習DAX原理,甚至講出DAX原理,能犯下很多低級錯誤,而且造成這些錯誤的原理與DAX毫無關系,因為知識是相通的。

VertiPaq:就類似import導入表,簡單的說就是將表中的數(shù)據(jù)導入到PowerBI。(我這只是簡單的說)

DirectQuery:就類似鏈接表,數(shù)據(jù)還在數(shù)據(jù)源中,這里只是個影像。鏈接表就好比看電視,比如說你不喜歡這個明星,你把電視砸了,明天你買臺新電視,那個明星又出現(xiàn)了。

當然,VertiPaq和DirectQuery都是有原理而且還有復合模型的存儲模式,《權威指南》第17章有詳細講解,這牽扯優(yōu)化知識,我們會在不久將來《DAX神功》DLC優(yōu)化篇詳細講這部分的原理知識。

從2020.3~2021.12 我所有課程講的都是VertiPaq導入表。

截止2021年10月2日,微軟官網(wǎng)發(fā)布的PowerBI數(shù)據(jù)源,我摘抄了幾個常用源:

暫時只有SQL Server支持DirectQuery,但是這個數(shù)據(jù)是實時變化的,也許你看到這篇文章時,微軟做了調整,均實現(xiàn)了DirectQuery也說不定。因為Access都能以鏈接表方式連接Excel、TXT、CSV、Access等文件,PowerBI未來可期(也可能永遠都不支持)。

Ps: SQL Server也可以導入,有些人會問硬盤存不下怎么辦?SQL的查詢語句是干嘛的?14億中國人,我想分析某一個省的平均壽命,我應該到民政局調取這個省的記錄,而不是取14億中國人的記錄。但是,你確實要分析14億中國人的平均壽命,這時使用導入可能不合適了,DirectQuery會更快一些。DAX優(yōu)化既有對導入表的優(yōu)化,也有對DirectQuery的優(yōu)化。我們在不久將來的DLC中再做詳解。

在很多地方都可以看到表的存儲模式,例如在模型中鼠標懸停在紅卷之內:

友情提示:如果一張表是VertiPaq模式、另一張表是DirectQuery模式,這兩張表進行連線后必然影響查詢速度。在同一模式下就相當于是國內服務器之間訪問,不同模式下,就相當于是國內服務器訪問國外服務器。在建立關系時盡量避開不同模式下的連線。

二、強關系、弱關系直接決定擴展表

確定是強關系還是弱關系,要看兩點:

<1> 主鍵? ? ? ? ? <2> 存儲模式

簡單的說就一句話:有主鍵且在同一存儲模式下就是強關系,否則弱關系。

那強關系與弱關系有什么意義呢?弱關系擴展表就是自己原生列,不會有相關列!

擴展表原理詳見《DAX神功》第3卷第12回

Access基礎篇我們講過:主鍵要求:不為空,不重復,不易發(fā)生改變。

外鍵是相對存在的!什么叫相對,比如說A1單元格右邊的單元格、你前面的同學,比孫興華年齡小的人。說白了外鍵就是相對主鍵存在的。

大家都知道,三種表關系:1對1、1對多、多對多,我們分別來看一下他們是什么關系

如上圖所示,一對一關系,左表學號(主鍵)不為空不重復,連接右表學號(外鍵),只要兩張表存儲模式相同,就是強關系,否則是弱關系。

例如左表是導入表VertiPaq(假設是導入的Excel),右表是鏈接表DirectQuery(假設是鏈接SQL Server),兩張表是弱關系,左右表的擴展表都是自己本身,不會向一端延申。

否則如果兩張表都來自同一存儲模式,那就是強關系,左表擴展表包含右表所有列,右表擴展表也包含左表所有列。因為擴展表原理是向一端延伸

如上圖所示,一對多關系左表有主鍵,如果兩表在同一存儲模式下就是強關系,右表向左表(一端)擴展,但是左表不能向右表(多端)擴展。反之,如果兩表在不同存儲模式下,就是弱關系,弱關系下擴展表就是自己本身,不能向一端表延伸。

多對多關系,沒有主鍵,因為主鍵要求不為空不重復。無論是否在同一存儲模式下,都是弱關系,擴展表都是自己本身。因為我們在講擴展表原理時提到,擴展表只能向一端擴展,其原理是因為多對多關系沒有主鍵。

Ps: 有些人將左表學號說成主鍵,那是不對的。

三、因不滿足實時參照完整性產(chǎn)生的空行只會出現(xiàn)在強關系中

《DAX神功》第1卷第9回 我們講到了因為不滿足實時參照完整性,比如一端商品表中都是華為手機,但是多端銷售表中出現(xiàn)了小米手機,這就是不滿足實時參照完整性,我們在使用VALUES或ALL等函數(shù)時會產(chǎn)生空行。但是這只限于強關系的情況下。

怎么確定是強關系:<1> 有主鍵? ? ? ? ??<2> 在同一存儲模式下

當時我們在一對多關系下證明了,我跟大家說,一對一關系應該合并成一張表。如果你不合并,就是用原理,那么空行這件事,只看是不是強關系。下面我們用一對一來驗證:

如上圖所示,一對一關系有主鍵,同一存儲模式,強關系。

我們分別使用DISTINCT和VALUES測試空行問題:

返回結果:

總結:只要滿足強關系,當不滿足實時參照完整性時,使用VALUES和ALL等就會產(chǎn)生空行。

四、表關系之箭頭方向

【1】一對一關系,必須是雙向,你改不了單向箭頭

但是可以使用CROSSFILTER停用關系

【2】一對多關系,默認是單向箭頭,從一端指向多端。你可以手工改成雙向箭頭。

但是不推薦這么做,詳見《DAX神功》第1卷第2回

原理:雖然你兩張表之間保持了一對多關系,但是一旦你使用了雙向箭頭,這一條線路上,可能就形成了多對多關系,這樣就會出現(xiàn)您想不到的結果。如下圖所示:因為改變了表2與表3的箭頭方向,線路2中出現(xiàn)了多對多關系。

【3】多對多關系,可以選擇單向箭頭或雙向箭頭

在建立關系時,會彈出下面對話框,讓你選擇是哪張表篩選哪張表或者兩個表雙向篩選。

在這點上就有別于一對多關系,一對多關系使用單向箭頭時必須是一端篩選多端,但是在多對多關系中,由于兩張表都是多端,需要你手工指定誰篩選誰,或者是相互篩選。

五、多表確定強弱關系

表1與表2是強關系,因為有主鍵且同一模式。

表2與表3是弱關系,雖然有主鍵但不在同一模式。

《孫興華講PowerBI火力全開》PowerBI必學課程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》視頻版合集:

https://www.bilibili.com/video/BV1YE411E7p3

《DAX神功番外篇》文字版合集:

https://www.bilibili.com/read/readlist/rl478271

PowerBI(DAX函數(shù))、PowerQuery(M函數(shù))、Python辦公自動化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110

Power BI之DAX神功:第4卷第6回 理解DAX中的物理關系的評論 (共 條)

分享到微博請遵守國家法律
新乡市| 福泉市| 巴彦淖尔市| 通道| 隆化县| 化隆| 蓬溪县| 平顶山市| 根河市| 类乌齐县| 招远市| 阿尔山市| 乃东县| 乐清市| 绵竹市| 瑞金市| 八宿县| 潜山县| 罗城| 社会| 新闻| 台山市| 桑日县| 封开县| 蓝山县| 沂水县| 杭州市| 保亭| 石渠县| 长汀县| 崇文区| 墨竹工卡县| 南昌县| 疏附县| 儋州市| 全椒县| 合水县| 公主岭市| 普定县| 宁都县| 黑河市|