BigQuery標準SQL與傳統SQL



雖然SQL沒有像Python(或任何其他指令碼語言)那樣的底層依賴關係,但是您選擇的BigQuery SQL版本之間存在差異。

由於Google Cloud Platform認識到開發人員熟悉不同的SQL方言,因此他們為那些可能習慣於使用更傳統或“傳統”SQL版本的人提供了選擇。

標準SQL和傳統SQL之間的區別

標準SQL和傳統SQL之間的主要區別在於型別對映。雖然傳統SQL支援與通用資料型別更緊密匹配的型別,但標準SQL型別更特定於BigQuery。例如,BigQuery標準SQL支援的時間戳值的範圍要窄得多。

其他差異包括 -

  • 使用反引號而不是方括號來轉義特殊字元。
  • 表引用使用冒號而不是點。
  • 不支援萬用字元運算子。

在BigQuery SQL環境中切換標準SQL和傳統SQL非常簡單。在編寫和執行SQL查詢之前,只需在第1行添加註釋:“#legacy”。

BigQuery標準SQL的優勢

與派生的傳統SQL方言相比,標準SQL使SQL開發人員能夠以更高的靈活性和效率編寫查詢。標準SQL透過提供在處理專業環境中遇到的“雜亂”資料時有用的函式和框架,提供了更多“現實世界”的實用程式。

標準SQL促進以下方面 -

  • 更靈活的WITH子句,使使用者能夠在指令碼中多次重複使用子查詢和CTE。
  • 可以用SQL或JavaScript編寫的使用者自定義函式。
  • SELECT子句中的子查詢。
  • 相關子查詢。
  • 複雜資料型別(ARRAY和STRUCT型別)。

標準SQL和傳統SQL之間的不相容性

通常,標準SQL和傳統SQL操作之間不相容的情況不會導致很多問題。但是,有一種情況適用於AirFlow使用者。

如果使用BigQueryExecuteQuery運算子,則可以指定是否使用傳統SQL。要使用標準SQL,請設定“use_legacy_sql = FALSE”

但是,如果開發人員未能執行此操作並使用僅與標準SQL相容的函式,例如TIMESTAMP_MILLIS()(一個時間戳轉換函式),則整個查詢可能會失敗。

廣告

© . All rights reserved.