上周我一直在努力理解为什么 SQLFLUFF 会跳过我项目中的 linting 宏部分。我的项目结构是这样的:
GCP_Project
|- models
|- macros
|- .sqlfluffignore
|- .sqlfluff
|- dbt_project.yml
|- .pre-commit-config.yaml
|- profiles.yml
模型存储在
models
目录中,宏位于 macros
文件夹中。模板程序设置为 dbt
,如下所示:
[sqlfluff]
verbose = 1
templater = dbt
dialect = bigquery
sql_file_exts = .sql
max_line_length = 120
rules = CP01
[sqlfluff:templater]
unwrap_wrapped_queries = true
[sqlfluff:templater:dbt]
target = nonprod
[sqlfluff:templater:jinja]
apply_dbt_builtins = true
[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper
运行
pre-commit run --all-files
后,当 dbt 模型被检查时,宏文件会被跳过,显示以下消息:
WARNING Skipped file /Users/.../macros/sample.sql because it is a macro
值得注意的是,如果我将模板器更改为
Jinja
,则只有宏文件会被检查。我的需要是 在项目中拥有能够同时检查模型和宏的 linter。