SQLFluff是一种方言且可配置的SQL Linter。 Sqlfluff考虑了ELT应用程序,还可以与Jinja Templating和DBT一起使用。 Sqlfluff将自动使用大多数肿块错误,使您可以将时间集中在重要的事情上。
尽管SQL的实现是相当一致的,但是有几种不同的方言,以及语法和语法的变化。 SQLFluff当前支持以下SQL方言(尽管也许还不满):
sparksql方言)。我们的目标是使这些方言的支持变得容易扩展,并添加其他目前不支持的方言。请提出问题(或提出任何现有问题),让我们知道对缺失支持的需求。
人们特别欢迎那些知道缺少语法或方言的人的拉请请求,这是您获得支持的问题。我们很乐意与任何潜在的贡献者合作,以帮助他们增加此支持。请首先提出任何大型功能更改的问题,以确保在花费这项工作之前,它非常适合该项目。
SQL本身并不能很好地适合模块化,因此,要引入一些灵活性和可重复性,通常会在我们的模块化文档中进行更多的讨论。
SQLFLUFF支持以下模板:
同样,如果您希望支持更多的模板语言/语法,请提出问题。
我们也有一个VS代码扩展名:
要开始,请安装软件包并运行sqlfluff lint或sqlfluff fix 。
$ pip install sqlfluff
$ echo " SELECT a + b FROM tbl; " > test.sql
$ sqlfluff lint test.sql --dialect ansi
== [test.sql] FAIL
L: 1 | P: 1 | LT01 | Expected only single space before ' SELECT ' keyword.
| Found ' ' . [layout.spacing]
L: 1 | P: 1 | LT02 | First line should not be indented.
| [layout.indent]
L: 1 | P: 1 | LT13 | Files must not begin with newlines or whitespace.
| [layout.start_of_file]
L: 1 | P: 11 | LT01 | Expected only single space before binary operator ' + ' .
| Found ' ' . [layout.spacing]
L: 1 | P: 14 | LT01 | Expected only single space before naked identifier.
| Found ' ' . [layout.spacing]
L: 1 | P: 27 | LT01 | Unnecessary trailing whitespace at end of file.
| [layout.spacing]
L: 1 | P: 27 | LT12 | Files must end with a single trailing newline.
| [layout.end_of_file]
All Finished ? !另外,您可以使用官方的SQLFluff Docker映像,也可以使用SQLFluff在线使用play。
有关完整的CLI使用和规则参考,请参见SQLFLUFFE文档。
有关完整文档,请访问docs.sqlfluff.com。该文档是从该存储库生成的,因此请提出问题或提取任何添加,更正或澄清的请求。
SQLFLUFF遵守语义版本,因此破坏更改应仅限于主要版本。某些元素(例如Python API)处于稳定状态较不稳定的状态,并且可能更频繁地看到更大的变化。有关打破变化以及如何在版本之间迁移的详细信息,请参见我们的发行说明。有关更多详细信息,请参见Changelog。如果您想加入,请考虑贡献。
新版本每月进行。有关更多信息,请访问版本。
我们在Slack上有一个快速发展的社区,来加入我们!
在Twitter @sqlfluff上关注我们,获取公告和其他相关帖子。
我们感谢所有贡献者。这个项目有很多事情要做,我们才刚刚开始。
如果您想了解有关SQLFluff的架构的更多信息,则可以在此处找到更多。
如果您想做出贡献,请查看Github上的空缺问题。您还可以查看贡献指南。

交钥匙分析堆栈,在Datacoves.com上找到更多信息。