Redshiftフォーマッター
Amazon RedshiftのSQLを、バックスラッシュエスケープ付き文字列、二重引用符付き識別子、#tempテーブル、::キャスト、$$関数本体に対応したRedshiftのルールでフォーマットします。QUALIFYとMINUSは句として保持し、MERGEの分岐は新しい行から始め、長い列リストは1行につき1列に配置します。閉じていない文字列や括弧は行番号と列番号とともに報告されるため、アナリストやデータエンジニアがデータウェアハウスのコードを確認するのに役立ちます。
よくある質問
どのRedshift構文に対応していますか?
バックスラッシュエスケープや二重引用符に対応した単一引用符付き文字列、二重引用符付き識別子、#tempテーブル名、::キャストを認識します。正規表現演算子の~と~*およびその否定形、$$で囲まれた関数本体もそのまま保持されます。
PostgreSQLフォーマッターとはどう違いますか?
RedshiftはPostgreSQLをベースにしていますが、いくつか違いがあります。文字列内のバックスラッシュはエスケープ文字として機能し、#は演算子ではなく一時テーブル名の先頭に使われ、QUALIFYとMINUSも利用できます。このフォーマッターはそれらのルールに従います。
UDF本体はどう扱われますか?
$$マーカーで囲まれたPythonまたはSQLのユーザー定義関数本体は、記述されたとおりに保持されます。フォーマットされるのはその周囲のステートメントだけです。
どの句が独立した行になりますか?
SELECT、FROM、WHERE、GROUP BY、HAVING、QUALIFY、ORDER BY、LIMIT、OFFSETはそれぞれ独立した行に配置されます。MINUS、UNION、INTERSECT、EXCEPTは、結合するクエリを区切ります。
MERGE に対応していますか?
はい。WHEN MATCHEDとWHEN NOT MATCHEDの分岐はそれぞれ新しい行から始まります。
コメントは保持されますか?
はい。--と/* */のコメントはそのまま保持されます。複数行のブロックコメントは、新しいレイアウトに合わせて再インデントされます。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワードや名前の大文字・小文字は入力したとおりに保たれます。変更されるのは空白と改行だけです。
どのようなエラーが検出されますか?
閉じていない文字列、引用符付き識別子、$$本体、ブロックコメント、対応していない括弧を、行番号と列番号とともに報告します。SQLはクラスターに送信されません。
入力の最大サイズはどれくらいですか?
1リクエストあたり最大1 MB、1ステートメントあたり最大128 KBです。長いETLスクリプトは、1ステートメントずつフォーマットされます。
インデントを選べますか?また、SQLは保存されますか?
スペース2個または4個、あるいはタブを使用できます。SQLはメモリ上でのみフォーマットされ、保存されません。