一个受dbt启发的测试和审计工具,适用于不使用dbt的用户。
schemaql的Python项目详细描述
方案
一个受dbt启发的测试和审计工具,适用于不使用dbt的用户。在
安装
- 将文件夹复制到本地存储库。在
- 在这个文件夹中创建一个新的Python虚拟环境并激活它。在
- 在local repo文件夹中,运行
pip install -r requirements
在这个virtualenv中安装依赖包。在 - 在local repo文件夹中,运行
pip install -e .
在本地安装dev版本。在
现在您应该能够从命令行运行schemaql -h
。在
schemaql -h usage: schemaql [-h][-p None][-c config.yml][-x connections.yml][action] positional arguments: action Action ('test', or 'generate') optional arguments: -h, --help show this help message and exit -p None, --project None Project -c config.yml, --config-file config.yml Config file -x connections.yml, --connections-file connections.yml Connections file
配置
SchemaQL需要*.yml
进行配置:
在connections.yml
中,您定义了如何连接到一个或多个数据仓库连接,如下所示:
在config.yml
中,定义以下内容:
- 日志记录,其中
output
是相对于项目路径的目录。在
logs:output:logs
- 一个
collector
,它是关于如何收集测试结果的定义。当前支持的有:- ^{cd9}
csv
database
对于json
和csv
,只需要提供output
路径。在
collector:type:csvoutput:output
对于database
集合,需要通过output
提供连接名称(来自connections.yml
)和目标表:
collector:type:databaseconnection:project-1-snowflakeoutput:test_results
collector
连接不需要与项目连接相同的连接,甚至不需要相同的连接类型。因此,可以针对BigQuery运行测试,但可以使用Snowflake或Postgres收集测试结果。在
projects
这是一个连接的组合,以及要使用的数据库和模式的列表。如果不在数据库键中定义任何模式,则将处理所有模式。在
projects:project-1:connection:project-1-snowflakeschema:database_1:-schema_1-schema_2project-2:connection:project-2-bigqueryschema:my_bg_project_1my_bg_project_2- data_set_1- data_set_2
使用
生成
SchemaQL对yml
文件中包含的架构信息运行测试。您可以从头开始编写,使用现有的dbt
模式文件,或者使用schemaql
来生成它们。在
为所有项目生成架构文件:
schemaql generate
仅为"my_project"
生成架构文件:
schemaql generate -p my_project
测试
schemaql test
仅测试"my_project"
:
schemaql test -p my_project
内置测试
模式测试
非空
检查列值是否为NULL
models:-name:my_tablecolumns:-name:col_1tests:-not_null
关系
检查列值是否与其他实体中列的值匹配
models:-name:my_tablecolumns:-name:col_1tests:-relationships:to:my_other_tablefield:col_1
唯一
检查列值是否唯一
models:-name:my_tablecolumns:-name:col_1tests:-unique
数据测试
可接受的_值
检查列值是否与预定义的接受值列表匹配
models:-name:my_tablecolumns:-name:day_of_weekdescription:tests:-accepted_values:values:['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
至少一个
检查列是否至少有一个值
models:-name:my_tablecolumns:-name:col_1tests:-at_least_one
相等表达式(待定)
频率(待定)
非常数
检查列是否具有多个值
models:-name:my_tablecolumns:-name:col_1tests:-not_constant近期(待定)
唯一的行
检查表格行是否唯一。
如果未指定columns
,则使用所有列。在
models:-name:my_tabletests:-unique_rows:columns:[col_1,col_2,col_3]
- 项目
标签: