Power BI - 聚合平均值之和

时间:2021-02-02 11:41:44

标签: powerbi dax

我有一个类似于以下的表格:

TAB1:

+--------+------------------+-------+-------+---------+
| SENSOR |     DATATIME     | CLASS | GROUP | TRAFFIC |
+--------+------------------+-------+-------+---------+
| X1     | 2011-01-01 00:00 | 0     | A     | 23      |
| X1     | 2011-01-01 00:00 | 1     | B     | 12      |
| X1     | 2011-01-01 00:00 | 2     | B     | 22      |
| X2     | 2011-01-01 00:00 | 0     | A     | 33      |
| X2     | 2011-01-01 00:00 | 2     | B     | 31      |
| X2     | 2011-01-01 00:00 | 4     | C     | 12      |
| Xn     | 2011-01-01 00:00 | 0     | A     | 41      |
| Xn     | 2011-01-01 00:00 | 3     | C     | 15      |
| Xn     | 2011-01-01 00:00 | 2     | B     | 45      |
| …      | …                | …     | …     | …       |
| X1     | 2011-01-01 01:00 | 0     | A     | 36      |
| X1     | 2011-01-01 01:00 | 1     | B     | 32      |
| X1     | 2011-01-01 01:00 | 2     | B     | 26      |
| X2     | 2011-01-01 01:00 | 0     | A     | 17      |
| X2     | 2011-01-01 01:00 | 2     | B     | 16      |
| X2     | 2011-01-01 01:00 | 4     | C     | 40      |
| Xn     | 2011-01-01 01:00 | 0     | A     | 28      |
| Xn     | 2011-01-01 01:00 | 3     | C     | 38      |
| Xn     | 2011-01-01 01:00 | 2     | B     | 24      |
| …      | …                | …     | …     | …       |
|        | 2020-12-31 23:00 |       |       |         |
+--------+------------------+-------+-------+---------+

我想要做的是创建一个度量,传递给一个直方图,它允许通过按以下方式聚合来计算平均流量:DATATIME & GROUP。然后,通过 DrillDown 和 DrillUp 观察小时、日、月和年的流量趋势。为此,TAB1 表将 DATATIME 与日历表建立了关系。

为此,我需要:

  1. 通过按 DATATIME 和 CLASS 分组来计算不同 SENSORS 测量的平均每小时流量。
  2. 根据所选时间详细信息(日、月、年)汇总每小时平均流量

SQL中,为了按年聚合流量,我写了这个查询:

select year(DATATIME) as YEAR, GROUP, sum(Avg_TRAFFIC) as Y_TRAFFIC
from  (select   DATATIME, GROUP, avg(TRAFFIC) as Avg_TRAFFIC
       from TAB1
       group by DATATIME, GROUP
       ) as TMP
group by year(DATATIME), GROUP
order by YEAR, GROUP

在 DAX 中,我尝试以两种不同的方式编写度量,但结果不正确。 这里我只报告A组的测量值,B组和C组的测量值相似。

尝试 1
注意:TrafficKey = CONCATENATE(TAB1[DATATIME], TAB1[GROUP])

A_Traffic = 
var d1 = ADDCOLUMNS(VALUES(TAB1[TrafficKey]), "AvgHour", average(TAB1[TRAFFIC]))

return
CALCULATE(
    SUMX(d1,[AvgHour]),
    TAB1[GROUP]="A"
 )

尝试 1

SUMX(
   FILTER(TAB1, TAB1[GROUP]="A"),
   AVERAGEX(
       VALUES(TAB1[TrafficKey]), 
       TAB1[TRAFFIC])
) 

我该如何解决这个问题?

0 个答案:

没有答案