Я ищу способ свертывания агрегатов по времени подзапроса и временного ряда в DAX или M. Решения, которые я могу придумать, - это мера, применяемая для каждой строки в агрегате в DAX, или объединение ввыражение подзапроса в M, но я не могу найти функции для этого в документации.
Пример SQL-решения:
SELECT
t1.Date,
t1.Month,
DailyOccupancy - Capacity 'Availability',
r.Rate,
(DailyOccupancy - Capacity) * r.Rate 'OverUnderCost'
FROM
Rate r
INNER JOIN
(SELECT
d.Date,
d.Month,
SUM(c.Capacity) 'DailyCapacity',
SUM(o.Occupancy) 'DailyOccupancy'
FROM
DimDate d
INNER JOIN Capacity c ON d.Date > c.StartDate AND d.Date < c.EndDate
INNER JOIN Occupancy o ON d.Date = o.Date
GROUP BY
d.Date,
d.Month,
r.Rate
) t1 ON o.Date = t1.Date
DAX Measures (работает на отдельном временном шаге, но когдаиспользуя меру Capacity и значение Occupancy за месяц, я получаю одно значение Capacity и суммируем 30 значений Occupancy)
DailyCapacity =
VAR currentDate = MAX ( DimDate[Date] )
RETURN
CALCULATE ( SUM('Capacity'[Capacity]),
FILTER ( 'Capacity',
( 'Capacity'[StartDate] <= currentDate
&& 'Capacity'[EndDate] >= currentDate )))
Available = CALCULATE(SUM('Occupancy'[Occupancy]) - ('Capacity'[DailyCapacity ]))
(Works for each individual time step, doesn't roll up over time)
Существует ли метод DAX для суммирования показателя Capacity за вычетом доступного агрегата для каждого* 1010 временного шага *?
Другой подход заключается в использовании M для создания таблицы «DailyCapacity». В SQL:
SELECT
d.Date,
SUM(c.Capacity) 'DailyCapacity',
FROM
DimDate d
INNER JOIN Capacity c ON d.Date > c.StartDate AND d.Date < c.EndDate
GROUP BY
d.Date
, но я не могу найти способ присоединиться к логическому выражению в M, только ключи. Есть ли способ присоединиться к логическому выражению , а не к ключам в М?
Мои таблицы:
DimDate (Date, day, Month, Year, Billing Month, FY)
----------
1/1/2019, 1, 1, 2019, 1, 2019
1/2/2019, 2, 1, 2019, 1, 2019
... Every time step possible
Capacity (StartDate, EndDate, Capacity, Notes)
----------
1/1/2019, 12/31/2019, 40, "Annual Cap"
6/1/2019, 9/15/2019, 30, "Summer Peak"
Occupancy (Date, Occupancy, Location)
----------
1/1/2019, 20, 1
1/1/2019, 17, 2
1/2/2019, 30, 1
1/2/2019, 9, 2
1/3/2019, 22, 1
1/3/2019, 20, 2
Rate (Date, Rate)
----------
1/1/2019, $49.99
1/2/2019, $64.99
... etc.
Необходимые выходные данные
Available Space:
----------
1/1/2019, 3
1/2/2019, 1
1/3/2019, -2
1/4/2019, 0
И агрегирует по свернутым временным шагам:
SUM (Доступное пространство * Курс текущего дня) за месяц, квартал, год и т. Д. Включая итоги избыточной и недостаточной мощности как отрицательные и положительные.