将多个时间帧中的数据聚合到MS Power BI中的一个表中

时间:2016-11-29 05:35:00

标签: database powerbi dax

在一张表中,我有从一个月的每个星期日收集的数据。在另一个表中,我有相同对象的不同数据集,但每月只收集一次。名称匹配,但我无法创建关系,因为两列都没有唯一值。

我设法让Power BI通过克隆每个查询来汇总同一个表上的数据,从每个查询中的两列创建一个唯一键,然后在这些表上运行摘要。

我想知道是否可以将每周表中的数据汇总到几个月,然后使用这些月度值来对第二个表中的月度数据进行操作。

其他详情:

每周表格列出了泵和每周抽取的水量。所以前几行可能是:

Date        | Location | Pump    | Pumped Total
-----------------------------------------------
6/11/16     | Here     | Pump A  | 20
13/11/16    | Here     | Pump A  | 35
6/11/16     | There    | Pump B  | 200

没有单一列是唯一的。 DatePump形成了一对唯一的对,但Power BI并不乐意成对工作。 DateLocation不是唯一的,不过我的例子是这样的。

每月表包含泵和当月使用的电力。例如:

Location | Pump    | Month | Power Total
----------------------------------------
Here     | Pump A  | Oct   | 3.5
Here     | Pump A  | Nov   | 4
There    | Pump B  | Nov   | 120

同样,PumpMonth是此处的唯一键。

我想要的最终结果是一个标题有点像

的表格
Location | Pump | Month | Pumped Total | Power Total | Power Efficiency

我可以将日期设置为相同的格式,Power BI将汇总,以便我可以正确显示Pumped TotalPower Total,但因为Power Efficiency是{ {1}},我无法计算,因为它需要汇总Pumped / Power以对Pumped使用它。

1 个答案:

答案 0 :(得分:0)

创建其他维度表

除了每周&上面的月度表,您需要2个(或可能是3个)维度表。

  1. 日期维度表,每个日期都有一行,还有一列反映月份(10月,11月)。
  2. 泵尺寸表,每个泵都有一排,以及它的位置(除非泵可以在多个位置,那么您需要一个单独的位置表)
  3. Pump尺寸表可能如下所示(注意Pump A仅出现一次):

    Pump     | Location
    ---------|---------
    Pump A   | Here
    Pump B   | There
    

    在月表中添加实际日期

    接下来,您需要一种方法将Monthly表与日期表相关联。你说你已经能够把日期联系起来了。如果没有,可能很简单,因为在月度表中将11月转换为月中的第一个月(2016年1月11日)。 (确保数据类型是日期类型,以匹配日期表。)

    将所有内容联系起来

    在您的数据模型中,将Weekly和Monthly事实表与Date和Pump维度表相关联。不要将事实表相互关联。

    最终结果

    然后,您应该能够在Power BI中创建一个表,该表从Pump表中引入Pump信息,从日期表中引入Month,以及2个事实表中的Power / Pumped总计,这些表将看起来像您的期望的结果。 (每周表将自动累计到月,因为它知道6/11和13/11都是11月)。

    <强>注意事项

    最后一张表中的泵/日期信息来自新的维度表,而不是单独的每周/每月表格,这一点非常重要。每周泵柱对月泵一无所知。泵表知道每周和每周。每月泵。 (我建议隐藏每周/每月表中的泵/位置/日期列,这样您就不会意外地执行此操作。)

    请注意,如果您有多年,您还希望在最终结果中反映或过滤年份(否则,它会将所有Novembers汇总在一起)。

    更多阅读

    本文提供了有关您尝试解决的问题类型的更多信息(处理不同的粒度):http://www.daxpatterns.com/handling-different-granularities/ - 您可以通过搜索找到其他一些其他优质资源