Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Independent validation for trusted, AI-ready data integration. See why IDC named Qlik a Leader: Read the Excerpt!
cancel
Showing results for 
Search instead for 
Did you mean: 
kruel830
Contributor II
Contributor II

Loop for subfield-function and generate missing dates?

I have a problem with my dataset. Data is for weekly item consumtion estimates, incoming pieces etc. The date for each item is start of each week (monday) and values are weekly total values. Daily values are available too, but those are stored in semicolon separeted list.

I need to have those daily values and store them in to new rows. Probably I need to use Subfield funtion and somekind of loop, but I don't know how to execute it. Please help.

Current situation:

ItemDateWeekly_consumtionDaily_consumptionWeekly_IncomingDaily_Incoming
A8.3.202150"20;4;6;2;18;0;0"60"20;0;20;20;0;0;0"
B8.3.202140"8;4;13;5;10;0;0"55"10;10;10;10;15;0;0"
A15.3.202145"9;8;7;8;13;0;0"50"10;10;10;10;10;0;0"
B15.3.202143"12;14;0;4;13;0;0"50"20;10;10;0;10;0;0"

 

Desired output:

ItemCodeDateDaily_consumptionDaily_Incoming
A8.3.20212020
A9.3.202140
A10.3.2021620
A11.3.2021220
A12.3.2021180
A13.3.202100
A14.3.202100
A15.3.2021910
A16.3.2021810

etc...

1 Solution

Accepted Solutions
Saravanan_Desingh

Try this,

SET DateFormat='D.M.YYYY';

tab1:
LOAD *, Date(Date+IterNo()-1) As _Date,
	SubField(Daily_consumption,';',IterNo()) As _Daily_consumption,
	SubField(Daily_Incoming,';',IterNo()) As _Daily_Incoming
While IterNo()-1<=SubStringCount(Daily_consumption,';');
LOAD * INLINE [
    Item, Date, Weekly_consumtion, Daily_consumption, Weekly_Incoming, Daily_Incoming
    A, 8.3.2021, 50, "20;4;6;2;18;0;0", 60, "20;0;20;20;0;0;0"
    B, 8.3.2021, 40, "8;4;13;5;10;0;0", 55, "10;10;10;10;15;0;0"
    A, 15.3.2021, 45, "9;8;7;8;13;0;0", 50, "10;10;10;10;10;0;0"
    B, 15.3.2021, 43, "12;14;0;4;13;0;0", 50, "20;10;10;0;10;0;0"
];

View solution in original post

3 Replies
Saravanan_Desingh

Try this,

SET DateFormat='D.M.YYYY';

tab1:
LOAD *, Date(Date+IterNo()-1) As _Date,
	SubField(Daily_consumption,';',IterNo()) As _Daily_consumption,
	SubField(Daily_Incoming,';',IterNo()) As _Daily_Incoming
While IterNo()-1<=SubStringCount(Daily_consumption,';');
LOAD * INLINE [
    Item, Date, Weekly_consumtion, Daily_consumption, Weekly_Incoming, Daily_Incoming
    A, 8.3.2021, 50, "20;4;6;2;18;0;0", 60, "20;0;20;20;0;0;0"
    B, 8.3.2021, 40, "8;4;13;5;10;0;0", 55, "10;10;10;10;15;0;0"
    A, 15.3.2021, 45, "9;8;7;8;13;0;0", 50, "10;10;10;10;10;0;0"
    B, 15.3.2021, 43, "12;14;0;4;13;0;0", 50, "20;10;10;0;10;0;0"
];
Saravanan_Desingh

Output:

commQV50.PNG

kruel830
Contributor II
Contributor II
Author

Works perfectly, thank you!