Hiveフォーマッター
Hiveのルールに従ってApache Hive HiveQLを整形します。バッククォートで囲まれた識別子、バックスラッシュエスケープを含むシングルクォートおよびダブルクォートの文字列、${hivevar:name}変数に対応しています。CLUSTER BY、DISTRIBUTE BY、SORT BYは句として保持され、LATERAL VIEWとLEFT SEMI JOINは新しい行から始まり、列と条件はインデントされます。Hadoopを扱うデータエンジニア向けに、閉じていない文字列や括弧を行番号と列番号とともに報告します。
よくある質問
どのHiveQL構文に対応していますか?
バッククォートで囲まれた識別子と、バックスラッシュエスケープを含むシングルクォートおよびダブルクォートの文字列が認識されます。Map['key']やarray[0]の添字、${hivevar:date}や${hiveconf:x}のような変数置換もそのまま保持されます。
どのHive句が独立した行に配置されますか?
CLUSTER BY、DISTRIBUTE BY、SORT BYはORDER BYと同様に扱われます。LATERAL VIEW、LATERAL VIEW OUTER、LEFT SEMI JOINはJOINと同様に新しい行から始まります。
変数置換は保持されますか?
はい。${hivevar:...}と${hiveconf:...}のプレースホルダーは、入力どおりに保持されます。中のコロンの前後に空白が入ることはありません。
INSERT OVERWRITEステートメントを整形できますか?
はい。INSERT OVERWRITE TABLE ... PARTITION (...)はひとまとまりに保たれ、それに続くSELECTはその下に整形されます。
MERGE に対応していますか?
はい。ACID MERGEステートメントのWHEN MATCHEDおよびWHEN NOT MATCHEDの分岐は、新しい行から始まります。
コメントは保持されますか?
はい。--の行コメントと/*ブロックコメント*/はそのまま保持されます。複数行のブロックコメントは、新しいレイアウトに合わせて再インデントされます。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワードや名前の大文字・小文字は入力したとおりに保たれます。変更されるのは空白と改行だけです。
どのようなエラーが検出されますか?
閉じていない文字列、バッククォート識別子、添字、ブロックコメント、および対応していない括弧を、それぞれ行番号と列番号とともに報告します。クラスター上で実行されることはありません。
入力の最大サイズはどれくらいですか?
1リクエストあたり最大1 MB、1ステートメントあたり最大128 KBです。ステートメントが多いスクリプトは、1つずつフォーマットされます。
インデントを選べますか?また、SQLは保存されますか?
スペース2個または4個、あるいはタブを使用できます。SQLはメモリ上でのみフォーマットされ、保存されません。