2016-08-17 8 views
0

こんにちは、クエリ文字列がレガシー構文またはSQL-2011構文であるかどうかをプログラムで検出する方法はありますか?私は後者が`project.dataset.table`を使用している間、前者はテーブル参照のために[project:dataset.table]を使用することを知っていますが、これは非常に弾力的ではありません。クエリがレガシーまたはSQL 2011の構文であるかどうかをプログラムで判断しますか?

答えて

4

BigQueryにUIで[Use Legacy SQL]チェックボックスが表示され、クエリAPIに[]オプションが設定されているため、すべての場合にクエリテキストからわかる方法はありません。たとえば、次のクエリを考えてみます。

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

両方の方言でクエリが有効であっても結果は非常に異なります。

標準SQLクエリには、配列リテラルなどの場合でも、[]が含まれます。

1

クエリが構文上正しいと想定し、実際に動作することが期待されている場合、両方のオプション(Legacy and Standard)を使用してDry Runを実行し、どちらが失敗したかを確認できます。結果に基づいて、潜在的に答えを得ることができます

関連する問題