Snowflakeフォーマッター
SnowflakeのSQLを、$$文字列、//コメント、::キャスト、src:customer.nameのような半構造化パスに対応したSnowflakeのルールでフォーマットします。QUALIFYとMINUSは句として扱い、SELECT * EXCLUDE、RENAME、REPLACEは同じ行に保ち、ASOF JOINは改行します。閉じていない文字列や括弧は行番号と列番号とともに報告されるため、データエンジニアがデータウェアハウスのクエリやスクリプトを確認するのに役立ちます。
よくある質問
どのSnowflake構文に対応していますか?
バックスラッシュエスケープや二重引用符に対応した単一引用符付き文字列、$$で囲まれた文字列、二重引用符付き識別子、$1の列参照、::キャストを認識します。--や/* */に加えてSnowflakeが受け付ける//行コメントも保持します。
半構造化パスはそのまま保持されますか?
はい。src:customer.nameやv:items[0]::stringのようなパスは結合されたままなので、VARIANTへのアクセスが空白で分割されることはありません。
どのSnowflake句に対応していますか?
QUALIFYは独立した行に配置され、MINUSはほかの集合演算子と同様に扱われます。ASOF JOINはほかのJOINと同様に改行します。
SELECT * EXCLUDEはどう扱われますか?
EXCLUDE、RENAME、REPLACE、ILIKEは、対象となるアスタリスクと同じ行に保たれます。そのため、SELECT * EXCLUDE (secret)は1つの列式として表示されます。
$$内のプロシージャ本体はどう扱われますか?
$$マーカーで囲まれたJavaScript、Python、Snowflake Scriptingのプロシージャ本体は、記述されたとおりに保持されます。Snowflakeにとってこれらは文字列であり、再フォーマットするとコードが変わる可能性があるためです。
MERGE に対応していますか?
はい。WHEN MATCHEDとWHEN NOT MATCHEDの分岐はそれぞれ新しい行から始まります。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワードや名前の大文字・小文字は入力したとおりに保たれます。Snowflakeでは引用符付き識別子の大文字・小文字が区別され、変更されることはありません。
どのようなエラーが検出されますか?
閉じていない文字列、$$文字列、引用符付き識別子、ブロックコメント、対応していない括弧を、行番号と列番号とともに報告します。データウェアハウスに何も送信されません。
入力の最大サイズはどれくらいですか?
1リクエストあたり最大1 MB、1ステートメントあたり最大128 KBです。ステートメントが多いワークシートは、1つずつフォーマットされます。
インデントを選べますか?また、SQLは保存されますか?
スペース2個または4個、あるいはタブを使用できます。SQLはメモリ上でのみフォーマットされ、保存されません。