如何在dbt中选择两个模型共同关联的所有中间模型?
在dbt中筛选两个模型之间的关联模型(交集)
当然可以实现这个需求,dbt的选择器语法支持通过交集运算精准筛选同时关联模型A和B的中间模型,也就是A到B路径上的所有模型。
具体操作是利用dbt的选择器逻辑运算符intersect,结合上下游选择符:
A+代表模型A及其所有下游模型(包括A)+B代表模型B及其所有上游模型(包括B)- 两者通过
intersect取交集,就能得到同时在A下游、B上游的模型,也就是你要的A和B之间的关联模型
举个实际命令例子(比如你要运行这些模型):
dbt run --select "A+ intersect +B"
如果不需要包含A或B本身,可以调整命令剔除两端模型:
dbt run --select "(A+ except A) intersect (+B except B)"
这个逻辑适用于dbt的所有核心命令(run、test、build等),也可以结合标签、目录路径等其他选择器进一步缩小范围,比如只筛选某个目录下的交集模型:
dbt run --select "models/staging/A+ intersect +models/marts/B"
内容的提问来源于stack exchange,提问作者Joseph Jeremiah Noonan
相关产品推荐
相关产品推荐

