求DAX公式:统计VM表中未在指定关联表出现的服务器数量
正确DAX公式:统计符合多条件的VM服务器数量
需求拆解
需要统计VM表中同时满足以下条件的唯一服务器名称数量:
- 服务器名称未出现在Tool表中
- 服务器名称未出现在Excluded表中
Tool_Name为"D"的记录里 - 服务器名称未出现在Active表中
Tool_Name为"D"的记录里
正确DAX公式
CountQualifiedServers = -- 定义需要排除的服务器集合 VAR ToolServers = VALUES(Tool[Server_name]) VAR ExcludedDServers = CALCULATETABLE(VALUES(Excluded[Server_name]), Excluded[Tool_Name] = "D") VAR ActiveDServers = CALCULATETABLE(VALUES(Active[Server_name]), Active[Tool_Name] = "D") -- 合并所有需排除的服务器列表 VAR AllExcludedServers = UNION(ToolServers, ExcludedDServers, ActiveDServers) -- 统计VM表中不在排除列表内的唯一服务器数量 RETURN CALCULATE( DISTINCTCOUNT(VM[Server_name]), NOT(VM[Server_name] IN AllExcludedServers) )
公式说明
- 变量定义:
ToolServers:提取Tool表中所有唯一的服务器名称ExcludedDServers:筛选Excluded表中Tool_Name为"D"的记录,提取其中唯一的服务器名称ActiveDServers:筛选Active表中Tool_Name为"D"的记录,提取其中唯一的服务器名称
- 合并排除列表:用
UNION将三个需排除的服务器集合合并为一个总列表,避免重复排除 - 统计符合条件的服务器:用
CALCULATE筛选VM表中不在排除列表内的记录,通过DISTINCTCOUNT统计唯一服务器数量(若VM表中Server_name无重复,也可替换为COUNT,但DISTINCTCOUNT兼容性更强)
注意事项
- 确保各表的
Server_name列数据类型完全一致(如均为文本格式,无大小写、空格等格式差异),否则会导致匹配失败 - 若模型中存在基于index的表关系,当前公式未依赖该关系——因为需求仅需基于
Server_name的直接匹配,无需通过index关联筛选上下文 - 若需处理空值,可在变量中添加
FILTER排除空的Server_name,例如:VALUES(FILTER(Tool, NOT(ISBLANK(Tool[Server_name]))))
内容的提问来源于stack exchange,提问作者Gourav chahar
相关产品推荐
相关产品推荐

