我在Power BI DirectQuery表中有数据,看起来像这样:
Name Tx TxDate Other Columns
-------------------------------------------------------
A 1 1/1/2017
A 2 1/3/2017
A 3 1/4/2017
B 4 1/5/2017
B 5 1/6/2017
C 6 1/1/2017
C 7 1/2/2017
C 8 1/9/2017
在visual visual中,我想只显示每个名称的最新行:
Name Tx TxDate Other Columns
-------------------------------------------------------
A 3 1/4/2017
B 5 1/6/2017
C 8 1/9/2017
但是,我使用切片器来帮助过滤我们的日期,我想要切片数据中的最新行 . 例如,如果切片日期范围是1/1/2017到1/2/1017(含),我想显示:
Name Tx TxDate Other Columns
-------------------------------------------------------
A 1 1/1/2017
C 7 1/2/2017
我一直试图通过创建一个带有DAX表达式的度量来计算每个名称的最新日期,然后添加一个过滤器来仅显示那些LatestTxDate = TxDate,但它不起作用:
LastTxDate =
MAXX(
GROUPBY(
Table,
[Name],
"Latest Tx Date",
MAXX(CURRENTGROUP(), Table[TxDate])
),
[Latest Tx Date]
)
我的想法是,我计算一个新度量,然后只有在TxDate = LastTxDate时才能显示该行 .
Name Tx TxDate LastTxDate Other Columns
-------------------------------------------------------
A 1 1/1/2017 1/1/2017
A 2 1/3/2017 1/1/2017
A 3 1/4/2017 1/1/2017
B 4 1/5/2017
B 5 1/6/2017
C 6 1/1/2017 1/2/2017
C 7 1/2/2017 1/2/2017
C 8 1/9/2017 1/2/2017
这感觉很简单,但我尝试的一切都行不通 . 任何帮助表示赞赏 .
2 回答
我遇到了和你一样的问题,并花了整整一周时间试图解决它,因为我在互联网上找不到任何指南 . 所以我想我可以借给你一个手,即使这是9个月前被问到的 .
首先要做的事情是:您需要使用 measures 执行此操作,因为它们会受到报表中的切片器和过滤器的影响 .
在尝试了很多东西后,我想出了一个测量方法来检查每一行是否是每个组的最新行,然后该度量值将为“1” . 如果不是最后一行,则取值为“0” .
这就是我设法做到这一点(注意:它不是那么简单):
如果您使用所有“表”列和LastDate作为度量构建一个可视化表,您将看到每一行将每个组的最新日期作为LastDate的值 . 像这样的东西:
如果您的报告中有日期切片器,它将受到日期切片器的影响 . 所以这种行为是正确的 . 然后我使用公式LASTNONBLANK()为日期列提供行上下文,因此现在可以在TxDate和LastDate之间进行比较,如果两者相同,则Check将取值“1” .
现在,您拥有所有表行的总数,其中最近的日期在日期切片器给出的范围内 . 您可以在图形视觉中使用此度量来显示这些行中有多少对应于每个类别 . 例如,您可以构建一个饼图,显示有多少“名称”对于Tx具有值“3”,有多少具有值“5”,依此类推 .
如果您想要一个表格视觉显示哪个是每个类别的最新日期,您可以使用[LastDate]作为这样的度量而不是[Check]:
如果您还需要一个度量来告诉您每个类别的最新Tx,您可以更改MAX('表'[TxDate])为MAX('表'[Tx]) . 有很多可能性 . 我的建议是你研究这些公式,这样你才能理解他们在每一步中做了什么,所以你可以根据自己的需要修改它们 . 您还可以将这两个度量结合起来,并获得一个像这样的表格:
希望这可以帮助你甚至在你问过9个月后,或者可能帮助其他人遇到与我们相同的问题 .
我认为你不需要那种幻想 . 以下适用于我 .
Edit:
您还希望将最大值超过
Tx
值,而不是列出所有值 .在表中使用两个
MAX
度量而不是将Tx
视为另一个类别 .