1. 概述
1.1 版本
FineBI版本 | 功能變動 |
---|---|
6.1.2 | - |
1.2 功能簡介
WINDOW 視窗函式常用於行間計算的場景,在對資料進行分組、排序後,對視窗上下限內的資料進行計算。
文法
WINDOW_匯總方式(指標 ,[分組欄位1, 分組欄位2.... ],[排序欄位1,排序方式,排序欄位2, 排序方式...],[視窗上限,視窗下限])
參數
視窗函式基於「分析檢視表」進行計算,函式內的指標/分組欄位/排序欄位需要均為聚合性質,且維度欄位均需要來源於分析檢視表
參數 | 說明 |
---|---|
指標 | 不可為空 |
分組欄位 | 預設則不按照任何欄位分組 |
排序欄位 | 預設則按照預設順序計算 |
排序方式 | 支援 "asc"、"desc" 兩個關鍵詞,分別對應升冪和降冪排序,如預設需要預設所有排序方式,預設則按照排序欄位升冪進行計算 |
視窗上限/下限 | 支援 "first"、"last" ,分別代表組內第一行/組內最後一行; 支援數值常數,0代表當前行,-n代表當前行的前n行,n代表當前行的後n行 預設則按照["first","last"]使用組內全部計算 |
回傳值
傳回視窗中的所有行,對行內的指標依據「匯總方式」進行計算。
注:不同的 WINDOW 函式對應不同的匯總方式,匯總方式包括「求和,平均,最大值,最小值,標準差,方差」。除此以外,視窗函式還有 RANK_AGG-按指定規則排序 函式,支援對欄位分組後按指定規則排序。詳情見下文。
1.3 應用場景
視窗函式能夠單獨匯出欄位或和 DEF 函式組合使用。對分析檢視表的欄位進行計算時,視窗函式比使用 EARLIER 函式進行跨行計算更簡單、更易理解、效能更優。
一般場景
WINDOW 函式基於分析檢視表進行聚合計算,即依據已生成的組件結果進行計算(不包含明細表)如:
求累計
求組內累計
求近三行行動平均
求分組下近三行行動平均
巢狀場景
當 WINDOW 和 DEF 類函式巢狀使用時,基於 DEF 函式下的獨立檢視表進行計算,這種情況下如果使用的是 DEF 函式(指定維度)可匯出明細級別的欄位。
DEF+WINDOW 的巢狀場景下支援在自助資料集和明細表中使用 WINDOW 函式。
1.4 函式類型
window函式 | 場景 |
---|---|
WINDOW_SUM-跨列求和/求累計 | |
WINDOW_AVG-跨列求平均 | 求行動平均 |
WINDOW_MAX-跨列求最大值 | - |
WINDOW_MIN-跨列求最小值 | - |
WINDOW_STDEV-跨列求標準差 | - |
WINDOW_VAR-跨列求方差 | - |
RANK_AGG-按指定規則排序 |
2. 使用位置
3. 注意事項
WINDOW 基於分析檢視表進行計算,指標/分組欄位/排序欄位需要均為聚合性質,且維度欄位均需要來源於分析檢視表
WINDOW 函式匯出的是聚合欄位,在自助資料集中不支援直接匯出,需要與 DEF 函式組合後匯出明細級別欄位。
如果對於排序要求較高,建議把排序欄位和排序方式都依次羅列到 WINDOW 函式中。未指定的欄位按照預設順序計算
年月累計場景
由於當前 WINDOW 計算時所使用的欄位都是從待分析區進行選擇,來對應分析區的欄位。而我們分析區又支援日期分組、自訂維度分組。當一個欄位被重複拖入分析區並設定多種分組方式時, WINDOW 計算會將欄位設定的所有分組都帶入計算。
例如,「合同簽約時間」在分析區按「年」分組,然後再次拖入後按「月份」分組。WINDOW 函式計算的「合同簽約時間」會按年月分組參與計算。如下圖所示:
如果我們要求按年分組下,各月的購買數量累計,需要在待分析區域複製「合同簽約時間」欄位並重新命名用於區分不同分組。
在分析區拖入欄位「年、月」並依次設定分組。新增計算欄位「購買數量組內累計值」,計算對「年」分組後,按月依次累計的購買數量。
2013 年的購買數量按月依次累計,效果如下圖所示:
4. 範例
範例資料:超市銷售資料 .xlsx
1)製作分組表,拖入「訂單日期、銷售額」求不同年月的銷售額情況。如下圖所示:
2)計算近三個月銷售額行動平均,如下圖所示:
公式=WINDOW_AVG(SUM_AGG(銷售額),[],[訂單日期],[-2,0])
公式內容 | 說明 | 備註 |
---|---|---|
WINDOW_AVG(SUM_AGG(銷售額)) | 銷售額跨行求平均 | |
參數2:[] | 不對資料進行分組 | |
參數3:訂單日期 | 按訂單日期(年月)升冪
| 不寫排序方式預設升冪 |
參數4:[-2,0] | 獲取視窗範圍內的資料
| 按訂單日期(年月)順序獲取前兩行和當前行資料,求行動平均 |
完成後,將欄位拖入分組表,並設定數值格式為「萬」。如下圖所示: