У меня 30 миллионов записей (ссуд) с диапазонами данных (FROM, TO), и мне нужно создать фиктивные записи для каждой даты в диапазоне дат.
Пример данных:
BALANCE EFF_FROM_DT EFF_TO_DT LOAN_NBR PAST_DUE_DT
1000 11/1/2018 11/29/2018 1234 10/29/2018
Выходные данные:
BALANCE Date EFF_FROM_DT EFF_TO_DT LOAN_NBR PAST_DUE_DT DPD
1000 11/1/2018 11/1/2018 11/29/2018 1234 10/29/2018 2
1000 11/2/2018 11/1/2018 11/29/2018 1234 10/29/2018 3
1000 11/3/2018 11/1/2018 11/29/2018 1234 10/29/2018 4
.
.
.
.
1000 11/29/2018 11/1/2018 11/29/2018 1234 10/29/2018 30
Мне нужно поместить это в приборную панельи быть в состоянии нарезать данные, используя другие измерения, такие как кредитный рейтинг и т. д., чтобы увидеть ежедневные просроченные%.Я начал делать это в Qlikview, извлекая данные из Netezza и расширяя данные в QV, используя скрипт ниже.Это займет час, чтобы загрузить 27 миллионов записей (только за последние 12 месяцев) и расширить его до ежедневных записей (360 миллионов записей).В идеале я хочу получить эти данные более чем за 12 месяцев (по крайней мере, за 3 года), чтобы иметь возможность видеть тенденции, которые в этом случае с использованием QV потребовали бы слишком много времени для обработки данных.Есть ли другое решение этой проблемы?что может сократить время обработки и дать мне возможность полоскать и повторять этот процесс каждый день?
LOAN_HIST:
LOAD BALANCE,
EFF_FROM_DT,
EFF_TO_DT,
LOAN_NBR,
PASTDUE,
Grade
FROM
[D:\QVDOCS\DEV\SOURCE\SHF416749\Examples\Test_data.xls]
(biff, embedded labels, table is Sheet1$);
LOAN_HIST2:
LOAD
*,
Date(EFF_FROM_DT + IterNo() - 1) As Date
While EFF_FROM_DT + IterNo() - 1 <= EFF_TO_DT
;
LOAD *
Resident LOAN_HIST order by LOAN_NBR,EFF_FROM_DT;
drop table LOAN_HIST;
LOAN_HIST3:
load
*,
day(Date) as DayOfMonth,
Date(monthstart(Date), 'MMM-YY') as MonthYear,
((year(Date)*12)+month(Date)) - (((year(PASTDUE)*12)+month(PASTDUE))) as MonthDiff
resident LOAN_HIST2;
drop table LOAN_HIST2;
Метод таблицы календаря:
DatesData:
LOAD * Inline [
Test_Date
11/1/2018
11/2/2018
11/3/2018
11/4/2018
11/5/2018
11/6/2018
11/7/2018
11/8/2018
11/9/2018
11/10/2018
11/11/2018
11/12/2018
11/13/2018
11/14/2018
11/15/2018
11/16/2018
11/17/2018
11/18/2018
11/19/2018
11/20/2018
11/21/2018
11/22/2018
11/23/2018
11/24/2018
11/25/2018
11/26/2018
11/27/2018
11/28/2018
11/29/2018
11/30/2018
12/1/2018
12/2/2018
12/3/2018
];
ODBC CONNECT TO [NTZ PRD] (XUserId is KbRXeRZGZJMSDZIR, XPassword is DFOcWHZMJDZAUYAHUD);
LOAN_HIST:
SQL SELECT
EFF_FROM_DT,
EFF_TO_DT,
BALANCE,
BRACCT,
PASTDUE
FROM PSAPROD.PSADDS."SHF_DLY_CORE_HSTRY" where
((EFF_FROM_DT >=TO_DATE('$(Today_Date_12mons)','DD-MON-YY') and EFF_FROM_DT <=TO_DATE('$(Today_Date)','DD-MON-YY'))
or
(EFF_TO_DT >=TO_DATE('$(Today_Date_12mons)','DD-MON-YY') and EFF_TO_DT <=TO_DATE('$(Today_Date)','DD-MON-YY'))
or
(EFF_TO_DT >=TO_DATE('31-DEC-9999','DD-MON-YYYY'))) and BALANCE>0
order by BRACCT,EFF_FROM_DT
;
LOAN_HIST2:
LOAD *,
if(EFF_TO_DT='12/31/9999',if(BALANCE=0, EFF_FROM_DT, date(today())),if(BALANCE=0,EFF_FROM_DT,EFF_TO_DT)) as EFF_TO_DT2
Resident LOAN_HIST order by BRACCT,EFF_FROM_DT;
drop table LOAN_HIST;
tabMatch:
IntervalMatch (Test_Date)
LOAD EFF_FROM_DT, EFF_TO_DT2
Resident LOAN_HIST2;