Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
qluser01
Creator
Creator

how to make a hierarchy using numbers

Hi!

I have an input like this:

numbername
1Process_name
1.1SubProcess_name
1.1.1Step_name
1.1.1.1Substep_name
1.1.1.2Substep_2_name
1.1.1.3Substep3_name
1.1.2Step2_name
1.1.2.1Substep4_name
1.1.2.2Substep5_name

And I need to make a table inside QView via script as follows:

numberProcessSubProcessStepSubStep
1.1.1.1Process_nameSubProcess_nameStep_nameSubstep_name
1.1.1.2Process_nameSubProcess_nameStep_nameSubstep_2_name
1.1.1.3Process_nameSubProcess_nameStep_nameSubstep3_name
1.1.2.1Process_nameSubProcess_nameStep2_nameSubstep4_name
1.1.2.2Process_nameSubProcess_nameStep2_nameSubstep5_name

So first digit - is Process numberm there are more than 10 processes - number from 1. to 10.

2nd digit - SubProcess number

and so on...

for your convenience:

Load * Inline

[number, name

1, Process_name

1.1, SubProcess_name

1.1.1, Step_name

1.1.1.1, Substep_name

1.1.1.2, Substep_2_name

1.1.1.3, Substep3_name

1.1.2, Step2_name

1.1.2.1, Substep4_name

1.1.2.2, Substep5_name

2, Process2_name

2.1, SubProcess2_name

2.1.1, Step222_name

2.1.1.1, Substep222_name

2.1.1.2, Substep223_name

];

Also, I need 2 solutions:

1) if we have hierarchy from Process to SubStep (see example above)

2) if we have hierarchy from Process to Step  - so no SubSteps present in initial table at all

1 Solution

Accepted Solutions
rahulpawarb
Specialist III
Specialist III

Hello Eeacrw,

Please refer below given sample script:

Data:

LOAD * INLINE [

number, name

1, Process_name

1.1, SubProcess_name

1.1.1, Step_name

1.1.1.1, Substep_name

1.1.1.2, Substep_2_name

1.1.1.3, Substep3_name

1.1.2, Step2_name

1.1.2.1, Substep4_name

1.1.2.2, Substep5_name

2, Process2_name

2.1, SubProcess2_name

2.1.1, Step222_name

2.1.1.1, Substep222_name

2.1.1.2, Substep223_name

];

TmpData:

LOAD number,

     Left(number,5) AS Number1,

     Left(number,3) AS Number2,

     Left(number,1) AS Number3,

     name AS SubStep

Resident Data

Where Len(number) = 7;

JOIN (TmpData)

LOAD Left(number,1) AS Number3,

     name AS Process

Resident Data

Where Len(number) = 1;

JOIN (TmpData)

LOAD Left(number,3) AS Number2,

     name AS SubProcess

Resident Data

Where Len(number) = 3;

JOIN (TmpData)

LOAD Left(number,5) AS Number1,

     name AS Step

Resident Data

Where Len(number) = 5;

FinalData:

LOAD number,

     Process,

     SubProcess,

     Step,

     SubStep

Resident TmpData;

DROP Tables Data, TmpData;

Also refer the attached sample application.

Hope this will be helpful.

Regards!

Rahul

View solution in original post

1 Reply
rahulpawarb
Specialist III
Specialist III

Hello Eeacrw,

Please refer below given sample script:

Data:

LOAD * INLINE [

number, name

1, Process_name

1.1, SubProcess_name

1.1.1, Step_name

1.1.1.1, Substep_name

1.1.1.2, Substep_2_name

1.1.1.3, Substep3_name

1.1.2, Step2_name

1.1.2.1, Substep4_name

1.1.2.2, Substep5_name

2, Process2_name

2.1, SubProcess2_name

2.1.1, Step222_name

2.1.1.1, Substep222_name

2.1.1.2, Substep223_name

];

TmpData:

LOAD number,

     Left(number,5) AS Number1,

     Left(number,3) AS Number2,

     Left(number,1) AS Number3,

     name AS SubStep

Resident Data

Where Len(number) = 7;

JOIN (TmpData)

LOAD Left(number,1) AS Number3,

     name AS Process

Resident Data

Where Len(number) = 1;

JOIN (TmpData)

LOAD Left(number,3) AS Number2,

     name AS SubProcess

Resident Data

Where Len(number) = 3;

JOIN (TmpData)

LOAD Left(number,5) AS Number1,

     name AS Step

Resident Data

Where Len(number) = 5;

FinalData:

LOAD number,

     Process,

     SubProcess,

     Step,

     SubStep

Resident TmpData;

DROP Tables Data, TmpData;

Also refer the attached sample application.

Hope this will be helpful.

Regards!

Rahul