善加運用計算關係

您可能會對計算感到有點膽怯。在使用關係的資料來源中進行計算看起來可能很可怕。但是不必害怕計算關係。

附註︰若對使用關係的資料來源背後的原理還不太了解,在深入探討本主題之前,請閱讀善加運用關係可能會有所幫助。

計算類型

列層級計算是針對資料中的每一筆記錄進行運算的操作。例如,每筆銷售交易都具有銷售額,價格可能會依折扣百分比調整:Price * (1- ZN([Discount]))。此操作是針對每筆交易逐列運算,結果可視為在「銷售額」的資料來源中新增新欄。

另外還有彙總計算。彙總計算是在視覺效果的詳細層級進行計算,而且其值取決於檢視的結構而定。彙總計算的其中一個例子是「計數」。Count([Title]) 的值取決於我們是依格式、作者或銷售日來計算。

有關計算類型的詳情,請參閱我們的部落格(連結在新視窗開啟)

資料表詳細層級

由於 Tableau 資料來源中的每一個資料表都可能有自己的詳細層級,因此,計算與哪個資料表相關聯有很大的影響。例如,過去在 Tableau 中(2020.2 之前版本,關係之前),可能會透過建立帶有常數值 1 的計算,並將其加總,來計算資料來源中的記錄數。1 已指派至資料來源中的每一列,因此,總和等於列數。

但是,現在該計算的值為 1。整個資料來源沒有全域詳細層級,而且常數計算位於「資料」窗格底部的未指派區域中。它有自己的詳細層級。總和 1 只是 1

如先前所述,與資料表具有相同詳細層級的計算(通常是因為其包含資料表的欄位)屬於「資料」窗格中的資料表。例如,「名字」和「姓氏」的串連可取得在「作者」資料表中每位作者的全名(亦即,[First Name] + " " + [Last Name])。

但是,如果我們在一個計算中使用多個資料表的欄位,則計算會移至「資料」窗格底部的未指派區域。這稱為跨表列層級計算;其需要對涉及的資料表進行列層級聯結,此操作可能會影響效能。(確保在關係的「效能選項」中設定正確的基數)。

指派詳細層級

由於資料表的詳細層級控制計算結果的代表涵義,因此,將計算放置在適當的資料表中相當重要。FIXED 詳細層級運算式可用於將計算提取至特定資料表。要固定運算式的欄位(維度聲明(連結在新視窗開啟))決定結果的詳細層級。

範例:作者售書巡迴

問:每位作者參與多少售書巡迴活動?

答:此數字應該「屬於」每位作者,因此,應該前往作者表。

  • 作者售書巡迴活動 = {FIXED [Author Name] : SUM([Book Tour Events])}
  • (以淺顯易懂的語言來想,可以視為「對於每位作者,與其相關的售書巡迴活動總數」)

問: 有多少作者未進行任何售書巡迴?

答:可以嘗試看看以下計算,例如

  • COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END).
  • (以淺顯易懂的語言來想,這可視為「如果售書巡迴活動為空,則會傳回作者姓名。計算每個唯一的作者姓名」)

但是,這是一個跨表列層級計算,因為「售書巡迴活動」來自「系列」表,而「作者姓名」來自「作者」表。這樣的跨表計算使用內部聯結,這表示當兩個資料表中沒有對應的值時,列會從聯結結果中捨棄。這又表示我們要求 Tableau 計算一些不存在的內容。但是,請注意,如果兩個欄位在同一個資料表中,這會是一個很好的方法。除了無法良好地發揮資料來源結構以外,目前的計算並沒有什麼問題。

相反地,我們需要指出每位作者是否出席售書巡迴活動,並將這些結果保留在「作者」表中。一旦每位作者標記為「參加售書巡迴」或「不參加售書巡迴」,我們即可計算出不舉辦售書巡迴的人數。

  • 售書巡迴參與?= IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END
  • (換個淺顯易懂的方式來說,就是「針對每位作者,計算一下售書巡迴活動」的次數。如果該計數為零,則將作者標示為「否」,否則將其標示為「是」。藉由將欄位命名為「是否為售書巡迴參與者?」,「否」和「是」將會排成一列。)

現在,我們可以計算「否」的數量,並回答原始問題。

如果我們的計算是 沒有售書巡迴的作者 = IF [Book tour participant?]= "No" THEN ([Author Name]) END,我們將會取得未進行售書巡迴的作者清單。(這可視為「針對『是否為售書巡迴參與者?』答案為否的每一位作者,列出該作者的姓名。」)

如果我們的計算是 COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END),我們將會取得一個數值答案,其位於資料窗格底部的未指派區域中。為何會這樣?因為此計算是彙總的。

分紅問題:

也可以直接使用「是否為售書巡迴參與者?」的計算結構來傳回作者姓名的清單。IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END .此計算會放置在「資料」窗格中何處?為何會這樣?在您自己的 Tableau Desktop 副本中試試看,或下載此工作簿看看。(需要 Tableau Desktop 2020.2 或更高版本。進入工作簿後,按一下「資料」窗格中的計算,並選取「編輯」以開啟計算編輯器,然後在計算註解中查看說明。)

相關資源

感覺有點不知所措,想返回上一步?請嘗試閱讀善加運用關係

準備好繼續探索如何進行與關係有關的複雜分析了嗎?請參閱善加運用更深入的關係

若要直接從產品管理團隊取得有關關係技術基礎的詳情,請參閱 Tableau 部落格上有關關係的系列文章。

另請參閱「動作分析」(連結在新視窗開啟)中有關關係的影片播客,例如 Tableau 為何發明關係?(連結在新視窗開啟)按一下內容庫(連結在新視窗開啟)中的「影片播客」以查看更多資訊。

感謝您的意見反應!已成功提交您的意見回饋。謝謝!