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()(一个时间戳转换函数),则整个查询可能会失败。

广告