ROLLINGSUM 函式

計算指定資料欄中現行列往前或往後的指定列數值累計總和。
  • 如果輸入值遺漏或為空值,則不會列入計算。例如,針對資料集中的第一列,此列之前的值累計總和就是第一列的值。
  • 用於擷取值的資料列是由 order 參數指定的資料列排序順序決定。

    如果您正在處理隨機產生的資料集樣本,則您在此函式中看到的值未必會對應到工作執行期間在完整資料集中產生的值。

  • 此函式使用資料欄名稱,以及決定目前資料列往後及往前範圍的兩個選用整數參數。
    • 預設整數參數值是 -10,用以計算目前資料列往後到資料集第一列的累計平均值。
  • 此函式可以搭配下列轉換指令一起使用:

基本用法

資料欄範例:

derive type:single value:ROLLINGSUM(myCol)

輸出:產生新資料欄,針對資料集第一個資料列至當前資料列之間的 myCol 資料欄,列出其中所有值的總和。

計算前面資料列的範例:

window value:ROLLINGSUM(myNumber, 3)

輸出:產生新資料欄,其中包含 myNumber 資料欄中現行列和前兩列值的累計總和。

Rows before and after 範例:

window value:ROLLINGSUM(myNumber, 3, 2)

輸出:產生新資料欄,其中包含 myNumber 資料欄中現行列的前兩列值、現行列值,以及後兩列值的累計總和。

語法

window value:ROLLINGSUM(col_ref, rowsBefore_integer, rowsAfter_integer) order: order_col [group: group_col]

引數是否必要?資料類型說明
col_ref字串資料欄名稱,其值會套用於函式
rowsBefore_integer整數待併入計算的現行資料列之前的列數
rowsAfter_integer整數待併入計算的現行資料列之後的列數

如要進一步瞭解 ordergroup 參數,請參閱 Window 轉換一文。

如要進一步瞭解語法標準,請參閱語言文件語法附註

col_ref

資料欄名稱,其值要用來計算累計總和。

  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型範例值
字串 (整數或小數值的資料欄參照)myColumn

rowsBefore_integer、rowsAfter_integer

整數代表現行列之前或之後的列數,系統會從現行列開始計算之前或之後指定列數 (包括現行列在內) 的累計總和。例如,如果第一個值是 5,則計算範圍為現行列和現行列之後的 4 列。負值的 k 代表計算現行列之前指定列數的累計平均值。

  • rowBefore=1 只會產生現行列值。
  • rowBefore=-1 使用現行列之前的所有列。
  • 如果沒有指定 rowsAfter,則會套用 0 值。
  • 如果套用 group 參數,則這些參數值不應超過群組中的最大列數。

使用須知:

是否必要?資料類型範例值
整數4

範例

範例 - 累計範圍函式

這個範例說明如何使用累計計算函式:

  • ROLLINGSUM - 計算現行列前後某一列數範圍的累計總和。請參閱 ROLLINGSUM 函式
  • ROLLINGAVERAGE - 計算現行列前後某一列數範圍的累計平均值。請參閱 ROLLINGAVERAGE 函式
  • ROWNUMBER - 依排序資料欄的指定,計算每一列的資料列編號。請參閱 ROWNUMBER 函式

下列資料集包含一年中最後一季的銷售資料。

來源:

DateSales
10/2/16200
10/9/16500
10/16/16350
10/23/16400
10/30/16190
11/6/16550
11/13/16610
11/20/16480
11/27/16660
12/4/16690
12/11/16810
12/18/16950
12/25/161020
1/1/17680


轉換:

首先,您要以個別的資料欄保存資料列資訊。由於資料已經依 Date 資料欄排序,您可以使用下列指令:

window value:ROWNUMBER() order:Date

將這個資料欄重新命名為 rowId,代表一季中的週別。

現在,您要從 Date 值中擷取月份及週別資訊。取得月份值:

derive type:single value:MONTH(Date) as:'Month'

取得季度值:

derive type:single value:(1 + FLOOR(((month-1)/3))) as:'QTR'

取得季度中的週別值:

window value:ROWNUMBER() order:Date group:QTR

重新命名此資料欄 WOQ (季度的週別)。

取得月份中的週別值:

window value:ROWNUMBER() group:Month order:Date

重新命名此資料欄 WOM (月份中的週別)。

現在,執行累計計算。使用下列指令計算銷售的累積總計:

window value: ROLLINGSUM(Sales, -1, 0) order: Date group:QTR

在上述計算中,使用 -1 參數來收集從目前列到第一列所有資料列值的累計總和。請注意,使用 QTR 資料欄進行分組,會將 01/01/2017 的值移至它自己的計算值區。這不一定是您想要的結果。

重新命名此資料欄 QTD (本季至今)。現在,系統會產生類似的資料欄,計算該季每週銷售的累計平均值。

window value: ROUND(ROLLINGAVERAGE(Sales, -1, 0)) order: Date group:QTR

ROLLINGAVERAGE 函式可以計算小數值,因此可內含於 ROUND 函式中來取得精簡值。重新命名此資料欄 avgWeekByQuarter

結果:

捨棄不需要的資料欄並套用部分重新排序後,資料集應如下所示:

DateWOQSalesQTDavgWeekByQuarter
10/2/161200200200
10/9/162500700350
10/16/1633501050350
10/23/1644001450363
10/30/1651901640328
11/6/1665502190365
11/13/1676102800400
11/20/1684803280410
11/27/1696603940438
12/4/16106904630463
12/11/16118105440495
12/18/16129506390533
12/25/161310207410570
1/1/171680680680


本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁