【发布时间】:2013-12-05 08:55:26
【问题描述】:
我遇到了一个问题,我希望一些更有经验的 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 中的 category 创建切片器时,我的图表似乎不受切片器的影响。我的理解是,通过将 main_table 而不是 ALL(main_table) 作为最后一次 FILTER 调用中的第一个参数,我的中位数计算将受到切片和过滤器的影响main_table。我在这里遗漏了什么明显的东西吗?
【问题讨论】:
标签: excel median powerpivot dax