0

我有一个问题,我希望一些更有经验的 DAX 程序员可以帮助我。我一直在尝试在 Excel 2013 / PowerPivot / PowerView 中开发仪表板,我想显示的图形之一是按一天中的小时计算的中值性能折线图。然后,我想使用基于单独列的性能指标过滤数据集,并将其链接到切片器。中位数应相对于过滤后的数据集计算。对于中位数计算,我试图在此处调整 Marco Russo 提出的公式(http://sqlblog.com/blogs/marco_russo/archive/2010/07/20/median-calculation-in-dax.aspx)。

为了说明这个问题,假设我有两个表 - main_tableother_tableMain_table有 4 列 - RowIDhour_of_dayperformance_metriccategoryOther_table有两列 - hour_of_daymedian_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的切片和过滤器的影响。我在这里遗漏了一些明显的东西吗?

4

1 回答 1

0

计算列显然是在执行查询之前计算的,因此任何需要受切片器影响的内容都必须作为度量输入,而不是计算列。

在这里更详细地回答(http://www.mrexcel.com/forum/powerpivot-questions/741071-medians-context-issues-dax.html#post3641780

于 2013-12-02T19:19:56.777 回答