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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
dawgfather
Creator
Creator

Trimming extra details after third character instance

I have some SQL tables that has data that includes (but might not) a string of characters that has multiple forward slashes. Think of them as similar to folders and subfolders. I am trying to determine a way to trim off the excess after the third "/" - if there is a third - and leave the base details. Essentially I want to see data two folder levels down, but no further. Sample data would include something like the below and then what I am trying to get to below that.

Sample data:

Servername0

Servername1:/vol

Servername2:/vol/folder1/folder2/folder3

Servername2:/vol/folder1/folder3/folder4

Servername2:/vol/folder1/folder5

Servername2:/vol/folder6/folder7/folder8/folder9

Data looking for:

Servername0

Servername1:/vol

Servername2:/vol/folder1

Servername2:/vol/folder1

Servername2:/vol/folder1

Servername2:/vol/folder6

Anyone have some fancy coding to accomplish this?

I can do some CHARSET stuff, but then the lines without a "/" get messed up. I can do it all in Excel by doing text to columns and then concatenating selected columns back together (excluding extra columns), but that is overlay painful.

1 Solution

Accepted Solutions
swuehl
MVP
MVP

Or maybe

LOAD * ,

Left(Sample, If(Index(Sample,'/',3), Index(Sample,'/',3)-1,Len(Sample))) as Result

INLINE [

Sample

Servername0

Servername1:/vol

Servername2:/vol/folder1/folder2/folder3

Servername2:/vol/folder1/folder3/folder4

Servername2:/vol/folder1/folder5

Servername2:/vol/folder6/folder7/folder8/folder9

];

View solution in original post

3 Replies
sunny_talwar

May be this in QlikView Script:

Table:

LOAD *,

  SubField(SampleData, '/', 1) & If(Len(KeepChar(SampleData, '/')) >= 1, '/') & SubField(SampleData, '/', 2) & If(Len(KeepChar(SampleData, '/')) >= 2, '/') & SubField(SampleData, '/', 3) as Solution;

LOAD * Inline [

SampleData

Servername0

Servername1:/vol

Servername2:/vol/folder1/folder2/folder3

Servername2:/vol/folder1/folder3/folder4

Servername2:/vol/folder1/folder5

Servername2:/vol/folder6/folder7/folder8/folder9

];


Capture.PNG

swuehl
MVP
MVP

Or maybe

LOAD * ,

Left(Sample, If(Index(Sample,'/',3), Index(Sample,'/',3)-1,Len(Sample))) as Result

INLINE [

Sample

Servername0

Servername1:/vol

Servername2:/vol/folder1/folder2/folder3

Servername2:/vol/folder1/folder3/folder4

Servername2:/vol/folder1/folder5

Servername2:/vol/folder6/folder7/folder8/folder9

];

dawgfather
Creator
Creator
Author

Worked like a charm! Thank you very much.