SESSION 函式

依據已排序的時間戳記資料欄與指定的滾動時間範圍,產生新的工作階段 ID。

SESSION 函式採用三個參數:

  • 識別工作階段的日期時間資料欄參照
  • 數值,用於識別分隔工作階段的滾動時間範圍長度。
  • 滾動時間範圍長度的測量單位。

與其他設定時間區間的作業相同,您也可以套用 ordergroup 參數。grouporder 參數可用來定義記錄群組,以及記錄套用這個轉換的順序。

附註:雖然沒有明確要求,但您應該使用 order 參數定義排序資料集資料列所用的資料欄。此資料欄應與 SESSION 函式中的資料欄參照相符。

系統會在產生的資料欄中,依據該列資料所屬的運算工作階段指派每一個資料列的 ID。每個群組的工作階段 ID 都是從 1 開始並依序遞增。

  • 每個新群組的工作階段 ID 都是從 1 值開始,因此工作階段 ID 只有在該群組內才是唯一的。但群組 ID 與工作階段 ID 的組合是資料集中獨一無二的索引鍵。

這個函式可與下列的轉換一起使用:

基本用法

window value:SESSION(Timestamp, 1, hour) order:'Timestamp'

輸出:產生新的資料欄,其中包含資料列群組的工作階段 ID (以 1 小時做為區隔)。

語法

window value:SESSION(col_ref, k_integer,unit_of_time) order: order_col [group: group_col]

引數是否必要?資料類型說明
col_ref字串資料欄名稱,其值會套用於函式
k_integer整數 (正數)工作階段的長度,與 unit_of_time 引數結合使用
unit_of_time字串字串文字,標示時間單位以定義工作階段的持續時間

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

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

col_ref

日期時間資料欄的名稱,其值用於判定工作階段。

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

使用須知:

是否必要?資料類型示例值
字串 (日期時間值的資料欄參照)myDates

k_integer

定義工作階段長度為某單位 (在 unit_of_time 參數中定義) 的數字。

附註:在前一個工作階段的邊界外找到的第一個記錄會決定新工作階段的起點,並不是透過解譯任何固定間隔而決定。

使用須知:

是否必要?資料類型示例值
整數 (正數)24

unit_of_time

定義每個時間單位的長度,以便定義工作階段的長度。

使用須知:

是否必要?資料類型示例值
字串文字。請參閱下面的清單。hour

支援的值:dayhourmillisecondminutesecond

範例


範例 - 指派工作階段 ID 給附有時間戳記的事件

以下的資料集包含依照客戶 ID 分類的網站事件。時間戳記資訊儲存在兩個不同的資料欄,而匯入的資料則按 Action 資料欄排序。您的目標是以每五分鐘做為工作階段間隔,產生每位客戶的工作階段 ID。

來源:

DateTimeCustIdAction
2/1/169:23:00 AMC001change account settings
2/1/169:23:58 AMC003complete order
2/1/169:20:00 AMC002login
2/1/169:20:22 AMC003login
2/1/169:20:41 AMC001login
2/1/169:24:52 AMC004login
2/1/1611:24:21 AMC001login
2/1/169:24:18 AMC001logout
2/1/169:24:49 AMC003logout
2/1/169:26:22 AMC002logout
2/1/169:24:10 AMC002search: bicycles
2/1/169:23:50 AMC002search: pennyfarthings
2/1/1611:56:09 PMC004search: unicycles

轉換:

這筆資料如果能依照各個事件的時間戳記進行整理,將會變得更有意義。然而,時間戳記資訊卻散佈在兩個欄位:DateTime。首先請將這項資料合併成一個欄位:

merge col: Date,Time with: ' ' as: 'Timestamp'

您現在可以刪除這兩個來源資料欄。刪除資料欄後,您會發現 Timestamp 資料欄依然設定為字串資料類型。這個類型設定問題是由 AM/PM 指示項造成,您可以使用下列的轉換指令移除指示項:

replace col: Timestamp on: ` {upper}{2}{end}` with: ''

現在,您獲得了有效的日期時間資料,可以使用下列轉換指令建立工作階段 ID:

window value:SESSION(Timestamp, 5, minute) order: Timestamp group: CustId

上述的轉換指令會依據 Timestamp 資料欄中的資料,以每五分鐘為間隔建立工作階段 ID。資料一開始會先按 CustId 分組,然後按 Timestamp 排序,接著再套用 SESSION 函式。

您可以選擇將產生的資料欄重新命名:

rename mapping:[window,'SessionId']

結果:

TimestampCustIdActionSessionId
2/1/2016 11:24:21C001login1
2/1/2016 9:20:41C001login2
2/1/2016 9:23:00C001change account settings2
2/1/2016 9:24:18C001logout2
2/1/2016 9:20:22C003login1
2/1/2016 9:23:58C003complete order1
2/1/2016 9:24:49C003logout1
2/1/2016 9:20:00C002login1
2/1/2016 9:23:50C002search: pennyfarthings1
2/1/2016 9:24:10C002search: bicycles1
2/1/2016 9:26:22C002logout1
1/31/2016 11:56:09 C004search: unicycles1
2/1/2016 9:24:52C004login2

附註:

  • 資料集是按 CustId 分組,但順序則是根據按每個客戶的第一個時間戳記決定。因此,C003 資料會出現在 C002 之前。
  • C001C004 資料會產生兩個不同的工作階段。

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

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

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