首页 > 解决方案 > DAX - 应用过滤器并检查记录是否为特定类别,然后输出 1,否则输出 0

问题描述

我有这样的需求,

    P.No.   BR  IND   SC    TD         RM          CD         PD      Out - Col - Required
    1        B  N     T    2/1/2011 2/1/2011    5/1/2007    1/1/2007    1
    1        B  N     T    2/1/2011 2/1/2011    5/1/2010    2/1/2011    1
    1        B  N     T    2/1/2011 6/1/2019    5/1/2007    2/1/2011    0
    1        B  N     T    2/1/2011 1/1/2019    5/1/2007    2/1/2011    0

Out-Col-Required就是我正在尝试使用DAX - Calculated Column.

这是它遵循的逻辑,

首先在表中过滤以下内容DAX

  1. BR = B, IND = N, SC = T, TD = RM
  2. 然后确定 P.No. 的 Min CD 日期和 Max PD 日期。

如果差异小于30 个月,则1 else 0.

请帮我解决这个问题。

谢谢。

标签: powerbidaxpowerbi-desktop

解决方案


Out =
VAR PNo = OutCol[P.No.]
VAR filt =
    FILTER (
        OutCol;
        OutCol[P.No.] = PNo
            && OutCol[TD] = OutCol[RM]
            && OutCol[BR] = "B"
            && OutCol[IND] = "N"
            && OutCol[SC] = "T"
    )
VAR monthsDiff =
    CALCULATE (
        DATEDIFF (
            MIN ( OutCol[CD] );
            MAX ( OutCol[PD] );
            MONTH
        );
        filt
    )
RETURN
    IF (
        OutCol[TD] = OutCol[RM]
            && OutCol[BR] = "B"
            && OutCol[IND] = "N"
            && OutCol[SC] = "T"
            && monthsDiff < 30;
        1;
        0
    )

推荐阅读