Power BI DAX动态集群实现:按日期切片器查询有效合同及房间分类
DAX实现方案
1. 修正选中月份最后一天的度量值
你原逻辑中Datum应为日期表名笔误,修正后:
选中月份最后一天 = CALCULATE ( MAX ( 'Date'[Date] ), ALLSELECTED ( 'Date' ) )
该值为所有后续计算的判定基准。
2. 合同有效状态度量值
合同有效状态 = VAR 判定日 = [选中月份最后一天] RETURN IF ( SELECTEDVALUE(Contract[ValidFrom]) <= 判定日 && SELECTEDVALUE(Contract[ValidTo]) >= 判定日, "是", "否" )
3. 有效房间数量度量值
有效房间数量 = VAR 判定日 = [选中月份最后一天] VAR 当前合同ID = SELECTEDVALUE(Contract[ContractID]) RETURN CALCULATE ( MAX(Rooms[Amount]), FILTER ( Rooms, Rooms[ContractID] = 当前合同ID && Rooms[ValidFrom] <= 判定日 && Rooms[ValidTo] >= 判定日 ), REMOVEFILTERS('Date') )
4. 集群区间描述度量值
区间描述 = VAR 房间数 = [有效房间数量] RETURN CALCULATE ( MAX(Cluster[RangeDesc]), FILTER ( Cluster, Cluster[RangeFrom] <= 房间数 && Cluster[RangeTo] >= 房间数 ) )
可视化配置
- 日期切片器使用
Date表的yyyy-mm格式列,设置为单选模式 - 表格视觉对象添加
Contract表的基础字段+上述4个度量值 - 若仅需展示有效合同,给表格添加筛选条件:
合同有效状态 = "是"
效果验证
完全匹配你给出的示例:
- 切片器选2020-12时,判定日为2020-12-31,匹配到房间数5,区间返回Medium
- 切片器选2021-02时,判定日为2021-02-28,匹配到房间数6,区间返回Large
内容的提问来源于stack exchange,提问作者Juraj C
相关产品推荐
相关产品推荐

