範例 - Rolling 函式

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

  • 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 說明文件
需要協助嗎?請前往我們的支援網頁