Я пытаюсь создать «процент удержания» для политик в течение определенного периода времени (по месяцам, с начала года и по годам).Таким образом, все политики в данный период времени по сравнению с активными в конце периода.
Политики могут быть:
N=New
RN=ReNew
C=Cancel
RI=ReInstate
NR=NonRenew
Данные транзакции выглядят примерно так, StatusNum - это то, что я могу получить, чтобы показать статус информации.
PolicyID PolicyNum StatusDate Status StatusNum Net
1 123 1/1/2018 N 1 1
2 123 3/31/2018 C 0 -1
3 123 4/1/2018 RI 1 +1
4 123 6/1/2018 RN 1 0
5 222 2/1/2018 N 1 1
6 222 7/1/2018 RN 1 0
7 333 1/1/2018 N 1 1
8 333 6/1/2018 NR 0 -1
9 444 1/1/2018 N 1 1
10 444 5/30/2018 C 0 -1
Моя лучшая догадкато, как это сделать, это взять сумму последних значений StatusNum в PIT (разделенных по номеру политики), деленную на первое значение StatusNum в начале PIT.Так что, если я отфильтрую по датам с 01.01.2008 по 8/1/2018 *, будет в силе
- 123 (+ 1, + 1)
- 222 не будет в силепока (так что ничего не учитывается) (+ 0, + 0)
- 333 действовал в начале, но не продлен (+ 1, -1)
- 444 был в силев начале, но он отменил (+ 1, -1)
Таким образом, 3 политики были активны на 01.01.2008, а 2 отменены, 1 не имеет значения, поэтому срок хранения будет33,3%
Может ли кто-нибудь дать отзыв, если это лучший способ сделать это и как этого добиться?
Заранее благодарен за помощь.
Обновление
Это своего рода то, что я ищу, но это слишком медленно:
'AsOfPolicies = var A = SELECTCOLUMNS (SUMMARIZECOLUMNS (Транзакции [PolicyNumber], filter (Transactions,Транзакции [DateKey] = min (Транзакции [DateKey]) && Транзакции [IsInForce] = - 1)), «aPolicyNumber», [PolicyNumber])
var B = SELECTCOLUMNS (SUMMARIZECOLUMNS (уже [PolicyNumbe)r], фильтр (транзакции, транзакции [DateKey] <= MAX (транзакции [DateKey])), «MaxDate», MAX (транзакции [DateKey])), «bPolicyNumber», [PolicyNumber], «MaxDate», [MaxDate]) var C = SELECTCOLUMNS (фильтр (CROSSJOIN (A, B), [aPolicyNumber] = [bPolicyNumber]), "cPolicyNumber", [aPolicyNumber], "MaxDateKey", [MaxDate]) Var D = SELECTCOLUMNS (фильтр (CROSSJOIN (, Транзакции), [cPolicyNumber] = [PolicyNumber] && [MaxDateKey] = [DateKey]), «PolicyNumber», [PolicyNumber], «PD_ID», [PD_ID], «IsInForce», [IsInForce]) Возврат D '</p>
Обновление
Также фильтр не работает