範例 - PREV 函式

下列資料集含有幾天期間內多個客戶的訂單,系統並未按照特定順序列出訂單。您想要評估這段時間內每個客戶的訂單大小變化情形,並依據訂單量的變化為客戶提供優惠。

來源:

DateCustIdOrderIdOrderValue
1/4/16C001Ord002500
1/11/16C003Ord005200
1/20/16C002Ord007300
1/21/16C003Ord008400
1/4/16C001Ord001100
1/7/16C002Ord003600
1/8/16C003Ord004700
1/21/16C002Ord009200
1/15/16C001Ord006900

轉換:

您可以在資料載入「轉換器」頁面時使用 PREV 函式,將前兩張訂單的訂單值擷取到新資料欄。訣竅在於將 window 轉換依日期排序,並按客戶分組:

window value: PREV(OrderValue, 1) order: Date group: CustId

window value: PREV(OrderValue, 2) order: Date group: CustId

rename col: window to: 'OrderValue_1'

rename col: window1 to: 'OrderValue_2'

資料集現在應含有下列資料欄:DateCustIdOrderIdOrderValueOrderValue_1OrderValue_2

兩個新資料欄分別代表前一張訂單和再之前一張訂單。現在,每一列均含有目前的訂單 (OrderValue) 及之前的訂單。您現在想要採取下列客戶動作:

  • 如果與前兩張訂單的總和相比,目前的訂單超過 20% 以上,則會提供退費折扣。
  • 如果與前兩張訂單總和相比,目前的訂單少了 90%,則發送優待卷。
  • 否則,寄送聖誕卡。

如要處理第一個條件,您可以新增下列指令。此指令使用 IF 函式來測試與先前訂單相比,目前訂單的值:

derive type:single value: IF(OrderValue >= (1.2 * (OrderValue_1 + OrderValue_2)), 'send rebate', 'no action') as: 'CustomerAction'

您現在可以看到有哪些客戶可以獲得退費折扣。現在,編輯上述指令,換成下列內容,以處理第二個條件。如果兩種條件都無效,則結果為 send holiday card

derive type:single value: IF(OrderValue >= (1.2 * (OrderValue_1 + OrderValue_2)), 'send rebate', IF(OrderValue <= (1.2 * (OrderValue_1 + OrderValue_2)), 'send coupon', 'send holiday card')) as: 'CustomerAction'

結果:

刪除 OrderValue_1OrderValue_2 資料欄後,資料集應會如下所示。請注意,因為轉換指令所含的 PREV 函式按 CustId 分組,所以記錄順序已變更。

DateCustIdOrderIdOrderValueCustomerAction
1/4/16C001Ord001100send rebate
1/7/16C001Ord002500send rebate
1/15/16C001Ord006900send rebate
1/8/16C003Ord004700send rebate
1/11/16C003Ord005200send rebate
1/21/16C003Ord008400send coupon
1/7/16C002Ord003600send rebate
1/20/16C002Ord007300send rebate
1/21/16C002Ord009200send coupon
本頁內容對您是否有任何幫助?請提供意見:

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

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