【问题标题】:Programmatically detemine if a query is legacy or SQL 2011 syntax?以编程方式确定查询是旧式还是 SQL 2011 语法?
【发布时间】:2016-08-18 02:15:09
【问题描述】:

您好,有没有办法以编程方式检测查询字符串是采用旧版语法还是 SQL-2011 语法?我知道前者使用[project:dataset.table] 作为表引用,而后者使用`project.dataset.table`,但这似乎不是很安全。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    在所有情况下都无法仅从查询文本中判断,这就是 BigQuery 在 UI 中具有“使用旧版 SQL”复选框和查询 API 的 use_legacy_sql 选项的原因。例如,考虑这个查询:

    SELECT *
    FROM (SELECT 1 AS x), (SELECT 2), (SELECT 3);
    

    尽管查询在两种方言中都有效,但结果却大不相同。

    标准 SQL 查询仍然可以包含 [],例如数组文字。

    【讨论】:

      【解决方案2】:

      假设查询在语法上是正确的并且预计会实际工作 - 您可以使用两个选项 (Legacy and Standard) 执行 Dry Run 并查看哪个失败,哪个失败。根据结果​​,您可能会得出答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-04
        • 2014-07-09
        • 1970-01-01
        • 2010-12-29
        • 2016-11-09
        相关资源
        最近更新 更多