Azure Stream Analytics查询:如何排除特定租户数据生成第二输出?
解决思路:获取不在指定租户列表中的记录
我来帮你搞定这个问题!你之前用JOIN成功筛选出t1、t2的租户数据,现在要反向筛选的话,因为你的查询环境大概率不支持从Blob JSON数据源直接使用NOT IN子查询,我们可以用LEFT JOIN + IS NULL的兼容写法来实现:
OtherTenantInput AS ( SELECT Input.userId, Input.tenantId FROM Input LEFT JOIN Tenants TNTS ON Input.tenantId = TNTS.tenantId WHERE TNTS.tenantId IS NULL )
逻辑说明:
LEFT JOIN会保留Input中的所有记录,同时尝试匹配TNTS里的租户ID- 当
Input的租户ID不在TNTS的列表中时,TNTS.tenantId会返回NULL - 通过
WHERE TNTS.tenantId IS NULL就能精准过滤出所有不属于t1、t2的租户记录
另外,如果你已经定义好了之前的TenantInput数据集,也可以用EXCEPT操作简化写法(如果你的查询引擎支持该语法):
OtherTenantInput AS ( SELECT userId, tenantId FROM Input EXCEPT SELECT userId, tenantId FROM TenantInput )
这个逻辑直接取Input中存在、但TenantInput(仅t1、t2的记录)中不存在的部分,结果和JOIN写法完全一致。
内容的提问来源于stack exchange,提问作者Juerg Staub
相关产品推荐
相关产品推荐

