1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
sqlfmt formats your dbt SQL files so you don't have to. It is similar
in nature to black, gofmt, and rustfmt (but for SQL).
sqlfmt promotes collaboration. An auto-formatter makes it easier to
collaborate with your team and solicit contributions from new
people. You will never have to mention (or argue about) code style in
code reviews again.
sqlfmt is fast. Forget about formatting your code, and spend your time
on business logic instead. sqlfmt processes hundreds of files per
second and only operates on files that have changed since the last
run.
sqlfmt works with Jinja. It formats the code that users look at, and
therefore doesn't need to know anything about what happens after the
templates are rendered.
sqlfmt integrates with your workflow. As a CLI written in Python, it's
easy to install locally on any OS and run in CI. Plays well with dbt,
pre-commit, SQLFluff, VSCode, and GitHub Actions. sqlfmt powers the
dbt Cloud IDE's Format button.
sqlfmt is not configurable, except for line length. It enforces a
single style. sqlfmt maintains comments and some extra newlines, but
largely ignores all indentation and line breaks in the input file.
sqlfmt is not a linter. It does not parse your code into an AST; it
just lexes it and tracks a small subset of tokens that impact
formatting. This lets us "do one thing and do it well:" sqlfmt is very
fast, and easier to maintain and extend than linters that need a full
SQL grammar.
For now, sqlfmt only works on select, delete, grant, revoke, and
create function statements (which is all you need if you use sqlfmt
with a dbt project). It is being extended to additional DDL and
DML. Visit this tracking issue for more information.
|