【发布时间】:2016-08-18 02:15:09
【问题描述】:
您好,有没有办法以编程方式检测查询字符串是采用旧版语法还是 SQL-2011 语法?我知道前者使用[project:dataset.table] 作为表引用,而后者使用`project.dataset.table`,但这似乎不是很安全。
【问题讨论】:
标签: google-bigquery
您好,有没有办法以编程方式检测查询字符串是采用旧版语法还是 SQL-2011 语法?我知道前者使用[project:dataset.table] 作为表引用,而后者使用`project.dataset.table`,但这似乎不是很安全。
【问题讨论】:
标签: google-bigquery
在所有情况下都无法仅从查询文本中判断,这就是 BigQuery 在 UI 中具有“使用旧版 SQL”复选框和查询 API 的 use_legacy_sql 选项的原因。例如,考虑这个查询:
SELECT *
FROM (SELECT 1 AS x), (SELECT 2), (SELECT 3);
尽管查询在两种方言中都有效,但结果却大不相同。
标准 SQL 查询仍然可以包含 [],例如数组文字。
【讨论】:
假设查询在语法上是正确的并且预计会实际工作 - 您可以使用两个选项 (Legacy and Standard) 执行 Dry Run 并查看哪个失败,哪个失败。根据结果,您可能会得出答案
【讨论】: