BigQueryフォーマッター
アナリストやデータエンジニアがクエリを確認しやすいよう、Google BigQuery Standard SQLをBigQueryのルールに従って整形します。バッククォートで囲まれたproject.dataset.table名、三重引用符やraw文字列、#コメント、@queryパラメーターに対応しています。QUALIFYは独立した行に配置し、SELECT * EXCEPTとREPLACEは同じ行に保ち、ウィンドウ句をインデントします。閉じていない文字列、コメント、括弧は、行と列を示して報告します。
よくある質問
どのようなBigQuery構文に対応していますか?
`project.dataset.table`のようなバッククォートで囲まれた名前、バックスラッシュエスケープを含む単一引用符や二重引用符の文字列、三重引用符の文字列、raw文字列のr''とバイト列のb''接頭辞を認識します。@namedパラメーターと@@system変数は入力どおりに保持されます。
フォーマッターはハッシュコメント(#)を保持しますか?
はい。BigQueryでは#コメントに加えて、--コメントと/* */コメントも使用できます。いずれも位置を保ちます。
QUALIFYはどのように処理されますか?
QUALIFYはWHEREやHAVINGと同様に独立した行に配置されます。フィルター条件はその下にインデントされます。
SELECT * EXCEPTとREPLACEはどうなりますか?
EXCEPTまたはREPLACEがアスタリスクの後に続く場合は、アスタリスクと同じ行に保持されます。これにより、SELECT * EXCEPT (col)がEXCEPT集合演算子と誤認されるのを防ぎます。
配列と構造体はそのまま保持されますか?
はい。arr[OFFSET(0)]のような配列の添字は入力どおりに保持され、STRUCTとARRAYのコンストラクターは他の関数呼び出しと同様に整形されます。
ウィンドウ関数はどのように配置されますか?
長いOVER句はインデントされたブロックになり、PARTITION BYとORDER BYはそれぞれ独立した行に配置されます。短い句は同じ行に保たれます。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワード、関数、名前の大文字・小文字は入力時のまま保持されます。変更されるのは空白と改行だけです。
どのようなエラーが検出されますか?
閉じていない文字列、三重引用符付き文字列、バッククォートで囲まれた名前、ブロックコメント、対応していない括弧を、行番号と列番号とともに報告します。クエリはBigQueryに送信されず、費用もかかりません。
入力の最大サイズはどれくらいですか?
1リクエストあたり最大1 MB、1ステートメントあたり最大128 KBです。ステートメントが多いスクリプトは、1つずつフォーマットされます。
インデントを選択できますか?クエリは保存されますか?
スペース2個または4個、あるいはタブを使用できます。クエリはメモリ上でのみフォーマットされ、保存されません。