RANKX 没有给出正确的结果
RANKX does not give the correct result
我需要创建一个度量(不是列)来根据价值对用户进行排名。
这里我尝试使用 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() 函数,但也没有成功。
如果我使用 table 而不是 table 表达式,它似乎可以工作。
我在这里错过了什么?
更新:
添加 ALL(dim_User)
仍然给我 1
ranking =
RANKX(
ADDCOLUMNS(
SUMMARIZE(ALL(dim_User),
dim_User[UserID],
dim_User[FirstName]
),
"Ttl Trans", [Ttl Transactions]
)
, [Ttl Transactions]
)
更新
不管我是什么用户select,在一张rating
中一张卡总是1.
当您编写度量时,它会在其本地过滤器上下文中进行评估。特别是,dim_User
在您的衡量标准中被 FirstName
过滤,因此仅与具有相同 FirstName
.
的其他用户相比排名 Ttl Trans
由于您是基于用户排名的,因此您希望删除视觉引入的过滤上下文以获得您期望的排名。我建议用 ALL(dim_User)
替换 table 参数 dim_User
以删除 table 上的所有过滤,或者 - 更可能是你想要的选项 - 用 ALLSELECTED(dim_User)
删除视觉对象引入的本地筛选器上下文,同时保留来自切片器或页面级筛选器的任何筛选器上下文。
对于您的卡片,您需要模拟 table:
中存在的过滤器上下文
UserRanking =
VAR SelectedUser = SELECTEDVALUE ( dim_User[Name_FirstLast] )
RETURN
CALCULATE (
RANKX ( ALL ( dim_User ), [Ttl Transactions] ),
dim_User[Name_FirstLast] = SelectedUser
)
我需要创建一个度量(不是列)来根据价值对用户进行排名。
这里我尝试使用 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() 函数,但也没有成功。
如果我使用 table 而不是 table 表达式,它似乎可以工作。 我在这里错过了什么?
更新:
添加 ALL(dim_User)
仍然给我 1
ranking =
RANKX(
ADDCOLUMNS(
SUMMARIZE(ALL(dim_User),
dim_User[UserID],
dim_User[FirstName]
),
"Ttl Trans", [Ttl Transactions]
)
, [Ttl Transactions]
)
更新
不管我是什么用户select,在一张rating
中一张卡总是1.
当您编写度量时,它会在其本地过滤器上下文中进行评估。特别是,dim_User
在您的衡量标准中被 FirstName
过滤,因此仅与具有相同 FirstName
.
Ttl Trans
由于您是基于用户排名的,因此您希望删除视觉引入的过滤上下文以获得您期望的排名。我建议用 ALL(dim_User)
替换 table 参数 dim_User
以删除 table 上的所有过滤,或者 - 更可能是你想要的选项 - 用 ALLSELECTED(dim_User)
删除视觉对象引入的本地筛选器上下文,同时保留来自切片器或页面级筛选器的任何筛选器上下文。
对于您的卡片,您需要模拟 table:
中存在的过滤器上下文UserRanking =
VAR SelectedUser = SELECTEDVALUE ( dim_User[Name_FirstLast] )
RETURN
CALCULATE (
RANKX ( ALL ( dim_User ), [Ttl Transactions] ),
dim_User[Name_FirstLast] = SelectedUser
)