首页 > 解决方案 > 使用 DAX (Power BI) 的动态集群

问题描述

我有以下数据模型:

表:合同

ContractID ValidFrom ValidTo 1 01/01/2020 15/04/2021

表:房间

RoomID ContractID Amount ValidFrom ValidTo 1 1 5 01/01/2020 18/01/2021 2 1 6 19/01/2021 15/04/2021

表:集群

ClusterID RangeFrom RangeTo RangeDesc 1 0 2 Small 2 3 5 Medium 3 6 10 Large

&表:日期(标准日历表)

我的事实表是合同,它通过 ContractID 与房间有关。

我需要做的是:

例子:

新选择值:2021-02

你能帮我处理 DAX 吗?

谢谢!

标签: powerbidax

解决方案


您可以通过以下措施达到期望的结果

_maxVal = 
VAR _selectedMaxDatebyYr_Mo =
    CALCULATE (
        MAX ( 'Calendar'[Calendar_Date] ),
        ALLSELECTED ( 'Calendar'[YR-MO] )
    )
VAR _maxRoomAmount =
    CALCULATE (
        MAX ( Rooms[Amount] ),
        FILTER ( Rooms, Rooms[ValidFrom] <= _selectedMaxDatebyYr_Mo && Rooms[ValidTo] >= _selectedMaxDatebyYr_Mo )
    )
RETURN
    _maxRoomAmount

_rangeDesc = 
SWITCH (
    TRUE (),
    [_maxVal] == BLANK (), BLANK (),
    CALCULATE (
        MAX ( 'Cluster'[RangeDesc] ),
        FILTER (
            'Cluster',
            'Cluster'[RangeFrom] <= [_maxVal]
                && 'Cluster'[RangeTo] >= [_maxVal]
        )
    )
)
_isValid = SWITCH(TRUE(),[_maxVal]==BLANK(),BLANK(),"Yes")

解决方案

解决方案

最小依赖 - 具有以下结构的日历表

| Calendar_Date | YR-MO  |
|---------------|--------|
| 2000-01-01    | 2000-1 |

推荐阅读