【问题标题】:PowerBI DAX - adding date filter to DAX QueryPowerBI DAX - 将日期过滤器添加到 DAX 查询
【发布时间】:2021-11-30 21:10:56
【问题描述】:

我正在尝试将日期条件添加到下面的 DAX 查询中,但我正在努力寻找可以工作的东西。我基本上想过滤 Combination.Expiration Date 列。例如,如果没有过期日期,或者过期日期已经过去,我不希望查询返回任何内容。下面是当前的 DAX 查询。

List of Requirement values = 
VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('Combination'[Requirement])
VAR __MAX_VALUES_TO_SHOW = 90
RETURN
    IF(
        __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
        CONCATENATE(
            CONCATENATEX(
                TOPN(
                    __MAX_VALUES_TO_SHOW,
                    VALUES('Combination'[Requirement]),
                    'Combination'[Requirement],
                    ASC
                ),
                'Combination'[Requirement],
                ", ",
                'Combination'[Requirement],
                ASC
            ),
            ", etc."
        ),
        CONCATENATEX(
            VALUES('Combination'[Requirement]),
            'Combination'[Requirement],
            ", ",
            'Combination'[Requirement],
            ASC
        )
    )

谁能帮我在其中添加一个日期过滤器?我是 PowerBI 的新手,我在这件作品上苦苦挣扎。

【问题讨论】:

  • 添加一个环绕的 IF 语句,如果 expirationdate 执行当前查询

标签: powerbi dax powerbi-desktop


【解决方案1】:

VALUES('Combination'[Requirement]) 为您提供了一个包含组合表中所有需求值的表。

如果您想从该表中排除某些结果,您需要对该表应用过滤器。

你有两个选择:

Option 1:
VAR tbl_values = CALCULATETABLE(VALUES('Combination'[Requirement]),
                'Combination'[Expiration Date] = BLANK() ||
                'Combination'[Expiration Date] < TODAY())

Option 2:
VAR tbl_filtered = FILTER('Combination', 
                'Combination'[Expiration Date] = BLANK() ||
                'Combination'[Expiration Date] < TODAY())

然后您可以替换度量中的值

List of Requirement values = 
VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('Combination'[Requirement])
VAR __MAX_VALUES_TO_SHOW = 90
VAR tbl_filtered = FILTER('Combination', 
                'Combination'[Expiration Date] = BLANK() ||
                'Combination'[Expiration Date] < TODAY())

RETURN
    IF(
        __DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
        CONCATENATE(
            CONCATENATEX(
                TOPN(
                    __MAX_VALUES_TO_SHOW,
                    tbl_filtered,
                    'Combination'[Requirement],
                    ASC
                ),
                'Combination'[Requirement],
                ", ",
                'Combination'[Requirement],
                ASC
            ),
            ", etc."
        ),
        CONCATENATEX(
            tbl_filtered,
            'Combination'[Requirement],
            ", ",
            'Combination'[Requirement],
            ASC
        )
    )

【讨论】:

  • 这太棒了!谢谢!如果我想根据日期制作它,我会认为它会类似于 'Combination'[Expiration Date]
  • 是的,或者最好有一个切片器,您可以在其中选择日期,然后使用 SELECTEDVALUE(Slicer[Date])
  • 最终,我试图找到发生在两个日期(今天和 30 天后、30 天和 60 天、60 天和 90 天)之间的日期事件。我正在尝试 VAR tbl_filtered = FILTER('Combination', 'Combination'[Expiration Date] >= TODAY() && 'Combination'[Expiration Date]
  • 长期目标是有一个带有人名的表/矩阵,然后一个连接列表要求过期/丢失,30 天,60 天,90 天。我在上面添加了具有相同查询的另一列,只是为了看看它会如何反应。在所述列的第二个实例(不同的名称)中,它包括所有内容,就像查询不再工作一样。
  • VAR tbl_filtered = FILTER('Combination', 'Combination'[Expiration Date] > TODAY() && 'Combination'[Expiration Date]
猜你喜欢
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多