获取计算列中最常见的项目

Get the most common item in a calculated column

我已经想出如何在度量中完成以下等效项,但我需要将其用作 Power View 图表中的图例,因此需要在计算列中完成。从计算字段到计算列的上下文变化完全把我搞砸了。

在我的数据模型中,我有 table 份工作申请。每条记录都有一个专业和申请公司的地址。每个专业可以在 table.

中出现多次

应用表:

ApplicationID | Name | Specialty | City | State

  1. 32911 |Joe Bob | Engineering | Miami | Florida
  2. 89547 |Ralph Kramden | Shouting | New York | New York

等等

我还有 table 个状态。它只有州名和邮政缩写的列。我需要创建一个列,其中包含每个州最常出现的专业。

如果我可以将其作为计算字段来执行,我早就完成了。我只是使用了一个非常简单的 topn 应用程序:

Top Specialty := FIRSTNONBLANK (TOPN (3, VALUES (ApplicationTable[Specialty]),[Count of ApplicationID], ApplicationTable[Specialty])

我使用了 FIRSTNONBLANK 和 TOPN(3...),因为有些州只有几个申请,所以每个专业只出现一次。在我的申请中,在这些情况下只选择列表中的第一个专业就可以了。

无论如何,这个公式很酷,但在这里没有帮助。那么如何在计算列中执行等效操作,以便将其用作键或筛选器?具体来说,我认为我需要在 StateTable 中执行此操作,为我提供 ApplicationTable 中每个州出现次数最多的专业名称。想法?

首先,创建一个计算专业的基本度量:

SpecialtyCount :=
COUNTA ( ApplicationTable[Specialty] )

接下来,创建一个度量来找出最高的单一专业(在上下文中):

MostSpecial :=
MAXX ( VALUES ( ApplicationTable[Specialty] ), [SpecialtyCount] )

最后,将计算列添加到您的状态 table:

=
FIRSTNONBLANK (
    ApplicationTable[Specialty],
    IF (
        [SpecialtyCount]
            = CALCULATE ( [MostSpecial], VALUES ( ApplicationTable[Speciality] ) ),
        1,
        BLANK ()
    )
)

通过将其作为计算列,我们的筛选上下文是每个州。因此,PowerPivot 首先会将 ApplicationTable 过滤为状态内的应用程序,然后它将使用 FIRSTNONBLANK() 遍历每个 ApplicationTable[Specialty],计算其 SpecialtyCount 并查看是否等于MostSpecial 在该州内计数。如果有,那不是空白,这就是它的特色returns。