我已经想出如何在度量中完成以下等效操作,但我需要将它用作Power View图表中的图例,因此需要在计算列中完成。从计算字段到计算列的上下文变化完全搞砸了我。
在我的数据模型中,我有一份工作申请表。每条记录都有一个专业和一个适用于该公司的地址。每个专业都可以在表格中多次出现。
ApplicationTable:
ApplicationID |名称|专业|城市|状态
- 32911 | Joe Bob |工程|迈阿密|佛罗里达
- 89547 | Ralph Kramden |大喊|纽约|纽约
醇>
等
我还有一张州表。它只有州名和邮政缩写的列。我需要创建一个具有最常出现的特殊状态的列。
如果我可以将此作为计算字段,我会在几个小时前完成。我刚刚使用了一个非常简单的topn应用程序:
热门专业:= FIRSTNONBLANK(TOPN(3,VALUES(ApplicationTable [专业]),[应用ID计数],ApplicationTable [专业])
我使用FIRSTNONBLANK和TOPN(3 ...),因为有些州只有一些应用程序,所以每个专业只出现一次。在我的应用程序中,可以在这些情况下选择列表中的第一个专业。
无论如何,这个公式很酷,但在这里没有帮助。那么如何在计算列中执行等效操作,以便将其用作键或过滤器?具体来说,我认为我需要在StateTable中执行此操作,为我提供ApplicationTable中每个州最常出现的专业名称。想法?
答案 0 :(得分:5)
首先,创建一个计算专业的基本措施:
SpecialtyCount :=
COUNTA ( ApplicationTable[Specialty] )
接下来,创建一个度量来找出最高的单一专业(在上下文中):
MostSpecial :=
MAXX ( VALUES ( ApplicationTable[Specialty] ), [SpecialtyCount] )
最后,将计算列添加到States表中:
=
FIRSTNONBLANK (
ApplicationTable[Specialty],
IF (
[SpecialtyCount]
= CALCULATE ( [MostSpecial], VALUES ( ApplicationTable[Speciality] ) ),
1,
BLANK ()
)
)
将此作为计算列放置,我们的过滤器上下文是每个状态。因此,首先PowerPivot会将ApplicationTable
过滤为州内的应用程序,然后使用FIRSTNONBLANK()
来迭代每个ApplicationTable[Specialty]
,计算其SpecialtyCount
并查看是否等于该州内的MostSpecial
计数。如果是这样,那就不是空白,这是它返回的专长。