我在报告中创建了一个带有字段参数的表格,以允许用户手动过滤列。
字段参数如下所示:
Select column = {
("Column 1", NAMEOF('Participation'[A]), 2),
("Column 2", NAMEOF('Participation'[B]), 3),
("Column 3", NAMEOF('Participation'[C]), 4),
("Column 4", NAMEOF('Participation'[D]), 5),
...
}
表格将如下所示,其中“回合”是基于日历表的静态,其他列基于字段参数。
圆形 | A | B | C | D | ... |
---|---|---|---|---|---|
9 月 22 日 | 75% | x% | x% | x% | |
10 月 23 日 | 80% | x% | x% | x% | |
11 月 23 日 | 90% | x% | x% | x% | |
... | x% | x% | x% | x% |
最后,我想显示每列前 3 名的参与率。例如,我使用按钮选择A列,我想在图表中显示:
基于一列的排名很容易,但动态显示它有很大问题。网上大多数解释动态表的解决方案都不是基于字段参数的。
我已经尝试过这样的:
Ranking Team =
VAR SelectedColumn = SELECTEDVALUE('Select column'[Select column Felder])
RETURN
SWITCH (
SelectedColumn,
"A", RANKX(ALL('Participation'), [A], , DESC),
"B", RANKX(ALL('Participation'), [B], , DESC),
"C", RANKX(ALL('Participation'), [C], , DESC),
"D", RANKX(ALL('Participation'), [D], , DESC),
"E", RANKX(ALL('Participation'), [E], , DESC),
"F", RANKX(ALL('Participation'), [F], , DESC),
"G", RANKX(ALL('Participation'), [G], , DESC),
"H", RANKX(ALL('Participation'), [H], , DESC),
BLANK()
)
不幸的是它不起作用。我认为问题是这个DAX不是基于我的字段参数表。
坦克为您提供帮助。
这里的问题是,您尝试根据用户选择对列进行动态排名,但 DAX 不允许基于字符串名称进行直接动态列引用。因此,即使您的 SWITCH 语句完全正常,您也无法即时更改 RANKX 函数中使用的列。
首先,确保字段参数返回您在 SWITCH 语句中使用的确切列名称(例如“A”、“B”、“C”...)。
然后使用度量根据所选值动态获取列值:
Selected Participation Value =
VAR SelectedColumn = SELECTEDVALUE('Select column'[Select column Felder])
RETURN
SWITCH(
SelectedColumn,
"A", 'Participation'[A],
"B", 'Participation'[B],
"C", 'Participation'[C],
"D", 'Participation'[D],
BLANK()
)
然后,使用上述度量创建排名度量:
Ranking Team =
RANKX(ALL('Participation'), [Selected Participation Value], , DESC)
请记住,您需要事先了解所有列才能设置 SWITCH 语句。如果您有一组经常更改的动态列,那么它就不适合。