Spark SQLフォーマッター
Apache Spark SQLとDatabricksのクエリを、バッククォート識別子、バックスラッシュエスケープ付き文字列、raw r''文字列、${var}置換に対応したSparkのルールでフォーマットします。CLUSTER BY、DISTRIBUTE BY、SORT BYは句として保持し、LATERAL VIEWとLEFT SEMIまたはANTI JOINは新しい行から始め、SELECT * EXCEPTは同じ行に保ちます。閉じていない文字列や括弧は行番号と列番号とともに報告されるため、データエンジニアに役立ちます。
よくある質問
どのSpark SQL構文に対応していますか?
バッククォート識別子、バックスラッシュエスケープ付きの単一引用符および二重引用符付き文字列、raw r''文字列、X''バイナリリテラルを認識します。${var}置換、map['key']やarray[0]の添字、::キャストはそのまま保持されます。
Spark固有のどの句に対応していますか?
CLUSTER BY、DISTRIBUTE BY、SORT BYは、ORDER BYと同様にそれぞれ独立した行に配置されます。LATERAL VIEW、LATERAL VIEW OUTER、LEFT SEMI JOIN、LEFT ANTI JOINは、ほかのJOINと同様に新しい行から始まります。
SELECT * EXCEPTはどう扱われますか?
アスタリスクの直後にあるEXCEPTは同じ行に保たれます。そのため、SELECT * EXCEPT (col)がEXCEPT集合演算子と混同されません。
${var}プレースホルダーは保持されますか?
はい。${env}や${hivevar:date}などの置換は、内部のコロンも含め、記述されたとおりに保持されます。
MERGE INTOに対応していますか?
はい。Delta LakeのMERGE INTOステートメントにあるWHEN MATCHEDとWHEN NOT MATCHEDの分岐は、それぞれ新しい行から始まります。
PySparkの文字列からSQLを貼り付けられますか?
周囲のPythonの引用符を除いて、SQLテキスト自体を貼り付けてください。結果はspark.sql()またはノートブックのセルに貼り付けられます。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワードや名前の大文字・小文字は入力したとおりに保たれます。変更されるのは空白と改行だけです。
どのようなエラーが検出されますか?
閉じていない文字列、バッククォート識別子、添字、ブロックコメント、および対応していない括弧を、それぞれ行番号と列番号とともに報告します。クラスター上で実行されることはありません。
入力の最大サイズはどれくらいですか?
1リクエストあたり最大1 MB、ステートメントあたり128 KBです。多数のステートメントを含むノートブックのエクスポートは、1ステートメントずつ整形されます。
インデントを選べますか?また、SQLは保存されますか?
スペース2個または4個、あるいはタブを使用できます。SQLはメモリ上でのみフォーマットされ、保存されません。