You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dbt中使用Jinja块实现CASE WHEN语句?

在dbt中用Jinja实现CASE WHEN状态映射

直接用Jinja的循环功能可以快速生成你要的CASE WHEN语句,而且后续维护状态映射会更方便,具体实现如下:

  1. 先在dbt模型文件里定义状态映射的Jinja字典
{% set status_map = {
    0: 'pending',
    1: 'ordered',
    2: 'shipped',
    3: 'received',
    4: 'delivered'
} %}
  1. 用Jinja循环生成CASE WHEN分支
CASE status
    {% for code, label in status_map.items() %}
        WHEN {{ code }} THEN '{{ label }}'
    {% endfor %}
    ELSE NULL
END as status_mapping

这样编译后的SQL就是你想要的目标语句。如果之后需要新增或修改状态,只需要调整status_map里的键值对就行,不用手动修改每个WHEN分支,效率更高。

内容的提问来源于stack exchange,提问作者kimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:35:18