【问题标题】:DAX- Column look upDAX- 列查找
【发布时间】:2021-05-13 21:01:01
【问题描述】:

我有一个包含 End_Of_Month、ID 列的表。

我想要实现的目标:我想知道 2021 年 3 月 31 日没有在下个月_end_date 发生的哪些 ID。

例如:2021 年 3 月 31 日提到的 2 个 ID(ID 3 和 ID 4)没有出现在下一个日历月_end_date。

【问题讨论】:

  • 您想要度量值还是计算列?最终结果是否仅限于找到大约 3/31?

标签: powerbi dax powerquery business-intelligence


【解决方案1】:

我假设您想针对每个 End_Of_Month 值显示一个度量值。 结果是缺少的ID 的串联,用逗号分隔。

计算:测量

MissingIds =
VAR CurrentMonth =
    SELECTEDVALUE ( 'Table'[End_Of_Month] )
VAR NextMth =
    EOMONTH ( CurrentMonth, 1 )
VAR AllIds =
    SUMMARIZE ( FILTER ( ALL ( 'Table' ), [End_Of_Month] = NextMth ), [ID] )
VAR CurrentIds =
    VALUES ( 'Table'[ID] )
VAR MissingIds =
    EXCEPT ( CurrentIds, AllIds )
VAR Result =
    CONCATENATEX ( MissingIds, [ID], "," )
RETURN
    IF ( ISEMPTY ( AllIds ), BLANK (), Result )

输出

表格

End_Of_Month ID
31 March 2021 1
30 April 2021 1
31 May 2021 1
31 March 2021 2
30 April 2021 2
31 May 2021 2
31 March 2021 3
31 May 2021 3
31 May 2021 3
31 March 2021 4
30 April 2021 7
30 April 2021 8
30 April 2021 9

编辑:

我已修改计算以考虑任何日期,而不是月末 (EOM)。 请参阅下表作为参考。

MissingIds =
VAR CurrentDate =
    SELECTEDVALUE ( 'Table'[Date] )
VAR NextDt =
    MINX ( FILTER ( ALL ( 'Table' ), [Date] > CurrentDate ), [Date] )
VAR AllIds =
    SUMMARIZE ( FILTER ( ALL ( 'Table' ), [Date] = NextDt ), [ID] )
VAR CurrentIds =
    VALUES ( 'Table'[ID] )
VAR MissingIds =
    EXCEPT ( CurrentIds, AllIds )
VAR Result =
    CONCATENATEX ( MissingIds, [ID], "," )
RETURN
    IF ( ISEMPTY ( AllIds ), BLANK (), Result )

输出

表格

Date ID
15 January 2021 1
15 January 2021 2
15 January 2021 3
18 January 2021 2
18 January 2021 2
18 January 2021 5
22 January 2021 7
22 January 2021 7
22 January 2021 5

【讨论】:

  • 非常感谢@Angelo。这行得通。另外我想知道的是,如果我应该调整这个逻辑来显示每日日期而不是月底,它会如何工作?我尝试更改逻辑,但我不断收到错误。再次非常感谢。
  • 嗨,您可以将答案标记为解决方案吗?代码按日期而不是按月份略有不同。
  • 这个解决方案在考虑 EOM 时肯定很有帮助。我正在研究按日期而不是 EOM 聚合丢失 ID 的计数的按日期 dax,并且它不断抛出错误。你能帮忙吗?
  • 我已经使用类似的逻辑添加了任何日期的计算。
  • 嗨@Angelo,MissingIDs 应该显示丢失项目的数量而不是列表。由于某种原因,日期列表似乎对我不起作用。
【解决方案2】:

此解决方案适用于数据到下个月末的情况,但对于数据到月中的情况,它给出 0。如何解决?

举个例子:

我希望计算还显示 4 月 30 日至 5 月 14 日期间缺少的 ID。

【讨论】:

  • 你能用有代表性的样本数据创建一个单独的问题吗?另外,你能附上你试过的代码吗?
  • 嗨 Angelo,我基本上是在尝试在 Dax 中应用 SQL 逻辑。我已将其添加为新问题。新帖子的链接是:stackoverflow.com/questions/67571092/… 如果您能提供相同的指导,将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多