Keep 轉換

注意:轉換屬於基礎程式語言的一部分,使用者無法直接存取。本篇文章的內容僅供參考。

保留資料集中的一組資料列,這些資料列是由 row 運算式中的條件式所指定。系統會移除資料集中的所有其他資料列。

keep 轉換與 delete 轉換的作用相反。請參閱 Delete 轉換一文。

基本用法

keep row:(customerStatus == 'active')

輸出:對於資料集中的每一列,如果 customerStatus 資料欄中的值為 active,即會保留該資料列。否則,該資料列將從資料集中刪除。

參數

keep row:(expression)

符記是否必要?資料類型說明
keep轉換轉換名稱
row字串識別一或多個資料列要保留的運算式。如果運算式評估資料列為 true,該資料列會保留。

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

row

用來識別一或多個待執行轉換之資料列的運算式。運算式必須評估為 truefalse

範例:

運算式說明

Score >= 50
如果 Score 資料欄中的值大於 50,則傳回 true

LEN(LastName) > 8
如果 LastName 資料欄中的值長度超過 8,則傳回 true

ISMISSING([Title])
如果 Title 資料欄中的資料列值遺漏,則傳回 true

ISMISMATCHED(Score,['Integer'])
如果 Score 資料欄中的資料列值不符合整數資料類型,則傳回 true

keep 轉換中,如果 row 參數運算式評估資料列為 true,就會保留在資料集。不然的話,則會遭到移除。

範例:

keep row: (lastOrder >= 10000 && status == 'Active')

輸出:保留資料集中 lastOrder 值大於或等於 10,000,且客戶狀態為 Active 的所有資料列。

使用須知:

是否必要?資料類型
評估為 truefalse 的運算式

範例

範例 - 移除舊產品及保留新訂單

本範例說明如何使用下列轉換指令在資料集中保留及刪除資料列:

  • delete - 依據 row 參數中條件運算式的評估結果,刪除一組資料列。請參閱 Delete 轉換一文。
  • keep - 依據 row 參數中條件運算式的評估結果,保留一組資料列。系統會刪除資料集中的所有其他資料列。請參閱 Keep 轉換

來源:

您的資料集包含以下訂單資訊。您想要編輯資料集,以達成下列目的:

  • 移除已不再提供之產品的所有訂單,這些產品的 ID 如下:P100P101P102P103
  • 保留過去 90 天內提交的所有訂單。
OrderIdOrderDateProdIdProductNameProductColorQtyOrderValue
10016/14/2015P100帽子棕色190
10021/15/2016P101帽子黑色2180
100311/11/2015P103毛衣黑色3255
10048/6/2015P105開襟毛衣紅色4320
10057/29/2015P103帽衣黑色5375
100612/1/2015P102褲子白色6420
100712/28/2015P107T 恤白色7390
10081/15/2016P105開襟毛衣紅色8420
10091/31/2016P108外套海軍藍9495

轉換:

首先,移除舊產品的訂單。因為產品集相當小,所以您可以先從新增下列指令開始:

注意:只需要先預覽這個轉換指令,還不要將它新增至您的方案。

delete row:(ProdId == 'P100')

預覽這個步驟時,您應該會發現系統醒目顯示上表中待移除的頂端資料列。請注意轉換指令與 ProdId 值的相依關係。查看 ProductName 值時,您可能會發現其中一列受影響的資料含有錯字,所以該資料欄不適合用於比較。

您可以使用下列轉換指令擴展,將其他產品 ID 新增至轉換指令;此擴展已移除含有相符 ProdId 值的所有資料列:

delete row:(ProdId == 'P100' || ProdId == 'P101' || ProdId == 'P102' || ProdId == 'P103')

將上述步驟新增至方案時,資料應會如下所示:

OrderIdOrderDateProdIdProductNameProductColorQtyOrderValue
10048/6/2015P105開襟毛衣紅色4320
100712/28/2015P107T 恤白色7390
10081/15/2016P105開襟毛衣紅色8420
10091/31/2016P108外套海軍藍9495

現在您可以篩選出 90 天以前的資料集訂單。首先,新增含有今天日期的資料欄:

derive value:'2/25/16' as:'today'

使用下列指令,保留此日期 90 天內的資料列:

keep row:DATEDIF(OrderDate,today,day) <= 90

切記刪除不再需要的 today 資料欄:

drop col:today

結果:

OrderIdOrderDateProdIdProductNameProductColorQtyOrderValue
100712/28/2015P107T 恤白色7390
10081/15/2016P105開襟毛衣紅色8420
10091/31/2016P108外套海軍藍9495

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

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

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