Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello all,
I need to load a file with the following fields and contents :
| Date1 | Date2 |
|---|---|
| 01/01/2012 | |
| 02/01/2012 | 30/12/2012 |
| 03/01/2012 | |
| 04/01/2012 | |
| 05/01/2012 | 31/12/2012 |
| 06/01/2012 |
In my load script, I need to transform it to have a table which looks like that :
| Date1 | Date2 |
|---|---|
| 01/01/2012 | |
| 02/01/2012 | 30/12/2012 |
| 03/01/2012 | 30/12/2012 |
| 04/01/2012 | 30/12/2012 |
| 05/01/2012 | 31/12/2012 |
| 06/01/2012 | 31/12/2012 |
To sumarize, I need to have for each Date1 a Date2 value which will be same that the last Date2.
This example is simplified, in my real data, I have one Date2 by month on one Date1.
I have all the dates in Date1 for several years.
I have tried to use the "previous()" function, but the load is very long :
File:
Load
Date1,
Date2,
rowno() as init
from file;
NB:
Load
maxstring(init) as Row
RESIDENT File;
let vCount = Peek('Row',0,NB);
😧
LOAD
Date1,
Date2
RESIDENT File;
for i=1 to vCount
😧
JOIN LOAD
Date1,
if((Date2)='',previous(Date2),Date2) as Date2,
RESIDENT D
WHERE (Date2)=''
order by Date1 ASC;
next i
Have you an idea about this problem ?
Thank you for your help,
Best regards,
Jaymerry
Use the peek() function to simply pull the above value in case the value is null:
Load
Date1,
if(len(Date2)=0,peek('Date2'),Date2) as Date2;
Load * Inline [
Date1,Date2
01/01/2012,
02/01/2012,30/12/2012
03/01/2012,
04/01/2012,
05/01/2012,31/12/2012
06/01/2012,
];
Use the peek() function to simply pull the above value in case the value is null:
Load
Date1,
if(len(Date2)=0,peek('Date2'),Date2) as Date2;
Load * Inline [
Date1,Date2
01/01/2012,
02/01/2012,30/12/2012
03/01/2012,
04/01/2012,
05/01/2012,31/12/2012
06/01/2012,
];
Hello Johannes,
Thank you for your answer.
With your example, I will have the following result :
| Date1 | Date2 |
|---|---|
| 01/01/2012 | |
| 02/01/2012 | 30/12/2012 |
| 03/01/2012 | 30/12/2012 |
| 04/01/2012 | |
| 05/01/2012 | 31/12/2012 |
| 06/01/2012 | 31/12/2012 |
All the Date2 following will not be filled. How can I do to fill all the Date2 with this example :
| Date1 | Date2 |
|---|---|
| 01/01/2012 | |
| 02/01/2012 | 30/12/2012 |
| 03/01/2012 | |
| 04/01/2012 | |
| 05/01/2012 | 31/12/2012 |
| 06/01/2012 | 31/12/2012 |
| 07/01/2012 | |
| 08/01/2012 | |
| 09/01/2012 | |
| 10/01/2012 | |
| 11/01/2012 | |
| 12/01/2012 | |
| 13/01/2012 | |
| 14/01/2012 | |
| 15/01/2012 | |
| 16/01/2012 | |
| 17/01/2012 | |
| 18/01/2012 | |
| 19/01/2012 | |
| 20/01/2012 | |
| 21/01/2012 | |
| 22/01/2012 | |
| 23/01/2012 | |
| 24/01/2012 | |
| 25/01/2012 | |
| 26/01/2012 | |
| 27/01/2012 | |
| 28/01/2012 | |
| 29/01/2012 | |
| 30/01/2012 |
Thanks for your help,
Jaymerry
Hello
Can you upload your example?
The function Peek run ok that say Johannes. I try your example and run ok.
Thanks.
You're right,
Thanks to you and Johannes for your help