Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Daniel_de_Wet
Contributor II
Contributor II

Split Field into Multiple Records/lines

Hi, 

I need some help in solving this problem when loading my data. 

I data that looks like this :

PAT_ID DIAGNOSI
100/17 DIPENDENZA DA COCAINA (13/03/2017)
DIPENDENZA DA OPPIOIDI (13/03/2017)
100/22 DIPENDENZA DA OPPIOIDI (03/05/2022)
100/21 Non sono soddisfatti i criteri diagnostici ICD-9/CM per dipendenze e/o abuso di sostanze
100/01 ABUSO DI ALCOL (10/06/2014)
ABUSO DI ALCOL, IN REMISSIONE (27/05/2016)
ABUSO DI CANNABINOIDI (10/06/2014)
ABUSO DI CANNABINOIDI (21/02/2019)
ABUSO DI CANNABINOIDI, IN REMISSIONE (06/10/2021)
ABUSO DI CANNABINOIDI, IN REMISSIONE (29/01/2016)
ABUSO DI COCAINA (06/02/2019)
ABUSO DI COCAINA (10/06/2014)
ABUSO DI COCAINA (21/02/2013)
ABUSO DI COCAINA (21/02/2017)
ABUSO DI COCAINA (21/02/2019)
ABUSO DI COCAINA, IN REMISSIONE (06/10/2021)
ABUSO DI COCAINA, IN REMISSIONE (29/01/2016)
DIPENDENZA DA OPPIOIDI (21/02/2013)
DIPENDENZA DA OPPIOIDI (30/11/2001)
DIPENDENZA DA OPPIOIDI, IN REMISSIONE (10/06/2014)
DIPENDENZA DA OPPIOIDI, IN REMISSIONE (21/02/2017)
DIPENDENZA DA OPPIOIDI, IN REMISSIONE (27/05/2016)
100/19 ABUSO DI COCAINA (02/05/2019)
ABUSO DI COCAINA, IN REMISSIONE (20/04/2020)
DIPENDENZA DA CANNABINOIDI (02/05/2019)
DIPENDENZA DA CANNABINOIDI, IN REMISSIONE (20/04/2020)
100/20 Non sono soddisfatti i criteri diagnostici ICD-9/CM per dipendenze e/o abuso di sostanze
101/20 ABUSO DI COCAINA, IN REMISSIONE (24/06/2020)
101/18 DIPENDENZA DA CANNABINOIDI (19/03/2018)
DIPENDENZA DA COCAINA (19/03/2018)

 

I need it to look like this: 

PAT_ID DIAGNOSI DIAG_DATE
100/17 DIPENDENZA DA COCAINA  13/03/2017
100/17 DIPENDENZA DA OPPIOIDI  13/03/2017
100/22 DIPENDENZA DA OPPIOIDI  03/05/2022
100/21 Non sono soddisfatti i criteri diagnostici ICD-9/CM per dipendenze e/o abuso di sostanze
100/01 ABUSO DI ALCOL  10/06/2014
100/01 ABUSO DI ALCOL, IN REMISSIONE 27/05/2016
100/01 ABUSO DI CANNABINOIDI 10/06/2014
100/01 ABUSO DI CANNABINOIDI 21/02/2019
100/01 ABUSO DI CANNABINOIDI, IN REMISSIONE 06/10/2021
100/01 ABUSO DI CANNABINOIDI, IN REMISSIONE  29/01/2016
100/01 ABUSO DI COCAINA 06/02/2019
100/01 ABUSO DI COCAINA 10/06/2014
100/01 ABUSO DI COCAINA 21/02/2013
100/01 ABUSO DI COCAINA  21/02/2017
100/01 ABUSO DI COCAINA 21/02/2019
100/01 ABUSO DI COCAINA, IN REMISSIONE 06/10/2021
100/01 ABUSO DI COCAINA, IN REMISSIONE 29/01/2016
100/01 DIPENDENZA DA OPPIOIDI  21/02/2013
100/01 DIPENDENZA DA OPPIOIDI 30/11/2001
100/01 DIPENDENZA DA OPPIOIDI, IN REMISSIONE 10/06/2014
100/01 DIPENDENZA DA OPPIOIDI, IN REMISSIONE 21/02/2017
100/01 DIPENDENZA DA OPPIOIDI, IN REMISSIONE 27/05/2016
100/19 ABUSO DI COCAINA  02/05/2019
100/19 ABUSO DI COCAINA, IN REMISSIONE  20/04/2020
100/19 DIPENDENZA DA CANNABINOIDI  02/05/2019
100/19 DIPENDENZA DA CANNABINOIDI, IN REMISSIONE 20/04/2020
100/20 Non sono soddisfatti i criteri diagnostici ICD-9/CM per dipendenze e/o abuso di sostanze
101/20 ABUSO DI COCAINA, IN REMISSIONE  24/06/2020
101/18 DIPENDENZA DA CANNABINOIDI  19/03/2018
101/18 DIPENDENZA DA COCAINA 19/03/2018

 

I can't figure this one out. Hopefully, one of you can get me there.

Thanks

PS I attach the ile in excel format. 

Labels (2)
1 Solution

Accepted Solutions
MarcoWedel

another similar example:

 

MarcoWedel_1-1655330981563.png

 

table1:
LOAD PAT_ID,
           If(str like '* (??/??/????)', Left(str,Len(str)-13), str) as DIAGNOSI,
           If(str like '* (??/??/????)', Date#(TextBetween(str,'(',')'),'DD/MM/YYYY')) as DIAG_DATE;
LOAD PAT_ID,
          SubField(DIAGNOSI,Chr(10)) as str
FROM [https://community.qlik.com/cyjdu72974/attachments/cyjdu72974/qlikview-app-development/1219481/1/Exam...] (ooxml, embedded labels, table is Foglio1);

 

 

View solution in original post

8 Replies
lironbaram
Partner - Master III
Partner - Master III

Hi 
your load script should look like this:

LOAD
	[PAT_ID] ,
	subfield([DIAGNOSI],chr(10)) AS [DIAGNOSI]
 FROM [lib://Downloads/Example_DIAG.xlsx]
(ooxml, embedded labels, table is Foglio1);
Daniel_de_Wet
Contributor II
Contributor II
Author

Thanks !! This helps alot. Do you have any suggestions to create the date field?

Anonymous
Not applicable

I would recommend this script...

LOAD
PAT_ID,
subfield([DIAGNOSI],chr(10),iterno()) AS [DIAGNOSI],
Date#(TextBetween(subfield([DIAGNOSI],chr(10),iterno()),'(',')'),'D/M/YYYY') as Date
FROM
[C:\Users\XXX\Documents\QlikView\Community Help\Example_DIAG.xlsx]
(ooxml, embedded labels, table is Foglio1)
While Iterno() <= SubStringCount([DIAGNOSI],chr(10)) + 1
And Len(subfield([DIAGNOSI],chr(10),iterno())) >0;

HTH,

John

(aka johncaqc)

MarcoWedel

another similar example:

 

MarcoWedel_1-1655330981563.png

 

table1:
LOAD PAT_ID,
           If(str like '* (??/??/????)', Left(str,Len(str)-13), str) as DIAGNOSI,
           If(str like '* (??/??/????)', Date#(TextBetween(str,'(',')'),'DD/MM/YYYY')) as DIAG_DATE;
LOAD PAT_ID,
          SubField(DIAGNOSI,Chr(10)) as str
FROM [https://community.qlik.com/cyjdu72974/attachments/cyjdu72974/qlikview-app-development/1219481/1/Exam...] (ooxml, embedded labels, table is Foglio1);

 

 

Daniel_de_Wet
Contributor II
Contributor II
Author

Thanks John!!!

This is a valid solution, works great!

 

Daniel_de_Wet
Contributor II
Contributor II
Author

Thanks Marco!!!!

Anonymous
Not applicable

Interesting alternative, Marco. I wonder what the difference in load times each of our solutions would be. Given such a small dataset...

My solution was actually provided to me several years ago by some else in this community for a similar project I once had.

Anonymous
Not applicable

Hi Marco, I tried sending you a private message but it seems I cannot. I was wondering how you determine the link to forum attachments so they don't need to be downloaded first.

Regards,

JohnInSD

(aka johncaqc)