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上找到更多信息。