powerbi - RANKX 没有给出正确的结果
问题描述
我需要创建一个根据价值对用户进行排名的度量(而不是列)。
在这里,我尝试使用 RANKX 功能:
ranking =
RANKX(
ADDCOLUMNS(
SUMMARIZE(dim_User,
dim_User[UserID],
dim_User[FirstName]
),
"Ttl Trans", [Ttl Transactions]
)
, [Ttl Transactions]
)
使用相同的结果:
rating2 =
RANKX(
SUMMARIZE(dim_User,
dim_User[FirstName]
), [Ttl Transactions]
)
试过这样:
rating1 =
RANKX(
SUMMARIZE(dim_User,
dim_User[FirstName],
"Trans",[Ttl Transactions]
), [Trans]
)
但是给了我一个错误:
The value for 'Trans' cannot be determined. Either the column doesn't exist, or there is no current row for this column.
我也尝试过使用 COUNTROWS() 函数,但也没有成功。
如果我使用表格而不是表格表达式,它似乎可以工作。我在这里想念什么?
更新:
添加ALL(dim_User)
仍然给我 1
ranking =
RANKX(
ADDCOLUMNS(
SUMMARIZE(ALL(dim_User),
dim_User[UserID],
dim_User[FirstName]
),
"Ttl Trans", [Ttl Transactions]
)
, [Ttl Transactions]
)
更新
无论我选择什么用户,rating
卡片中的 a 始终为 1。
解决方案
编写度量时,会在其本地过滤器上下文中对其进行评估。特别是,在您的度量中dim_User
被过滤FirstName
,因此,Ttl Trans
仅与具有相同FirstName
.
由于您是基于用户进行排名,因此您希望删除视觉对象引入的过滤器上下文以获得您期望的排名。我建议将 table 参数替换dim_User
为ALL(dim_User)
删除该表上的所有过滤,或者 - 更有可能是您想要的选项 -ALLSELECTED(dim_User)
删除视觉对象引入的本地过滤器上下文,同时保留切片器或页面级过滤器的任何过滤器上下文.
对于您的卡,您需要模拟表中存在的过滤器上下文:
UserRanking =
VAR SelectedUser = SELECTEDVALUE ( dim_User[Name_FirstLast] )
RETURN
CALCULATE (
RANKX ( ALL ( dim_User ), [Ttl Transactions] ),
dim_User[Name_FirstLast] = SelectedUser
)
推荐阅读
- python - 将文本从 .txt 输入到工作簿
- symfony - 作曲家用新生成的文件重写我的 .env 文件
- localization - Azure Pipeline - 由于 Assert 而返回的错误字符
- html - 如何点击一个元素
- 一个
- 使用vba?
- 一个
- algorithm - 使两个数相等的最小操作数
- python - 无法选择部分标签
- python - Python Tkinter - 将垂直和水平滚动条放在画布的边缘
- django - 如何重建 Django 表?
- java - 为什么我们可以使用 ArrayList 的方法而不创建新的 ArrayList 对象?
- docker - 从 Ubuntu amd64 到 arm7l 进行交叉编译:exec 用户进程导致“exec 格式错误”