Форматировщик BigQuery
Форматируйте Google BigQuery Standard SQL по правилам BigQuery: имена в обратных кавычках project.dataset.table, строки в тройных кавычках и необработанные строки, комментарии # и параметры @query. QUALIFY размещается на отдельной строке, SELECT * EXCEPT и REPLACE остаются в строке, а предложения оконных функций получают отступы. Незакрытые строки, комментарии и скобки отмечаются с указанием строки и столбца, что помогает аналитикам и инженерам данных проверять запросы.
Часто задаваемые вопросы
Какой синтаксис BigQuery распознается?
Распознаются имена в обратных кавычках, например `project.dataset.table`, строки в одинарных и двойных кавычках с экранированием обратной косой чертой, строки в тройных кавычках и префиксы необработанных строк r'' и байтовых строк b''. Параметры @named и переменные @@system сохраняются без изменений.
Форматтер сохраняет комментарии, начинающиеся с решётки (#)?
Да. BigQuery допускает комментарии #, а также комментарии -- и /* */; все три типа остаются на месте.
Как обрабатывается QUALIFY?
QUALIFY начинается с отдельной строки, как WHERE и HAVING. Условие фильтра получает отступ.
Как обрабатываются SELECT * EXCEPT и REPLACE?
Если за звездочкой следует EXCEPT или REPLACE, они остаются на той же строке, что и звездочка. Так SELECT * EXCEPT (col) не будет ошибочно принят за оператор EXCEPT для множеств.
Массивы и структуры сохраняются без изменений?
Да. Индексы массивов, например arr[OFFSET(0)], сохраняются без изменений, а конструкторы STRUCT и ARRAY форматируются как другие вызовы функций.
Как форматируются оконные функции?
Длинные предложения OVER оформляются как блок с отступом, а PARTITION BY и ORDER BY размещаются на отдельных строках. Короткие остаются в строке.
Меняется ли регистр ключевых слов?
Нет. Регистр ключевых слов, функций и имен сохраняется. Меняются только пробелы и разрывы строк.
Какие ошибки обнаруживаются?
Незакрытые строки, строки в тройных кавычках, имена в обратных кавычках, блочные комментарии и несбалансированные скобки — для каждого случая указаны строка и столбец. Запрос не отправляется в BigQuery и ничего не стоит.
Каков максимальный размер входных данных?
До 1 МБ на запрос и 128 КБ на инструкцию. Скрипты с большим количеством инструкций форматируются по одной инструкции за раз.
Можно ли выбрать отступы и сохраняется ли мой запрос?
Используйте 2 или 4 пробела либо табуляцию. Запрос форматируется только в памяти и никогда не сохраняется.