範例:NOW 和 TODAY 函式

這個範例示範如何操作 NOWTODAY 函式,這兩種函式都會產生日期時間資料類型的輸出。

  • NOW:在指定時區中產生用於目前時間戳記的有效日期時間值。請參閱 NOW 函式一文。
  • TODAY:在指定時區中產生用於目前日期的有效日期時間。請參閱 TODAY 函式一文。
  • DATEDIF:依據特定測量單位計算兩個日期時間值的差異。請參閱 DATEDIF 函式一文。

來源:

下列資料表包含洛杉磯國際機場的航班抵達資訊。

FlightNumberGateArrival
123412/15/17 11:35
21222/15/17 11:58
51032/15/17 11:21
840142/15/17 12:08
9952/16/17 12:12
11662/16/17 13:32
87672/15/17 16:43
949482/15/17 21:00
10292/14/17 19:21
77102/16/17 12:31

轉換:

您想要產生一份今天的航班狀態報表,為了協助產生報表,必須以目前的日期和時間值產生資料欄:

提示:您應該要建立包含可用於 NOWTODAY 函式的靜態值獨立資料欄。請避免在資料集中建立各個函式的多重例項,因為其中計算出的值可能會因執行時間而異。

derive type:single value: NOW('America\/Los_Angeles') as: 'currentTime'

derive type:single value: TODAY('America\/Los_Angeles') as: 'currentDate'

接下來,您想要識別今日降落的航班。在這種情況下,您可以使用 DATEDIF 函式來決定同一天內 Arrival 值是否與 currentTime 值相符:

注意:DATEDIF 函式會依據測量單位,計算第一個日期到第二個日期差異的相異之處。因此,與基本時間戳記相差 23 小時的時間戳記,即使日期可能有所不同,仍可能會落在相同單位的同一天 (如 2/15/20172/14/2017)。

derive type:single value: datedif(currentDate, Arrival, day) as: 'today'

既然您只想要知道今日的航班,您可以移除不能套用至今日的所有資料列:

delete row: today <> 0

接下來要處理今天的日期,您可用分鐘為單位,計算目前時間與抵達時間的差距:

derive type:single value: datedif(currentTime, Arrival, minute) as: 'status'

使用 status 資料欄中的數字值,您可以撰寫下列轉換,並用其識別每個航班的狀態:

set col: status value: if(status < -20, 'arrived', if(status > 20, 'scheduled', if(status <= 0, 'landed', 'arriving')))

結果:

您現在產生了每日航班狀態報表:

currentDatecurrentTimeFlightNumberGateArrivalstatustoday
2017-02-152017-02-15·11:46:12123412/15/17 11:35已著陸0
2017-02-152017-02-15·11:46:1221222/15/17 11:58即將抵達0
2017-02-152017-02-15·11:46:1251032/15/17 11:21已抵達0
2017-02-152017-02-15·11:46:12840142/15/17 12:08準時0
2017-02-152017-02-15·11:46:1287672/15/17 16:43準時0
2017-02-152017-02-15·11:46:12949482/15/17 21:00準時0
2017-02-152017-02-15·11:46:1210292/14/17 19:21已抵達0

您可以刪除 currentDatecurrentTimetoday 資料欄。

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

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

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