矩阵表 - 日期的日期列,位置行和计数天数

时间:2017-07-09 11:57:28

标签: sql-server powerbi dax date-range

我希望在Power BI报告中创建一系列矩阵表。

我们拥有的数据是:

EventID|VehicleID|LocationID|StartDate|EndDate
1      |1        |GBR       |2010-1-1 |2010-1-5
2      |9        |RUS       |2010-1-3 |2010-1-7
3      |6        |GBR       |2010-1-3 |2010-1-5
4      |1        |USA       |2010-1-5 |2010-1-7

输出

    LocationID 2010-1-1|2010-1-2|2010-1-3|2010-1-4|2010-1-5|2010-1-6
GBR               1    |   1    |     2  |     2  |   0    |    0
USA               0    |   0    |     0  |     0  |   1    |    1
RUS               0    |   0    |     1  |     1  |   1    |    1

每辆车只有一个事件在一段时间内,每辆车没有时间重叠。我们正在尝试计算每个日期的每个位置的车辆数量,例如如果1月1日有4辆车用于LocationID,我们在4个矩阵单元中显示4个。

我已经在我们的SQL Server中创建了一个日期表(我们使用的是直接查询),但我真的很难如何计算每天每个位置的车辆数量。我假设我必须以某种方式将每个事件的日期范围转换为事件的日期列表,并且每个事件的项目计数为1天。然后我只需要创建带有列的Matrix作为日期表中的日期和来自事件表的locationID,但是我如何得到位置ID的数量正在逃避我。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我已根据StartDateEndDate创建了一个包含DAX的新表:

Date = CALENDAR(MIN(Event[StartDate]), MAX(Event[EndDate]))

date

通过将日期与CountStartDate进行比较来构建EndDate度量并计算行数:

Count = 
COUNTROWS(
    FILTER(
        Event,
        Event[StartDate] <= MAX('Date'[Date]) &&
        Event[EndDate] > MIN('Date'[Date])
    )
) + 0

结果:

result