具有多个租户的条件过滤逻辑的 spark 作业

spark jobs with conditional filtering logic for multiple tenants

我有一个table喜欢

tenant_id,start_date,end_date,use_fancy_transformation
1,20180101,20180201,true
2,20180103,20180115,false

和像

这样的数据框
tenant_id,thing,date,value
1,1,20180105,1
2,2,20180107,2
1,2,20180120,2

现在有一些业务逻辑应该(有条件地)执行不同的事情。最简单的情况是从第一个 table 导出指定日期范围内的数据。显然,每个租户的日期范围都不同。

所以当执行(伪代码)时df.filter(date between(tenant2_start, tenant2_end).write.partitionBy("tenant_id", "current_date").parquet过滤器被应用并且tenant1的内容丢失。

我想到的可能的解决方案(none真的很满足我,都显得笨拙):

你看到优雅的出路了吗?

非等值连接可以很好地解决问题