Power BI 重大更新:字段參數(shù)詳解 - 基礎(chǔ)篇
Power BI 在 5 月迎來了重大更新,其中一個點就是:字段參數(shù)。
雖說是一個點,且在官方說明的篇幅非常少,但是這個特性卻意義重大而深刻。我們會用不同的文章來說明這個特性的各種特點。
開啟字段參數(shù)
字段參數(shù),目前處于預(yù)覽狀態(tài),可以在 Power BI 的【文件】【選項】中打開,如下:

重啟 Power BI Desktop 即可使用。
預(yù)備知識
很多人在學(xué)習(xí) Power BI 的時候,其實是一知半解,體現(xiàn)在對基本的概念的把握上基本是亂的。包括很多教程也沒有準確用詞,導(dǎo)致大部分的底層邏輯是錯誤。
首先,要來明確幾個概念:
字段
表列
維度
度量值
參數(shù)
這幾個名詞,它們是什么關(guān)系,還是完全一樣,怎么說并不重要,通過實驗可以得出以下結(jié)論:
表列:基表的列。
維度:是一個邏輯上的概念,通常用某個表列來表示維度,用來觀察。
度量值:保存 DAX 計算邏輯的單元。
字段:表列或度量值的統(tǒng)稱。
注意:在 2013 年前,度量值叫計算字段,可見:在數(shù)據(jù)模型中,只有一類事物:字段。
記住這句話,就會領(lǐng)悟到一個重要思維:模型思維。其內(nèi)涵大致為:
抽象意義上的數(shù)據(jù)模型由維度構(gòu)成,而維度由字段構(gòu)成,完畢。
字段,分為兩種:
數(shù)據(jù)字段,保存了數(shù)據(jù)內(nèi)容。
計算字段,保存了計算邏輯。
在表格系統(tǒng)中,表列與數(shù)據(jù)字段等價;度量值與計算字段等價。
在 Power BI Desktop 的界面中,有這樣一個啟示:

對于分析師,要做的只有一件事,將字段拖拽出來放置到報表中,形成計算。
這里用字段一詞,并非巧合,因為其內(nèi)涵包括了:
表列,包括:來自基表(從外部數(shù)據(jù)源加載)的列,計算表的列。
度量值。
小結(jié):
抽象的維度模型等價于表格模型。
字段等價于:表列和度量值。
關(guān)于系統(tǒng)的理解和學(xué)習(xí)表格思維及模型思維,可以學(xué)習(xí)《BI 真經(jīng)》。
再來理解:什么是參數(shù)?
參數(shù)是一種可變量。
那么,字段參數(shù)則應(yīng)該具有內(nèi)涵:一種可變的字段。
根據(jù)上述對字段的描述,可以推論:
可變的字段就應(yīng)該包括:
可變的表列;
可變的度量值。
以上概念有嚴格的邏輯鏈條,請讀完本文再回來讀一遍。
很多伙伴學(xué)習(xí) Power BI,只是學(xué)習(xí)每一個技巧和函數(shù),那么必定是一種窮舉法,沒有核心,沒有體系,沒有框架,也沒有底層邏輯。
本文將展示如何根據(jù)以上概念,來推導(dǎo)【字段參數(shù)】可能或應(yīng)該具備的特性,并實驗證明。
整個過程希望大家可以學(xué)到三件事:
學(xué)習(xí)字段參數(shù)這個特性本身。
理解本小節(jié)所說的邏輯概念。
體會如何從理論框架指導(dǎo)實踐的整個過程來體會萬變不離其宗的感覺。
理解什么是字段參數(shù)
啟動了 Power BI Desktop 的預(yù)覽功能以后,就可以在這個位置找到字段參數(shù),如下:

先通過一個實驗來感受下。
用度量值構(gòu)造字段參數(shù)
可以將度量值構(gòu)建到一起,形成字段參數(shù),如下:

用表列構(gòu)造字段參數(shù)
可以將表列構(gòu)建到一起,形成字段參數(shù),如下:

值得注意的是:
這里用來自不同的表的表列放到一起構(gòu)建成字段參數(shù)。
字段參數(shù)的使用
字段參數(shù)構(gòu)建好了以后,其使用路徑是唯一的,非常容易,如下:

其效果如下:

表格的內(nèi)容,根據(jù)選擇的參數(shù),切換到了參數(shù)所在的內(nèi)容。
字段參數(shù)規(guī)律感悟
通過上述例子,以及預(yù)備知識,可以得到這樣的體會:
字段放入透視表是實際的。
字段參數(shù),允許用戶選擇不同的字段。
也就是說:
透視表實際使用的字段來自字段參數(shù)被選擇以后的結(jié)果。
以下逐步給出字段參數(shù)各種場景。
字段參數(shù) - 表列型
上述案例就是這樣的,不再重復(fù),具體如下:

字段參數(shù) - 度量值型
既然度量值也是字段,那么自然可以構(gòu)建由度量值構(gòu)成的字段參數(shù),如下:

總結(jié)為:

字段的平鋪展開
在上述實驗的過程中,很快就可以發(fā)現(xiàn)這樣的規(guī)律,如下:

如果用戶沒有選擇參數(shù)中的字段,則所有字段都將在透視表內(nèi)展開。
總結(jié)為:

字段參數(shù)內(nèi)部是什么樣
可以發(fā)現(xiàn),字段參數(shù)其實是一個計算表,內(nèi)容結(jié)構(gòu)大致如下:

包括了三列,分別是:
名稱
對應(yīng)度量值名稱
排序
這是常見的參數(shù)表結(jié)構(gòu)。
這里面涉及到一個新的 DAX 函數(shù),NAMEOF,顧名思義,它可以返回某字段(表列或度量值)的名字。
該計算表創(chuàng)建后,后兩者是隱藏狀態(tài),在表視圖中可以看到,如下:

可以看出這里的對應(yīng)關(guān)系,以及在中文本地化的時候的錯誤:
” 個訂單 “屬于嚴重的翻譯錯誤,可以猜測” 訂單 “的原單詞是” Order“,應(yīng)為” 排序 “的意思。
查看英文版,可以看到:

其含義分別為:
參數(shù)
參數(shù)字段
參數(shù)順序
字段參數(shù)改名
字段參數(shù)內(nèi)容的名字需要在 DAX 中修改,如下:
// 改名前:
字段參數(shù)_度量值 = {
( "SalesAmount", NAMEOF('View Calc'[SalesAmount]), 0),
( "SalesAmount G%", NAMEOF('View Calc'[SalesAmount G%]), 1),
( "SalesAmount PY", NAMEOF('View Calc'[SalesAmount PY]), 2)
}
// 改名后:
字段參數(shù)_度量值 改名 = {
("銷售額", NAMEOF('View Calc'[SalesAmount]), 0),
("銷售額 增長率 G%", NAMEOF('View Calc'[SalesAmount G%]), 1),
("銷售額 去年同期", NAMEOF('View Calc'[SalesAmount PY]), 2)
}由于改名屬于內(nèi)容,因此,不會對報表造成任何影響,這是我們希望的。
另外,不難推出由于在其中引用了度量值,度量值改名,也會動態(tài)隨著改名,這也不會造成任何影響。
也就是說,不論修改字段的名字還是參數(shù)字段內(nèi)容都會自動變化,報表不會受到影響。
如下:

混合形態(tài)
根據(jù)預(yù)備知識以及對字段參數(shù)的實驗,不難想到:
表列是字段;
度量值是字段;
字段參數(shù)凡是字段都可以用。
那是否可以將表列和度量值混合到一起,成為一個字段參數(shù)呢?答案是肯定的。
如下:

這不禁有些讓人震撼,居然還能這么玩。
字段參數(shù)理論小結(jié)
通過以上實驗,不難得到這樣的認知:
字段包括表列和度量值。
字段參數(shù)可以通過三種形式構(gòu)造:
純表列構(gòu)造;
純度量值構(gòu)造;
混合表列與度量值構(gòu)造。
構(gòu)造完畢的字段參數(shù)可以在 DAX 中改名,不會影響報表內(nèi)容。
報表中透視表使用的字段參數(shù),將隨著用戶的選擇,動態(tài)決定實際參與的表列或度量值。
多個字段會默認平鋪展開。
以上,我們沒有做任何一件與業(yè)務(wù)有關(guān)的事,完全在一個抽象層面來實驗和認知這個特性。其過程為:
基于模型的理論框架,萬變不離其宗。
推測新特性具備的特征。
展開實驗,驗證想法。
歸納總結(jié)。
整個過程雖然沒有創(chuàng)造業(yè)務(wù)價值,但這為構(gòu)建業(yè)務(wù)價值提供了不變的底層邏輯。
接下來看看可以做哪些有意思的事情呢?
應(yīng)用一:動態(tài)坐標軸
在很久以前我們構(gòu)造過:日期切換,動態(tài) ABC 分析的維度切換,其邏輯特點都是:坐標軸被動態(tài)賦予了內(nèi)容。
用日期維度進行切換構(gòu)建字段參數(shù)如下:

應(yīng)用二:全動態(tài)圖表
既然坐標軸可以是動態(tài)的,不難想到:
圖表的構(gòu)成的本質(zhì)是:字段。包括:
用作軸的字段:數(shù)據(jù)字段。
用作圖例的字段:數(shù)據(jù)字段。
用作指標的字段:度量值。
將以上三者全部構(gòu)建成字段參數(shù),那就可以在報表運行時,實時決定:
用哪個維度作為坐標軸;
用哪個維度作為圖例;
用哪個度量值作為指標。
構(gòu)建字段參數(shù)如下:

作圖如下:

其效果為:

應(yīng)用三:全面動態(tài)圖表
作為動態(tài),更徹底的表現(xiàn)在:
軸動態(tài)
圖例動態(tài)
指標動態(tài)
圖表類型動態(tài)
效果如下:

至此,字段參數(shù)可以帶來的動態(tài)性就全部展示無遺了。
應(yīng)用四:動態(tài)矩陣
我們知道,圖表的本質(zhì)是矩陣,那么也可以利用字段參數(shù)來構(gòu)建全動態(tài)的矩陣,也就是:
矩陣的行頭動態(tài);
矩陣的獵頭動態(tài);
矩陣的指標動態(tài)。
效果如下:

矩陣的維度和指標計算均可以動態(tài)賦予。那么,矩陣就全面動態(tài)化了。
再探究計算原理
問題來了,我們知道矩陣的字段是一種計算,那么該字段參數(shù)是如何參與計算的呢。如下:

用戶有兩種選擇:
顯示所選字段。將顯示目前正在參與計算的實際字段。
顯示所選字段的值。將計算實際字段并顯示計算結(jié)果。
二層抽象
對于字段參數(shù)來說,其本質(zhì)是實現(xiàn)了二層抽象。
第一層抽象是字段本身。
例如:銷售額是 1000 元是一個具體的值,但度量值 [Sales] 對其進行了抽象,銷售額是多少,不知道,但該度量值會實時計算出來的。
第二層抽象是字段參數(shù)。
例如:銷售額是一個度量值,但字段參數(shù)【字段參數(shù)_指標】進行了抽象,到底是哪個度量值,不知道,但運行時會根據(jù)用戶的選擇,先決定用什么度量值,再根據(jù)現(xiàn)場的環(huán)境計算出實際的結(jié)果。
因此,字段參數(shù)的魅力在于:二層抽象(二次抽象),或者叫:再抽象。
抽象思維,是一種非常非常非常非常重要的人類獨有的思維模式。值得重點指出。
知道:1 + 1 = 2;8 + 5 = 13;進行了抽象以后,變成了:a + b。
因此,初中所學(xué)習(xí)的代數(shù),其本質(zhì)在于對算術(shù)的一層抽象。
代數(shù),顧名思義,用字母代替數(shù)字,簡稱:代替數(shù)字,再簡稱:代數(shù)。這就是” 代數(shù) “的本質(zhì)。
在這里,我們可以充分感受到這種抽象的力量和魅力。
如果小伙伴的初中數(shù)學(xué)還不錯,那么,本文內(nèi)容是非常簡單的。
但是小伙伴的抽象思維如果受到了損傷,那么,本文可能就會看不懂了。其本質(zhì)在于:抽象思維能力不健全,受到了損傷了。
怎么辦呢?肯定不適合再回去和兒子一起學(xué)習(xí)代數(shù)了。那么可以正確的學(xué)習(xí)和使用 Power BI,來實現(xiàn)三個目的:
學(xué)會 Power BI,駕馭數(shù)據(jù)分析;
提升個人競爭力,超越其他二;
修復(fù)抽象思維能力。
那么在哪里可以學(xué)習(xí)這樣的 Power BI 知識呢?可以學(xué)習(xí)與眾不同的《BI 真經(jīng)》。
更改參數(shù)字段
問題來了,如果希望修改參數(shù)字段,怎么辦?例如希望增加一個字段或刪除一個字段。
在 Power BI 中是無法通過界面做到的。但可以直接在計算表中編輯,如下:
圖表_指標 = {
("銷售額", NAMEOF('View Calc'[SalesAmount]), 0),
("銷售增長率%", NAMEOF('View Calc'[SalesAmount G%]), 1),
("利潤", NAMEOF('View Calc'[Profit]), 2),
("利潤率%", NAMEOF('View Calc'[Profit%]), 3),
// 增加一條:
("銷售額去年同期", NAMEOF('View Calc'[SalesAmount PY]), 4)
}這個結(jié)構(gòu)非常簡單容易理解,所以可以照抄復(fù)制改寫即可。
也就是說:
可以從界面操作來生成字段參數(shù),也就是生成這個計算表;
但是卻不能根據(jù)已經(jīng)生成的計算表內(nèi)容來反向推導(dǎo)得到界面再修改。
通常這樣的結(jié)構(gòu)都說明了一個問題:
界面僅僅是用來生成代碼的方式,卻無法從代碼重構(gòu)出界面。
這進一步說明了:
參數(shù)字段的本質(zhì)是一個計算表。而界面僅僅是在生成這個計算表而已。
只不過,這個計算表有些特別而已。(會在后續(xù)文章再介紹。)
無法獨立構(gòu)建
如果說字段參數(shù)的本質(zhì)是計算表,且其結(jié)構(gòu)似乎很容易理解,那么,可以自己構(gòu)建一個。
如果你進行這個實驗,你會發(fā)現(xiàn)這樣的結(jié)論:
可以構(gòu)建出完全一樣的計算表;
但卻沒有這種特性。
問題來了,為什么只有用 Power BI 界面功能構(gòu)造的這個計算表才有用呢?
有兩種可能:
字段參數(shù)不僅僅是計算表。
字段參數(shù)是計算表,但發(fā)生了更復(fù)雜的情況,未知。
關(guān)于這個話題,我們知道普通用戶無法獨立構(gòu)建,必須借助界面構(gòu)建就可以。至于到底是什么原因,超越了本文的范圍,我們會專門做一個專題來講解。
再論字段參數(shù)平鋪展開
需要注意的是:字段參數(shù)平鋪展開,是一個很特別的特性。值得一提。
在本文的實驗中中,已經(jīng)見到了這種情況,如:

當字段參數(shù)不做出任何選擇的時候,在矩陣中會平鋪展開。也就是說,
將一個字段參數(shù)的字段,注意用詞:字段參數(shù)的字段,放入表中,會自動展開成多個字段。
重點在于:一變多。一個字段變成了多個字段,且是并行展開。
請理解這個特性,未來在很多場景會繼續(xù)用到這個特性。
字段參數(shù)應(yīng)用小結(jié)
至此,已經(jīng)可以很順暢的使用字段參數(shù)了。這里總結(jié)一些要點:
字段參數(shù)必須且只能通過界面構(gòu)建生成。
構(gòu)建字段參數(shù)時無需編寫 DAX,可以直接生成。
字段參數(shù)讓用戶決定實際使用的字段,實現(xiàn)了再抽象。
可以實現(xiàn):動態(tài)維度和動態(tài)計算的特點。包括:
動態(tài)坐標軸
動態(tài)圖例
動態(tài)指標
動態(tài)矩陣
疑惑與混淆
對于普通用戶,剛剛接觸不久,會有以下疑問:
字段參數(shù)效果和 SWITCH TRUE 類似,但區(qū)別是什么
字段參數(shù)效果和計算組類似,但區(qū)別是什么
先給出一個結(jié)論:
從原理上,
SWITCH TRUE 結(jié)構(gòu),計算組,字段參數(shù)是三種完全不同的實現(xiàn),它們在某些場景有類似效果,但在某些場景又有各自的優(yōu)勢,彼此無法替代。
本文做簡單說明,具體探討,會單獨后續(xù)文章再做說明。
與 SWITCH TRUE 的不同
如果要實現(xiàn)指標的切換,還可以用 SWITCH TRUE 的方法,但字段參數(shù)與之不同。
一個明顯的不同在于:
用 SWITCH TRUE 的時候僅僅是一個度量值,返回一個結(jié)果一個格式。往往在值和率的格式上成了痛點。
而字段參數(shù)則不同,它可以完美地返回值或率且不需要編寫任何 DAX 就可以直接實現(xiàn)相同效果。
在這一點上,字段參數(shù)的確就可以解決以往地問題了。但并不是說字段參數(shù)就比 SWITCH TRUE 結(jié)構(gòu)更好,在某些場景下,必須用 SWITCH TRUE。后續(xù)文章再做說明,但你可以記住,如果你無法用字段參數(shù)實現(xiàn),那就是用考慮 SWITCH TRUE 結(jié)構(gòu)的時候了。
與 計算組 的不同
字段參數(shù)與計算組也是完全不同的。計算組在運行時改變計算;而字段參數(shù)是動態(tài)決定計算什么。
具體的討論也會放在后續(xù)文章再做展開。
也就是說,字段參數(shù),SWITCH TRUE,計算組三者是完全不同的。這些具體的不同和本質(zhì)在哪里,我們在后續(xù)文章再做說明。
Excel 無法使用
有的伙伴會問:字段參數(shù)到底是一個模型層的功能,還是一個界面層的功能?
這個問題是相當本質(zhì)的。這里給出結(jié)論先:字段參數(shù)是一個界面層的功能,數(shù)據(jù)模型中的計算根本不知道發(fā)生了什么。
一個可以證明這個觀點的實驗就是,在 Excel 中使用字段參數(shù)是完全不可用的,如下:

這說明,數(shù)據(jù)模型的引擎無法給 Excel 提供相應(yīng)的計算支持。進而說明,字段參數(shù)是一個特定于 Power BI 界面層的功能,而不是數(shù)據(jù)模型或引擎的功能。
總結(jié)
可以總結(jié)一下了。
本文從概念,原理,實驗,應(yīng)用,差異對比等方面對字段參數(shù)做了詳解的介紹,現(xiàn)在是時候動手自己操作再重讀和消化本文了。然而,本文是字段參數(shù)詳解的基礎(chǔ)篇,文本留有幾個重要內(nèi)容需要再做單獨說明。
但從普通用戶的應(yīng)用上來說,本文足以指導(dǎo)完成所有可行的操作以及知道哪些操作是不可行的。
當然,很多高級用戶對于字段參數(shù)還會存在更多深度好奇以及復(fù)雜應(yīng)用的需求,這些我們也將在后續(xù)講解。
最后,有小伙伴問,微軟剛剛發(fā)布這個特性,市面上沒有任何文檔,那是怎么在短時間內(nèi)完全駕馭到這么細的呢?答案很簡單,正確地學(xué)習(xí) Power BI 就會形成一個體系;Power BI 再發(fā)布的幾乎任何特性都是對已有思維框架某些細節(jié)的再實現(xiàn)以及對一些不完美的補充而已。Power BI 的技術(shù)學(xué)習(xí)已經(jīng)完畢,盡在《BI 真經(jīng)》。
沒有看懂?不要緊,不要錯過直播哦
在訂閱了BI佐羅講授的《BI真經(jīng)》之《BI進行時》課程區(qū),除了可以下載本文案例,還可以觀看視頻講解。

Power BI 終極系列課程《BI真經(jīng)》

BI真經(jīng) - 讓數(shù)據(jù)真正成為你的力量
掃碼與精英一起討論 Power BI,驗證碼:data2022
點擊“閱讀原文”進入學(xué)習(xí)中心
↙
