當您分析的資料並不能直接從資料表中擷取,而需要基於未經處理資料進行加工時,可以建立計算欄位。
前提條件
您已建立資料集,請參見建立並管理資料集。
背景資訊
Quick BI支援豐富的欄位計算,協助您靈活的處理資料:
彙總
例如通過客戶名稱統計客戶數:
COUNT(DISTINCT [客戶名稱])
四則運算
例如計算客單價:
[成交金額] / [客戶量]
字元的分割與合并
例如將省份和城市拼接:
CONCAT([省份], [城市])
複雜分組
例如將滿足一定條件的客戶等級定義為VIP客戶:
CASE WHEN [成交金額]>1000 AND [成交筆數]>5 THEN 'VIP' ELSE '普通' END
配置方式
在資料預覽頁面,單擊建立計算欄位。
在建立計算欄位頁面,配置參數後,單擊確定。
輸入欄位名稱。
點擊引用函數並點擊引用欄位,編輯欄位運算式。其中引用的函數分為常用函數和LOD函數,LOD函數具體使用介紹請參見LOD函數。
在編輯運算式時,您需要關注以下幾點:
您也可以在運算式編輯框輸入[喚出列表來插入度量欄位名稱。
函數請使用各個資料來源支援的函數。
資料來源支援的函數可查看配置面板右側函數列表,或查詢該資料來源類型支援的函數。
常見的欄位運算式樣本請參見情境舉例。
選擇資料類型和欄位類型後,單擊確定。
當資料類型選擇度量時,支援設定數值格式化為整數、保留1位小數、保留2位小數、百分比、百分比1位小數、百分比2位小數、自訂和手動輸入。
其中手動輸入顯示格式,例如#,##0.00%,只能由大小寫字母數字和_#,.%組成,長度不超過50個字元,具體使用方法請參考Excel自訂格式文法。
建立的計算欄位也可以直接被引用再做二次計算,滿足您複雜計算的情境。
例如,
利潤金額 = 訂單金額 - 成本金額
;利潤率 = 利潤金額 / 訂單金額
。
情境舉例
彙總函式
求和:
SUM([欄位])
計數:
COUNT([欄位])
計數去重:
COUNT(DISTINCT [欄位])
求平均值:
AVG([欄位])
配置了彙總計算的計算欄位,將根據儀表板中配置的維度自動進行彙總運算。
四則運算
支援加減乘除運算
例如從訂單明細表計算客單價:
SUM([成交金額] )/ COUNT(DISTINCT [客戶名稱])
說明如果分母可能為0,為避免計算錯誤,請在計算欄位處理。
CASE WHEN [客戶名稱] is null THEN null ELSE SUM([成交金額] )/COUNT(DISTINCT [客戶名稱]) END
複雜的分組情境
對維度進行分組的情境,簡單的單欄位分組可以支援使用分組維度功能,當您需要針對多個欄位組合條件後分組,此時可以用
CASE WHEN
函數。例如,CASE WHEN [成交金額]>5000 AND [成交筆數]>40 THEN 'VVIP' WHEN [成交金額]>1000 AND [成交筆數]>5 THEN 'VIP' ELSE '普通' END
字元拼接
假設資料表中分別有省份、城市2個欄位,您可以使用字串拼接函數,將省份城市合并到一個欄位中。
CONCAT(a, b, c, d)
:將需要合并的欄位加入括弧中,英文逗號分隔。如果合并的時候多列之間希望增加分隔字元,可以分隔字元加英文單引號。例如,
CONCAT([省份],'-', [城市])
字串處理
可以使用字串函數,對文本進行處理。
不同資料庫函數不同導致字串處理方式有所差異,本文以MySQL函數舉例。
字元截取:
SUBSTRING([客戶名稱],1,1)
:[客戶名稱]欄位,從第1個字元開始,取1個字元。SUBSTRING([欄位]
:開始位置,截取字串長度。尋找一個字串中另一個字串的位置:
INSTR([客戶名稱],'東')
: 尋找[客戶名稱]中是否含有‘東’
字,如果有,返回位置,如果沒有,返回0。
日期時間處理等
Quick BI針對日期和時間欄位自動拆解成多個時間顆粒度,並且可以自訂顯示格式,已經可以滿足很多日期和時間顆粒度和格式處理相關的情境。
除此之外,可以使用資料庫日期相關函數進行資料加工,可在函數列表搜尋DATE搜尋到相關的函數。
例如:不同資料庫函數不同導致日期時間處理方式有所差異,本文以MySQL函數舉例。
當前日期:
CURRENT_DATE
入職天數:
DATEDIFF(CURRENT_DATE, [入職日期])
,返回入職日期距離今天的天數到期日:
ADDDATE([付款日期], 365)
,返回付款日期後365天的日期
LOD函數詳細資訊層級計算
如果分析過程中需要添加一個維度,其明細程度高於或者低於已有視圖的可視化明細程度,但又不希望改變現有圖形展示內容,就可採用詳細資訊層級運算式功能。例如:
計算每個地區的銷售額總和:
lod_fixed{[地區]:SUM([訂單金額])}
分析客戶複購情況:
lod_fixed{[使用者id]:count(distinct([訂單id]))}
詳細請參見LOD函數。