2017-09-03 48 views
1

this blog中,Google Cloud員工介紹瞭如何對BigQuery中的機器學習數據集進行可重複採樣。這對於創建(和複製)數據的訓練/驗證/測試分區非常重要。如何在BigQuery Standard SQL中執行可重複採樣?

但是,博客使用Legacy SQL,其中Google has now deprecated贊成標準SQL。

你會如何重寫下面顯示的博客採樣代碼,但使用標準SQL?

#legacySQL 
SELECT 
    date, 
    airline, 
    departure_airport, 
    departure_schedule, 
    arrival_airport, 
    arrival_delay 
FROM 
    [bigquery-samples:airline_ontime_data.flights] 
WHERE 
    ABS(HASH(date)) % 10 < 8 
+0

不錯的問題和答案!我只想澄清一件事,那就是遺留SQL不被棄用。但是,我們將重點放在標準SQL的開發工作上。 –

回答

1

標準SQL將重新寫這樣的查詢:

#standardSQL 
SELECT 
    date, 
    airline, 
    departure_airport, 
    departure_schedule, 
    arrival_airport, 
    arrival_delay 
FROM 
    `bigquery-samples.airline_ontime_data.flights` 
WHERE 
    MOD(ABS(FARM_FINGERPRINT(date)), 10) < 8 

具體這裏的變化:

  • 一段時間(不冒號)從表中谷歌雲項目分開名稱。
  • 反引號(不是方括號)在表名中轉義連字符。 (不是%)。 (不是HASH)。這實際上是一個與Legacy SQL的HASH不同的哈希函數,其中wasn't in fact consistent over time就像博客暗示的那樣。