ROLLINGKTHLARGESTUNIQUE 函式

計算目前資料列前後的累計不重複第「k」大的值。

為進行這個函式的計算,具有相同值的兩個例項將視為具有單一 k 值。因此,如果您的資料集有資料欄值分別為 10998 的四個資料列,則 KTHLARGESTUNIQUE 會針對 k=2 傳回 9,並針對 k=3 傳回 8

ROLLINGKTHLARGESTUNIQUE 會計算資料欄中所定義值範圍中的 KTHLARGESTUNIQUE 值。

  • 如果輸入值遺漏或為空值,則不會列入計算。例如資料集中的第一列之前的累計值為未定義。
  • 擷取值的來源資料列由 order 參數指定的資料列排序決定。

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

  • 輸入:
    • 需要資料欄名稱
    • 需要正整數的「k」
    • 決定目前資料列往後及往前範圍的兩個選用整數參數。預設整數參數值是 -10,用以計算目前列到資料集第一列的累計函式。
  • 此函式可與下列轉換一起使用:

如要進一步瞭解此函式的非累計版本,請參閱 KTHLARGESTUNIQUE 函式一文。

基本用法

資料欄範例:

derive type:single value:ROLLINGKTHLARGESTUNIQUE(myCol, 2)

輸出:產生新的資料欄,其中包含資料集第一列至目前列的 myCol 資料欄中,累計第二大的不重複值。

計算前幾列的範例:

window value:ROLLINGKTHLARGESTUNIQUE(myNumber, 2, 3)

輸出:產生新資料欄,其中包含 myNumber 資料欄中目前列和前兩列值的累計第二大不重複值。

計算前後幾列的範例:

window value:value:ROLLINGKTHLARGESTUNIQUE(myNumber, 4, 3, 2)

輸出:產生新資料欄,其中含有 myNumber 資料欄中目前列前兩列值、目前列值,以及目前列後兩列值的累計第四大不重複值。

語法

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

引數是否必要?資料類型說明
col_ref字串資料欄名稱,其值會套用於函式
k_integer正整數要從來源資料欄中擷取出來的不重複值排名
rowsBefore_integer整數待併入計算的現行資料列之前的列數
rowsAfter_integer整數待併入計算的現行資料列之後的列數

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

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

col_ref

資料欄名稱,其值會用於計算函式。

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

使用須知:

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

k_integer

為整數,表示從來源資料欄中擷取出來的不重複值排名。為進行這個函式的計算,重複值會被視為單一值。

附註:k 的值必須是介於 1 到 1,000 (含首尾) 之間的整數。

  • k=1 代表資料欄的最大值。
  • 如果 k 大於或等於資料欄中的值數目,則會傳回最小值。
  • 遺漏值或空值不會列入 k 排名的計算。

使用須知:

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

rowsBefore_integer、rowsAfter_integer

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

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

使用須知:

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

範例

範例:ROLLINGKTHLARGEST 函式

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

  • ROLLINGKTHLARGEST:計算目前列前後特定累計列數範圍中第「k」大的值。系統會將重複值視為有相同的「k」值。請參閱 ROLLINGKTHLARGEST 函式一文
  • ROLLINGKTHLARGESTUNIQUE:計算目前列前後特定累計列數範圍中第「k」大的不重複值。系統會將重複值視為有不同的「k」值。請參閱 ROLLINGKTHLARGESTUNIQUE 函式一文。

以下資料集包含三個伺服器在前一週內每天重新啟動的次數。如果伺服器重新啟動的次數偏高,可能表示伺服器的健康狀態不佳。在這個範例中,您想瞭解各個伺服器在前一週累計最多和第二多的重新啟動次數。

來源:

DateServerRestarts
2/21/18s014
2/21/18s020
2/21/18s030
2/22/18s014
2/22/18s021
2/22/18s032
2/23/18s012
2/23/18s023
2/23/18s034
2/24/18s011
2/24/18s020
2/24/18s032
2/25/18s015
2/25/18s020
2/25/18s034
2/26/18s011
2/26/18s022
2/26/18s031
2/27/18s011
2/27/18s022
2/27/18s032


轉換:

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

derive type:single value:ROWNUMBER() as:'entryId'

使用以下函式計算各個伺服器在前一週內重新啟動次數的累計第「k」大值。在這個範例中,您可以使用 ROLLINGKTHLARGEST 函式,並設定「k」=1。計算最大值時,重複與否沒有影響:

derive type: multiple value: rollingkthlargest(Restarts, 1, 6, 0) group: Server order: Server as: 'rollingkthlargest_1'

使用以下函式計算累計第二大的值。在這個範例中,您可以使用 ROLLINGKTHLARGESTUNIQUE

derive type: multiple value: rollingkthlargestunique(Restarts, 2, 6, 0) group: Server order: Server as: 'rollingKthLargestUnique_2'


結果:

entryIdDateServerRestartsrollingKthLargestUnique_2rollingkthlargest_Restarts
32/21/18s02000
62/22/18s02101
92/23/18s02313
122/24/18s02013
152/25/18s02013
182/26/18s02223
212/27/18s02223
42/21/18s03000
72/22/18s03202
102/23/18s03424
132/24/18s03224
162/25/18s03424
192/26/18s03124
222/27/18s03224
22/21/18s01444
52/22/18s01444
82/23/18s01224
112/24/18s01124
142/25/18s01545
172/26/18s01145
202/27/18s01145


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

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

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