【问题标题】:Get the item with the highest count获取计数最高的项目
【发布时间】:2020-03-10 19:33:11
【问题描述】:

你能帮我用 DAX 获得最高计数的项目吗?

Measure = FIRSTNONBLANK('Table1'[ItemName],CALCULATE(COUNT('Table2'[Instance])))

这显示了表中的第一个 ItemName,但没有得到最高值的 ItemName。

谢谢

【问题讨论】:

  • 没关系我已经解决了
  • 你是怎么做到的,约翰?不要让我们悬而未决。

标签: datatables powerbi max dax highest


【解决方案1】:

嗯,这比我想要的要复杂,但这就是我想出的。

您希望做的事情在 DAX 中并不那么简单。首先,您需要一个聚合聚合;)——在这种情况下,是一个计数的最大值。第二件事是您想使用一列中的值,该值由另一列中的内容标识。那是基于行的思维,而 DAX 更喜欢基于列的思维。

所以,要进行聚合的聚合,我们只需要费力地完成它。 SUMMARIZE 为我们提供了项目的数量。 Max 和 Rank 函数可以帮助我们找到最大的计数,但对于获取 Item Name 并没有那么有用。 TOP N 为我们提供了我们的计数最大的整行。

但是现在我们需要从行中取出我们的 ItemName,所以 SELECTCOLUMNS 让我们可以选择要使用的字段。最后,我们真的想要一个值,而不是 1 列 1 行的表。所以 FirstNonBlank 完成了这项工作。

希望对你有帮助。

这是我的 DAX

MostFrequentItem = 
VAR SummaryTable = SUMMARIZE ( 'Table', 'Table'[ItemName], "CountsByItem", COUNT ( 'Table'[ItemName] ) )
VAR TopSummaryItemRow = TOPN(1, SummaryTable, [CountsByItem], DESC)
VAR TopItem = SELECTCOLUMNS (TopSummaryItemRow, "TopItemName", [ItemName])

RETURN FIRSTNONBLANK (TopItem, [TopItemName])

这是不使用变量的 DAX(未经测试,抱歉。应该关闭):

MostFrequentItem_2 =
FIRSTNONBLANK (
    SELECTCOLUMNS (
        TOPN (
            1,
            SUMMARIZE ( 'Table', 'Table'[ItemName], "Count", COUNT ( 'Table'[ItemName] ) ),
            [Count], DESC
        ),
        "ItemName", [ItemName]
    ),
    [ItemName]
)

这是模拟数据:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcipNSspJTS/NVYrVIZ/nnFmUnJOKznRJzSlJxMlyzi9PSs3JAbODElMyizNQmLEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Stuff = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Stuff", type text}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Stuff", "ItemName"}})
in
    #"Renamed Columns"

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2011-02-15
    • 2016-09-17
    • 2020-12-31
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多