如果查询是遗留的或SQL 2011语法,以编程方式确定?

时间:2016-08-17 17:55:16

标签: google-bigquery

您有没有办法以编程方式检测查询字符串是否为旧版或SQL-2011语法?我知道前者使用python main.py表示引用,而后者使用[project:dataset.table],但这似乎不太可靠。

2 个答案:

答案 0 :(得分:4)

在所有情况下都无法从查询文本中分辨出来,这就是为什么BigQuery在UI中具有“使用旧版SQL”复选框以及查询API的use_legacy_sql选项。例如,请考虑以下查询:

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

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

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

答案 1 :(得分:1)

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