編者按在我學(xué)習(xí)Tableau過程中,詳細級別表達式是最大的攔路虎。這篇博客,最早寫于2018年8月,一年時間做了幾次重大修改,并增加了續(xù)篇。
LOD 表達式是 Tableau 學(xué)習(xí)過程中特別重要的一關(guān),邁過去,Tableau 的可視化可以變化無窮,根據(jù)需要產(chǎn)生非常多的變化。對于缺乏 BI 基礎(chǔ)的初學(xué)者而言,理解詳細級別表達式的難點不在于語法,而在于充分理解它的背景知識(詳細級別、聚合度、顆粒度)和它在可視化分析中的位置(多種詳細級別的對比)。近期重新梳理自己的學(xué)習(xí)過程,把幾個重點的節(jié)點做分析,希望幫到更多的 Tableau 學(xué)習(xí)者。
注:非特別說明,“詳細級別表達式”、“LOD 表達式”均指 Fixed、Include 和 Exclude 三種 LOD 表達式。
理解詳細級別與詳細級別表達式
一1詳細級別、聚合度、顆粒度
理解詳細級別表達式(LOD Expression),首先要理解什么是詳細級別(LOD=Level of Detail)。詳細級別是數(shù)據(jù)聚合度/顆粒度的層次,英文簡單易懂,Level of Detail;不同的 Level,代表不同的數(shù)據(jù)聚合度、不同的顆粒度。Tableau 通過把維度字段、系統(tǒng)自定義的表達式加入到視圖,從而決定視圖數(shù)據(jù)的詳細級別,之后通過預(yù)設(shè)的視圖表達出來。
維度、系統(tǒng)預(yù)設(shè)的表達式(比如表計算)、用戶自定義的表達式(比如自定義的集合字段、LOD 表達式)本質(zhì)上返回的都是一個數(shù)據(jù)集合,這些數(shù)據(jù)集合的詳細級別,通過不同的視圖表達出來。
如何理解上述的過程?為此,我們先要了解何為聚合度和顆粒度。不同于面向行數(shù)據(jù)的 Excel,Tableau 面向大數(shù)據(jù)的數(shù)據(jù)分析和展現(xiàn),因此我們所看見的數(shù)據(jù)絕大多數(shù)都是聚合的,這就需要我們非常熟悉每個視圖代表的數(shù)據(jù)的聚合程度。這個聚合程度在 Tableau 中用聚合度 Aggregation 或者顆粒度 Granularity 表示。
在 Excel 中,看數(shù)據(jù)明細;在 Tableau 中,看數(shù)據(jù)的聚合程度。
Tableau 的不同的 LOD 詳細級別,對應(yīng)的是不同數(shù)據(jù)的聚合度和顆粒度。
我們換一個形象的說法來表達什么是“詳細級別”、聚合、顆粒度。
假定全公司的 HR 薪酬數(shù)據(jù)是一座冰山,上面是尖尖的數(shù)據(jù)之巔,下面是沉沒在海平面之下的詳細到每個人、每天、每項工作的薪酬計算的龐雜數(shù)據(jù)。通過下面的圖,我們可以形象地設(shè)想,冰山之巔,就是聚合度最高、顆粒度最低的數(shù)據(jù),也是詳細級別最低的數(shù)據(jù),比如總公司、全年度的薪酬發(fā)放金額——可能僅僅是一個絕對值數(shù)字而已(數(shù)值完全聚合,不能再進一步聚合,可以理解為一個散點圖中的一個點)。而越往下,數(shù)據(jù)的聚合度越低,顆粒度最高,數(shù)據(jù)的詳細級別也就最高,最高顆粒度的數(shù)據(jù)可能是員工的考勤數(shù)據(jù)和發(fā)放明細(數(shù)值完全解聚)。
數(shù)據(jù)可視化和分析的過程,伴隨著數(shù)據(jù)不斷的聚合和解聚,以及數(shù)據(jù)詳細級別的變化。這就是可視化分析的魅力。
在 Tableau 中,每增加一個維度,就意味著數(shù)據(jù)的詳細級別在向下移動,在視圖中的標(biāo)記就會增加,比如說,我們在部門、實發(fā)金額的基礎(chǔ)上增加其他維度到視圖中,視圖中的標(biāo)記就會越來越多,數(shù)據(jù)顆粒度、詳細程度越來越高。比如下面的圖片,每增加一個維度或者度量字段,數(shù)據(jù)的詳細級別就會從上向下移動,數(shù)據(jù)的顆粒度就會增加一層。
維度 | 度量 | 說明 |
部門 | 實發(fā)金額 | 各部門實發(fā)金額的對比 |
部門、薪酬分類 | 實發(fā)金額 | 各部門、各個薪酬分類的實發(fā)金額聚合 |
部門、薪酬分類 | 實發(fā)金額、實付金額 | 各部門、各個薪酬分類中實發(fā)金額和實付金額的聚合 |
部門、員工、薪酬分類 | 實發(fā)金額、實付金額 | 各部門、各個員工,各個薪酬分類中實發(fā)、實付金額聚合 |
分月、部門、員工、薪酬分類 | 實發(fā)金額、實付金額 | 各個月份中,各部門、各個員工,各個薪酬分類中實發(fā)、實付金額聚合 |
在 Tableau 中,如何判斷操作能引起“視圖詳細級別”(Viz Level of Detail)的變化?最簡單的方法就是看視圖中標(biāo)記的數(shù)量。
通常,只要把維度字段或者集字段拖入到視圖,Tableau 會根據(jù)“可視化詳細級別”(Viz LOD)對數(shù)據(jù)進行聚合,從而引起詳細級別的變化。(PS:維度字段拖入到篩選器、工具提示中,可視化的數(shù)據(jù)范圍等會發(fā)生變化,但是不會引起詳細級別變化。)
2
冰山之喻與詳細級別表達式(LOD Expression)
在理解了聚合度、顆粒度之后,我們看一下 LOD Expression 的必要性。
針對上面數(shù)據(jù),我們問的每個問題,都對應(yīng)著一個或者多個 Level of Detail。
簡單的問題,比如“看一下各部門年度薪酬總額的對比”,這是一個 Level 的數(shù)據(jù),用柱狀圖可視化,每個柱代表一個部門,通過看高矮對比金額的差異。
如果問題難一點,比如說,“看一下各部門中員工平均薪酬的對比”,繼續(xù)使用柱狀圖,柱子依然代表部門,高度代表什么呢?代表員工平均薪酬??墒瞧骄匠晷枰蕾囉诿總€員工的薪酬總額取平均,這個問題的詳細級別 Level of Detail 和之前的部門薪酬不在一個級別 Level 上。因此,這個可視化包含了兩個不同顆粒度的數(shù)據(jù):每個員工的薪酬總額、部門的薪酬平均。這就意味著,我們不能通過一次操作來完成,而需要使用額外的方法增加另一個數(shù)據(jù)級別。一個視圖默認是一個詳細級別(Level of Detail),當(dāng)我們需要展現(xiàn)兩個 Level of Detail 時,就需要用到 LOD Expression。LOD 表達式幫助我們解決一個視圖中包含多個詳細級別的問題。
LOD 表達式的作用是什么?借用上面的冰山的比喻,抽象地說明什么是 LOD Expression。數(shù)據(jù)是整座冰山,冰山中有我們能看到的各種要素(比如部門、員工、日期等),可視化的部分是在海平面之上的部分。最簡單的可視化方式就是把冰山下的要素直接“拖拽”到上面,不管加入多少要素,最終 Tableau 會確定性的返回對應(yīng)的一個詳細級別。而遇到上面的復(fù)雜問題,我們需要在 Tableau 返回的確定性的詳細級別之外,引用另一個詳細級別的數(shù)據(jù),同時不想讓這個詳細級別的要素(維度)出現(xiàn)在可視化的層面,應(yīng)該如何?
這時Tableau LOD提供了一個上升或者下降的通道,實現(xiàn)了“引用但不可見”(比如 Include),或者“可見但局部不引用”(Exclude),甚至可以不受視圖和維度篩選影響,直接使用fixed指定引用?!耙玫豢梢姟保褪鞘褂肔OD表達式,可以(在目前的維度基礎(chǔ)上)引用冰山一下的字段,讓它直接的出現(xiàn)在可視化中,同時不影響可視化原有的框架表達。同樣,也就出現(xiàn)一個下降的通道,可以把部分不需要的字段,通過 Exclude排除掉,同時又不影響冰上可見的部分。
Tableau 詳細級別的多種類型與詳細級別表達式
二
上面我們介紹了什么是詳細級別,也簡要介紹了詳細級別表達式的作用。這里我們需要特別強調(diào)的是,詳細級別表達式,并不是獨占詳細級別(LOD)這個詞匯!在 Tableau 中存在多種詳細級別,理解它們的相互區(qū)別和聯(lián)系,才能更好的理解詳細級別表達式的作用。
簡單的說,“詳細級別表達式”,只是用來更清晰地處理有關(guān)詳細級別問題的一種表達式。處理什么問題?處理在一個可視化視圖中包含多個數(shù)據(jù)詳細級別的問題(多個詳細級別,意味著多個數(shù)據(jù)聚合度/顆粒度)。
LOD Expressions represent an elegant and powerful way to answer questions involving multiple levels of granularity in a single visualization.
LOD 表達式是回答有關(guān)單一視圖中包含多個數(shù)據(jù)顆粒度級別問題的,簡潔而強大的方法。
1
Level of Detail 詳細級別的多種類型
在介紹 LOD 表達式的類型之前,我們先看看 Tableau 有哪些重要的“詳細級別”類型。以我目前有限的理解,Tableau 有三種主要類型的數(shù)據(jù)詳細級別,結(jié)合下面的圖片,可以看到它們各自的位置。
Table Calc Level of Detail(表計算詳細級別)
Viz Level of Detail (視圖詳細級別,Viz=visualization 視圖)
Row Level of Detail(行級別詳細級別)
這些詳細級別和數(shù)據(jù)的聚合度、顆粒度對應(yīng);越往上,對應(yīng)的聚合度越高、顆粒度越低。我們最常見的是視圖詳細級別,表計算是在視圖詳細級別基礎(chǔ)上的二次計算,因此它的聚合度不會低于視圖級別;而視圖詳細級別是行級別的聚合,因此聚合度高于行級別。
我們可以通過兩個散點圖代表兩個極端,當(dāng)散點圖默認只有一個點的時候,詳細級別就是下圖左上角的位置——數(shù)據(jù)完全聚合,最低的顆粒度,最低的詳細級別;當(dāng)數(shù)據(jù)解聚,所有的數(shù)據(jù)點都轉(zhuǎn)化為數(shù)據(jù)點,就是右下角的位置——數(shù)據(jù)完全解聚,最高的顆粒度,最高的詳細級別。
這里有一個關(guān)鍵的問題:為什么是三種,而不是包含“詳細級別表達式”的四種詳細級別?這是我這個小白花了很久才明白的事情:
“LOD 表達式”本身不是一種詳細級別,而是一種關(guān)于 LOD 的語法表達式,它不會脫離當(dāng)前的視圖詳細級別而單獨構(gòu)建視圖;通過它,在原有的“視圖詳細級別”基礎(chǔ)上,增加新的詳細級別數(shù)據(jù)。理解了這一點,是理解 LOD Expression 在可視化分析中位置的關(guān)鍵要點。
為了更好的理解,我們在上圖的基礎(chǔ)上增加了 LOD 的示例圖,這里要特別注意兩條藍色的線條,它的意思可以理解為,把 LOD 表達式生成的結(jié)果返回到視圖層面,從而完成 LOD 表達式的使命——在一個視圖中提現(xiàn)多個詳細級別的數(shù)據(jù)。
2
LOD 詳細級別表達式的作用
我們了上面介紹了理解詳細級別的基礎(chǔ)概念:顆粒度和聚合度;并分析了多種詳細級別和詳細級別表達式的位置。如果用一句話,通俗的講解 LOD 表達式,不妨用這句話來概括。 “如果分析過程中需要添加一個維度,其明細程度高于或者低于已有視圖的可視化明細程度,但又不希望改變現(xiàn)有圖形展示內(nèi)容,可采用詳細級別表達式功能?!?/p>
相比之下,英文的介紹理解起來稍微有點生澀。官方如此介紹:
詳細級別表達式(LOD Expression)提供了對視圖詳細級別(Viz)之外的數(shù)據(jù)計算聚合的簡單方法,實現(xiàn)在可視化中以任意的方式組合這些數(shù)據(jù)。
Level of Detail Expressions provide a way to easily compute aggregations that are not at the level of detail of the visualization. You can then integrate those values within visualizations in arbitrary ways.
如果要深刻地理解 LOD 的作用,一個很好的方法是查看“15 大詳細級別表達式”查看 LOD 可以實現(xiàn)的功能。比如說:
o客戶訂單頻率;
o陣列分析
o新客戶爭取率
o各個銷售代表的平均最大額交易數(shù)額
o對比銷售分析
為了讓更多的人能更好的看懂 LOD 的實際用法,我還結(jié)合 LOD 的官方指南和分析方法,做了 15 大 LOD 表達式用法的中文解讀。
理解詳細級別表達式的關(guān)鍵經(jīng)驗
三
在理解上述的背景知識之后,就可以認真學(xué)習(xí)詳細級別表達式的語法規(guī)則了,官方的白皮書講述的非常清晰。我在這里補充幾個關(guān)鍵點,尤其對于初學(xué)者大有益處。
1
大括號的語法意義{}
在這里特別需要說明的一個概念是:數(shù)組。它代表的是一組數(shù)的集合,比如班級中每位同學(xué)的身高組成一個數(shù)組。在數(shù)學(xué)中經(jīng)常中經(jīng)常用大括號表示,Office 的表格也是用大括號。
比如,用這樣的一個數(shù)組表示五名同學(xué)的身高: {1.69,1.70,1.61,1.81,1.73}。
這是 Tableau 官方教程和幫助文章中,應(yīng)該給初學(xué)者說明的事情,畢竟大部分業(yè)務(wù)出身來學(xué)習(xí) Tableau 的人沒有這方面的基礎(chǔ),比如像我。
理解了這個,就明白了為什么總是提示“聚合和非聚合不能混合”,為什么 Fixed LOD 結(jié)果可以作為維度,為什么詳細級別表達式可以計算每個顧客的平均消費金額。
簡單的說,{Fixed [year] : Sum([sales])} 這個表達式,返回的結(jié)果是 {1,2,35,499,99} 這樣的一組數(shù)據(jù),而不是我們習(xí)以為常的一個靜態(tài)數(shù)值。
數(shù)組不能和數(shù)值求
LOD 的大括號
2LOD 表達式在 Tableau 操作中的位置
在理解詳細級別表達式的語法之后,還需要結(jié)合三種表達式在 Tableau 操作順序中的位置,才能選擇合適的表達式解決實際的問題。
Fixed 可以理解為絕對表達式,它返回的數(shù)組僅和語法指定的維度有關(guān),與視圖無關(guān),因此特別適合做計算字段并參與到復(fù)雜的運算中;而 Include 和 Exclude 可以理解為相對表達式,它們一方面受限于視圖中已有的維度,另一方面受限于語法中指定的維度。
特別重要的是,F(xiàn)ixed LOD 表達式先于維度篩選器,這就意味著如果要時計算結(jié)果免于篩選器的影響,就要使用這個類型;而 Include 和 Exclude LOD 表達式要受限于視圖中的維度,因此操作順序就要低于維度篩選器。
比如,在下圖的 {Min(Profit) } 增加了篩選器,你發(fā)現(xiàn)僅保留 2017 年數(shù)據(jù)時,{Min(Profit) } 結(jié)果依然是存在于 2016 年的最小值 1 。
和 Fixed 特立獨行的絕對不同,Include 和 Exclude 是相對聚合,也就是說,它們?nèi)绾斡绊懸晥D詳細級別,是受視圖中的維度影響的。
總結(jié)
在這里,我們并沒有長篇大論 LOD 的語法和規(guī)則,而是重點介紹理解 LOD 表達式的背景知識,希望每個人能結(jié)合官方的白皮書和語法說明,更好地理解 LOD 表達式的用法,從而制作出變化多端的可視化報表。
-
可視化
+關(guān)注
關(guān)注
1文章
1166瀏覽量
20856 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1200瀏覽量
24619 -
LOD
+關(guān)注
關(guān)注
0文章
17瀏覽量
9462
原文標(biāo)題:Tableau 資深用戶分享 | 如何深入淺出地學(xué)習(xí) LOD 表達式
文章出處:【微信號:TableauChina,微信公眾號:Tableau社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論