DAX中具有多列的条件

时间:2016-10-25 19:24:34

标签: filter dax

我能以某种方式在DAX中使用多列进行过滤吗?

我需要过滤两个日期之间的差异低于300天,如下所示。

EVALUATE
(
    CALCULATETABLE
    (
        SUMMARIZE
        (
            'Sales',
            'Sales'[MaxDatum],
            'Sales'[MinDatum]
        ),
        INT('Sales'[MaxDatum] - 'Sales'[MinDatum]) < 300            
    )
)

所以它失败了这个错误:

  

表达式包含多个列,但只有一列可以   用于表/过滤器的True / False表达式   表达

我尝试了这样的查询的另一种构造,但在这种情况下,我不能重用计算的成员。

EVALUATE
(
    CALCULATETABLE
    (
        SUMMARIZE
        (
            'Sales',
            'Sales'[MaxDatum],
            'Sales'[MinDatum],
            "DIFF", INT('Sales'[MinDatum] - 'Sales'[MaxDatum]) 
        ),
        [DIFF] < 300        
    )
)

可以在DAX查询中以某种方式执行此操作吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

试试这个:

EVALUATE
 (
    FILTER (
        ADDCOLUMNS ( Sales, "Diff", 1 * ( Sales[MaxDatum] - Sales[MinDatum] ) ),
        [Diff] < 300
    )
)

如果您使用的是SSAS 2016,Excel 2016或Power BI,则可以使用DATEDIFF函数,这是一种更可靠的计算时间增量的方法。

如果有帮助,请告诉我。