代码之家  ›  专栏  ›  技术社区  ›  mendosi

DAX测量-显示最佳日的值

  •  1
  • mendosi  · 技术社区  · 9 年前

    我在PowerBI(2017年10月发布)中有一些数据显示了一些太阳能电池板每隔五分钟的快照输出。

    'Solar Output' table containing three columns: Production (KW): numeric, Date: date, Time: time

    我目前有一个测量方法,通过获得当天瞬时读数的总和并除以12(因为每小时有12个读数)来计算每天的总产量,然后显示在当前上下文中的任何时间段内该日产量的平均值:

    Avg Daily Production (KWh) = 
        AVERAGEX(SUMMARIZE('Solar Output', 'Solar Output'[Date], "Daily Production (KWh)", SUM('Solar Output'[Production (KW)]/12), [Daily Production (KWh)]) 
    

    为了便于可视化,我想展示一张图表,其中显示了一天中不同时间的平均产量,与最佳日期的产量进行比较,即一天中价值最高的一天 [Avg Daily Production (KWh)] .

    以下是我目前的工作:

    通过使用

    Best Day = TOPN(1, SUMMARIZE('Solar Output', 'Solar Output'[Date], "Daily Production (KWh)", [Avg Daily Production (KWh)]), [Daily Production (KWh)], DESC)
    

    但这会产生一行,而不是标量,我不知道如何获取这个日期,并将其用作此类度量的过滤器:

    Production On Best Day (KW) = 
        CALCULATE(SUM([Production (KW)]), FILTER(ALL('Solar Output'[Date]), 'Solar Output'[Date] = [Best Day]))
    

    desired solution

    我想要的图表是这样的,选定日期的平均产量用绿色表示,然后另一个系列用红色铅笔表示最佳日期的产量。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Foxan Ng    9 年前

    我真的无法理解所涉及的计算,但我希望我能得到你的要求。

    所以你想在同一张图表上画两条线,一条总是来自最佳日期的数据作为参考,另一条是从日期过滤器中选择的数据,对吗?

    根据上面给出的信息,您实际上非常接近解决方案。

    我刚刚将您的DAX修改为:

    Production On Best Day (KW) = 
    CALCULATE(
        SUM('Solar Output'[Average]),
        FILTER(
            ALL('Solar Output'[Date]),
            'Solar Output'[Date] = VALUES('Best Day'[Date])
        )
    )
    

    (不太确定如何计算中间度量值,因此可能需要根据度量值进行调整)

    对 TOPN() 返回一个表,因此可以使用 VALUES('Best Day'[Date])

    结果:

    result1 result2

        2
  •  0
  •   mendosi    9 年前

    MAXX() 函数从返回的表中获取标量值 TOPN() .

    这适用于 MAX() 不是因为 接受表格 表示 作为其第一个参数(表表达式是 功能)其中 最大() 仅从现有表中获取列。

    Best Day = MAXX(TOPN(1, 
                         SUMMARIZE(ALL('Solar Output'), 
                                   'Solar Output'[Date], 
                                   "Daily Production (KWh)", 
                                   [Avg Daily Production (KWh)]), 
                         [Daily Production (KWh)], 
                         DESC), 
                    [Date])
    

    这种方法的好处是,它应该在没有计算表支持的DAX版本中工作(例如SSAS 2014、Excel 2013)。