У меня в таблице MyTable
есть столбцы: QuoteID, ControlNo, Premium, ExpirationDate
Мне нужно создать меру, которая захватила бы SUM(Premium)
, а EffectiveDate
должна быть <= Today()
, а последняя ExpirationDate
(упорядоченная по QuoteID DESC
) должна быть >= Today()
.
Как я могу перевести приведенное ниже заявление на DAX?
В SQL я бы сделал так:
select sum(Premium) as Premium
from MyTable t
where EffectiveDate <= GETDATE() and
(select top 1 t2.ExpirationDate
from MyTable t2
where t2.ControlNo = t.controlno
order by t.quoteid desc) >= GETDATE()
Как я могу написать это в DAX?
Я пробовал это, но он не работает должным образом:
Premium =
CALCULATE (
SUM ( fact_Premium[Premium] ),
FILTER (
fact_Premium,
fact_Premium[EffectiveDate] <= TODAY () &&
TOPN ( 1, ALL ( fact_Premium[ExpirationDate] ),
fact_Premium[QuoteID], ASC ) >= TODAY ()
)
)
ОБНОВЛЕНИЕ:
Пытаюсь создать вычисляемую таблицу из набора данных fact_Premium, но все еще не уверен, как ее отфильтровать
In_Force Premium =
FILTER(
ADDCOLUMNS(
SUMMARIZE(
//Grouping necessary columns
fact_Premium,
fact_Premium[QuoteID],
fact_Premium[Division],
fact_Premium[Office],
dim_Company[CompanyGUID],
fact_Premium[LineGUID],
fact_Premium[ProducerGUID],
fact_Premium[StateID],
fact_Premium[ExpirationDate]
),
"Premium", CALCULATE(
SUM(fact_Premium[Premium])
),
"ControlNo", CALCULATE(
DISTINCTCOUNT(fact_Premium[ControlNo])
)
), // Here I need to make sure TODAY() falls between fact_Premium[EffectiveDate] and (SELECT TOP 1 fact_Premium[ExpirationDate] ORDE BY QuoteID DESC)
)