我有一个问题,我希望一些更有经验的 DAX 程序员可以帮助我。我一直在尝试在 Excel 2013 / PowerPivot / PowerView 中开发仪表板,我想显示的图形之一是按一天中的小时计算的中值性能折线图。然后,我想使用基于单独列的性能指标过滤数据集,并将其链接到切片器。中位数应相对于过滤后的数据集计算。对于中位数计算,我试图在此处调整 Marco Russo 提出的公式(http://sqlblog.com/blogs/marco_russo/archive/2010/07/20/median-calculation-in-dax.aspx)。
为了说明这个问题,假设我有两个表 - main_table和other_table。Main_table有 4 列 - RowID、hour_of_day、performance_metric和category。Other_table有两列 - hour_of_day和median_column。我的目标是为median_column找到一个公式,以便它按一天中的小时显示中值性能指标,但仍然可以按category切片。我尝试用于中位数的公式是
=CALCULATE(
MINX(
FILTER(
VALUES(main_table[performance_metric]),
CALCULATE(
COUNTA(main_table[performance_metric]),
main_table[performance_metric] <= EARLIER(main_table[performance_metric]))
> COUNTA(main_table[performance_metric]/2),
main_table[performance_metric]),
FILTER(
main_table,
main_table[hour_of_day] = EARLIER(other_table[hour_of_day])))
或不格式化:
=CALCULATE(MINX(FILTER(VALUES(main_table[performance_metric]), CALCULATE(COUNTA(main_table[performance_metric]), main_table[performance_metric] <= EARLIER(main_table[performance_metric])) > COUNTA(main_table[performance_metric]/2), main_table[performance_metric]), FILTER(main_table, main_table[hour_of_day] = EARLIER(other_table[hour_of_day])))
但是,当我根据main_table中的类别创建切片器时,我的图表似乎不受切片器的影响。我的理解是,通过将main_table而不是ALL(main_table)作为最后一次 FILTER 调用中的第一个参数,我的中值计算将受到应用于main_table的切片和过滤器的影响。我在这里遗漏了一些明显的东西吗?