知識庫

無法將度量轉換為維度


發佈時間 : 01 May 2013
上次修改日期 : 17 Mar 2023

問題

在創建計算欄位時,Tableau Desktop 可能會將欄位識別為度量,而不是維度。嘗試將欄位轉換為維度時,可能無法進行。

環境

Tableau Desktop

解決方法

選項 1:新增 FIXED 陳述式

詳細等級 (LOD) 函數 FIXED 可轉換成維度。確切的解決方案會根據原始計算而有所不同,但請記住,整個計算必須是非彙總的 (FIXED、非彙總欄位、參數和常數常值都是非彙總的)。請參閱下列範例:
 
範例 1
只能是度量:
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
可以轉換為維度:
IF { FIXED [Region] : SUM( [Sales] ) } < 100
THEN "Low"
ELSE "High"
END	
 
範例 2
只能是度量:
AVG( 
   IF { FIXED [Region] : SUM( [Sales] ) } < 100 
   THEN "Low" 
   ELSE "High" 
   END 
)
可以轉換為維度:
{FIXED [Category] : AVG(
   IF { FIXED [Region] : SUM( [Sales] ) } < 100
   THEN "Low"
   ELSE "High"
   END
) }
 
範例 3
只能是度量:
ATTR( [Category] ) + " value"
可以轉換為維度:
{ FIXED [Order ID] : MIN( [Category] ) } + " value"
 
請注意:必須以 MIN() 取代 ATTR(),因為 ATTR() 是表函數,且無法用於 FIXED 運算式的內部。如果在檢視的一個分區 (資料列、儲存格、長條、線、點等) 中有 [Category] 的多個唯一值,則 ATTR() 會傳回 NULL,這有助於找出資料品質問題。另一方面,MIN() 將一律傳回最小值,亦即字串值依字母排序的第一個值。只要將 MIN( [Category] ) 固定為始終只具有一個類別值的維度或維度組合,就不會出現問題。
 

選項 2:移除彙總

有時候,實際上並不需要彙總。例如,{ FIXED [Region] : SUM( [Sales] } 會傳回每個區域的總銷售量,但如果該資料來源只擁有每個區域的一個記錄,則 [Sales] 將傳回相同的值。
 
範例 1
只能是度量:
IF SUM([SALES]) < 100
THEN "Low"
ELSE "High"
END	
可以轉換為維度:
IF [Sales] < 100
THEN "Low"
ELSE "High"
END	

 

選項 3:使用 Tableau 產生的資料桶欄位

在某些狀況中,可以使用 Tableau 產生的資料桶欄位取代原始計算。請參閱從連續度量建立資料桶
以取得指示。
 

選項 4:在 Tableau Prep 中進行計算

Tableau Prep 的輸出將一律為非彙總,因此一律可以轉換成維度。Tableau Prep 中需要的步驟視原始計算而不同。一般而言,若要在 Tableau Prep 中複製如 SUM( [Sales] ) 等運算式,您將需要彙總步驟

表計算不能成為非彙總,因為表計算無法置於詳細等級函數之內。某些表計算可以在 Tableau Prep 中重複建立。例如,LOOKUP() 有時候可以取代成 shifted-self join。請參閱在 Tableau Prep 中查閱表計算
 

選項 5:聯結資料而非使用資料混合

來自次要資料來源的欄位必須加以彙總。這是資料混合的限制,且沒有因應措施。請考慮跨資料庫聯結在 Tableau Prep 中聯結
 

原因

如果計算欄位中使用了彙總,則無法將度量轉換為維度,原因是計算結果是動態的。

例如,當 [Region] 在「資料列」功能區時與 [Category] 在「資料列」功能區相比時,SUM( [Sales] ) 會傳回不同的結果。但是,運算式 {FIXED [Region] : SUM( [Sales] ) } 將一律為各區域的總銷售量。 新增 FIXED 陳述式會告知 Tableau 如何運算 SUM(),這會接著告知 Tableau 如何根據其所屬區域的總銷售量將每個記錄分組。

 

其他資訊

Tableau 為何使用維度與度量?

Tableau 利用非常不同的資料來源之間所共用資料的共同屬性,就如何顯示資料做出明智的決策。

例如,您的資料來源包含一個具有數值卻名為「ID」的欄位。  當您將「ID」新增至「資料列」功能區,而不是獲得將所有 ID 值相加的無意義長條圖時,每個 ID 將會有一列。  Tableau 如何得知要這麼做?  名為「ID」的欄位為特殊案例,此類欄位預設視為維度。

維度包含用於將其他資料群組的資料,因此 Tableau 知道維度通常應該是標題而不是圖表,即使維度包含數字資料。 

維度度量是來自資料管理的概念,將應如何顯示資料的線索提供給 Tableau。如需 Tableau 如何處理維度與度量的詳細資訊,請參閱維度與度量,藍與綠

 
這篇文章是否解決了問題?