Благодаря Buda c Мне удалось достичь желаемых результатов.
Я основал свой код на его ответе с некоторыми дополнениями / изменениями.
1-й я загрузил все данные и добавил кредитный флаг с помощью сопоставления для строк, где Тип начисления - «Утерянные кредиты» (используется позже)
Map_Cred:
Mapping
Load
Serial_KEY,
'1' as [Lost Credit Flag]
FROM [lib://...qvd](qvd)
Where [Charge Type]='Lost Credits'
;
Raw_Data:
LOAD
*,
applymap('Map_Cred',Serial_KEY,' ') as [Cred Flag]
FROM [lib://...qvd](qvd)
;
Затем я создал карту, как было предложено, с добавлением кредитного флага, это требуется для устранения частичных кредитов (IE где потерянные кредиты <> потерянные платежи)
Map_Lost:
Mapping
load
SerNo,
Date(Min([First Lost])) as [First Lost Date]
where [Lost Total]<>0
Group by SerNo
;
Load
SerNo,
Sfx,
Sum(Value) as [Lost Total],
date(min([Charge Date])) as [First Lost]
Resident Raw_Data
Where [Cred Flag]<>1 and
Match([Charge Type],'Lost Credits','Lost Charges')
group by SerNo,Sfx
;
Затем применил указанное выше сопоставление к основным данным
CD1:
Load
SerNo,
Sfx,
Serial_KEY,
Value,
[Charge Date],
[Charge Type],
ApplyMap('Map_Lost',SerNo,'12/12/2025') as [First Lost Date],
if(ApplyMap('Map_Lost',SerNo,'12/12/2025')<[Charge Date],'After','Before') as Before_After
Resident Raw_Data
;
Drop table Raw_Data
;
И, наконец, я смог для разбивки итоговых затрат на отдельные столбцы с заданным анализом (заменяя Тип начисления на столбец).
sum({<Before_After={'After'},"Charge Type"={"Lost Charges"}>} Value)