當您分析的數據并不能直接從數據表中獲取,而需要基于原始數據進行加工時,可以新建計算字段。
前提條件
您已創建數據集,請參見創建并管理數據集。
背景信息
Quick BI支持豐富的字段計算,幫助您靈活的處理數據:
聚合
例如通過客戶名稱統計客戶數:
COUNT(DISTINCT [客戶名稱])
四則運算
例如計算客單價:
[成交金額] / [客戶量]
字符的分割與合并
例如將省份和城市拼接:
CONCAT([省份], [城市])
復雜分組
例如將滿足一定條件的客戶等級定義為VIP客戶:
CASE WHEN [成交金額]>1000 AND [成交筆數]>5 THEN 'VIP' ELSE '普通' END
配置方式
在數據預覽頁面,單擊新建計算字段。
在新建計算字段頁面,配置參數后,單擊確定。
輸入字段名稱。
點擊引用函數并點擊引用字段,編輯字段表達式。其中引用的函數分為系統內置函數和數據庫函數。
系統內置函數:BI系統內置的計算函數,可屏蔽底層數據庫差異,適用于各類數據庫。
系統內置函數具體使用介紹請參見系統內置函數。
數據庫函數:底層數據庫提供的原生函數,不同數據庫會有不同的原生函數。
在編輯表達式時,您需要關注以下幾點:
您也可以在表達式編輯框輸入
[
喚出列表來插入度量字段名稱。
常見的字段表達式示例請參見場景舉例。
選擇數據類型和字段類型后,單擊確定。
當數據類型選擇度量時,支持設置數值格式化為整數、保留1位小數、保留2位小數、百分比、百分比1位小數、百分比2位小數、自定義和手動輸入。
其中手動輸入顯示格式,例如#,##0.00%,只能由大小寫字母數字和_#,.%組成,長度不超過50個字符,具體使用方法請參考Excel自定義格式語法。
新建的計算字段也可以直接被引用再做二次計算,滿足您復雜計算的場景。
例如,
利潤金額 = 訂單金額 - 成本金額
;利潤率 = 利潤金額 / 訂單金額
。
場景舉例
聚合函數
求和:
SUM([字段])
計數:
COUNT([字段])
計數去重:
COUNT(DISTINCT [字段])
求平均值:
AVG([字段])
配置了聚合計算的計算字段,將根據儀表板中配置的維度自動進行聚合運算。
四則運算
支持加減乘除運算
例如從訂單明細表計算客單價:
SUM([成交金額] )/ COUNT(DISTINCT [客戶名稱])
復雜的分組場景
對維度進行分組的場景,簡單的單字段分組可以支持使用分組維度功能,當您需要針對多個字段組合條件后分組,此時可以用
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函數)。