prettier-plugin-bq is a prettier plugin for GoogleSQL, which is a dialect of BigQuery.
- support pipe syntax
- support procedural language (a.k.a BigQuery Scripting)
- try to handle jinja templates (see below)
about jinja template support
Roughly speaking, jinja statements are expected to contain valid SQL expression(s).
SELECT
-- OK! `foo * {{i}}` and `bar * {{i}}` are valid SQL expressions (alias is also allowed).
{% for i in range(10) %}
foo * {{i}} as `f_{{i}}`,
bar * {{i}} as `b_{{i}}`,
{% endfor %}
FROM tabelname
WHERE
-- OK! `CURRENT_DATE() - 3 <= dt` and `TRUE` are valid SQL expressions.
{% target.name == 'dev' %} CURRENT_DATE() - 3 <= dt {% else %} TRUE {% endif %}
;SELECT *
FROM tabelname
-- Error! WHERE clause is not valid SQL expression.
{% target.name == 'dev' %} WHERE CURRENT_DATE() - 3 <= dt {% endif %}
;You can try prettier-plugin-bq online.
https://kitta65.github.io/prettier-plugin-bq/
npm install --save-dev prettier prettier-plugin-bq
You can format .sql and .bq file by the following command.
npx prettier --write ./xxx.sql --plugin=prettier-plugin-bq
If you want to omit --plugin=prettier-plugin-bq, add the plugin to your .prettierrc.
For more information, please read the prettier document.
prettier-plugin-bq supports the options below.
| API Option | CLI Option | Default | Description |
|---|---|---|---|
| indentCte | indent-cte | true | Indent CTEs in with clause. |
| printBlankLineAfterCte | print-blank-line-after-cte | false | Print blank line after CTE in with clause. |
| printKeywordsInUpperCase | print-keywords-in-upper-case | true | Print keywords, built-in functions and pseudo columns (e.g. _PARTITIONDATE, _PARTITIONTIME) in upper case. |
Note
printPseudoColumnsInUpperCase was merged into printKeywordsInUpperCase.
This plugin doesn't follow any famous style guides, because none of them account for GoogleSQL's latest syntax (such as pipe syntax).
I'm not ready to accept pull requests, but your feedback is always welcome. If you find any bugs, please feel free to create an issue.