Форматировщик Redshift
Форматируйте Amazon Redshift SQL по правилам Redshift для строк с экранированием обратной косой чертой, идентификаторов в двойных кавычках, таблиц #temp, приведений типов :: и тел функций $$. QUALIFY и MINUS сохраняются как предложения, ветви MERGE начинаются с новых строк, а длинные списки столбцов размещаются по одному в строке. О незакрытых строках и скобках сообщается с указанием строки и столбца, что помогает аналитикам и инженерам по данным проверять код для хранилища данных.
Часто задаваемые вопросы
Какой синтаксис 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 МБ на запрос и 128 КБ на инструкцию. Длинные ETL-скрипты форматируются по одной инструкции за раз.
Можно ли выбрать отступы и сохраняется ли мой SQL?
Используйте 2 или 4 пробела либо табуляцию. SQL форматируется только в памяти и никогда не сохраняется.