Форматировщик Spark SQL
Форматируйте Apache Spark SQL и запросы Databricks по правилам Spark для идентификаторов в обратных кавычках, строк с экранированием обратной косой чертой, необработанных строк r'' и подстановок ${var}. CLUSTER BY, DISTRIBUTE BY и SORT BY сохраняются как предложения, LATERAL VIEW и LEFT SEMI или ANTI JOIN начинаются с новых строк, а SELECT * EXCEPT остается в одной строке. Об ошибках с незакрытыми строками и скобками сообщается с указанием строки и столбца, что помогает инженерам по данным.
Часто задаваемые вопросы
Какой синтаксис Spark SQL распознается?
Распознаются идентификаторы в обратных кавычках, строки в одинарных и двойных кавычках с экранированием обратной косой чертой, необработанные строки 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?
Да. Ветви WHEN MATCHED и WHEN NOT MATCHED в инструкциях MERGE INTO для Delta Lake начинаются с новых строк.
Можно ли вставить SQL из строки PySpark?
Да, вставьте сам текст SQL без окружающих его кавычек Python. Результат можно вставить обратно в spark.sql() или в ячейку ноутбука.
Меняется ли регистр ключевых слов?
Нет. Ключевые слова и имена сохраняют регистр, в котором вы их написали. Меняются только пробелы и переносы строк.
Какие ошибки обнаруживаются?
Незакрытые строки, идентификаторы в обратных кавычках, подстрочные индексы и блочные комментарии, а также несбалансированные скобки — для каждого случая указываются строка и столбец. На кластере ничего не выполняется.
Каков максимальный размер входных данных?
До 1 MB на запрос и 128 KB на инструкцию. Экспорт из ноутбука с множеством инструкций форматируется по одной инструкции за раз.
Можно ли выбрать отступы и сохраняется ли мой SQL?
Используйте 2 или 4 пробела либо табуляцию. SQL форматируется только в памяти и никогда не сохраняется.