3 个版本
0.1.2 | 2024年3月22日 |
---|---|
0.1.1 | 2024年3月22日 |
0.1.0 | 2024年3月22日 |
#650 在 数据库接口
每月 26 次下载
25KB
472 行
BADASS
BADASS 是一个受 DBT 和 Airflow 启发的 CLI 工具。主要是我用来更熟悉 Rust 的游乐场。
配置
BADASS 使用 config-rs 在当前工作目录中搜索 BADASS 配置 (.toml, .json, .yaml 或 .ini)。还可以使用环境变量(以 BADASS_ 开头)覆盖设置
BADASS_output_compiled=/tmp/compiled badass settings
The settings are:
Settings {
models: Models {
location: "./demo/models",
},
output: Output {
compiled: "/tmp/compiled",
materialized: "./target/materialized",
},
query_engine: QueryEngine {
params: "host=localhost user=tim",
},
}
功能
编译 SQL 模板
badass compile
我们利用 minijinja 生成 SQL 文件。
{% set payment_methods = ["bank_transfer", "credit_card", "gift_card"] %}
select
order_id,
{%- for payment_method in payment_methods %}
sum(case when payment_method = '{{payment_method}}' then amount end) as {{payment_method}}_amount,
{%- endfor %}
sum(amount) as total_amount
from app_data.payments
group by 1
编译成以下内容
select
order_id,
sum(case when payment_method = 'bank_transfer' then amount end) as bank_transfer_amount,
sum(case when payment_method = 'credit_card' then amount end) as credit_card_amount,
sum(case when payment_method = 'gift_card' then amount end) as gift_card_amount,
sum(amount) as total_amount
from app_data.payments
group by 1
查看(编译的)SQL 模板查询结果
badass show demo
.------------------------.
| Tim | Van Wassenhove |
| Tiebe | Van Wassenhove |
| Amber | Van Wassenhove |
| Evy | Penninckx |
'------------------------'
实现 SQL 模板
badass materialize
使用(编译的)SQL 模板来构建数据库工件(表、视图等)
目前我们只渲染 CTAS,例如
SELECT * FROM foo
变为
CREATE TABLE xxx AS SELECT * FROM foo
依赖项
~13–24MB
~363K SLoC