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: 
User93
Contributor III
Contributor III

Change dynamically data in column

Hi all,

I need help on something I'm trying to implement to change some of the rows in a column.

Here is the case : I have three columns of data :
Column 1 : values A, B, C, D...
Column 2 : for each value of column 1, I have at least two values 1 and 2. Those values 1 and 2 are the same for each value of column 1.
Column 3 : I have one value for each value of column 2 : when column 2 = 1, column 3 = 1000, when column 2 = 2, column 3 = 2000, etc. Thse values however are different for each value of column 1.

Like this :

 

Column 1 Column 2 Column 3
A 1 1000
A 2 2000
B 1 1500
B 2 2500
C 1 1700
C 2 2700
D 1 5000
D 2 6000

 

I would like to do the following : for each value of column 1, I would like all rows of column 3 to show only the value for when column 2 = 1.
I don't want to filter on column 2 = 1 because I want to keep all the rows.

Like this :

Column 1 Column 2 Column 3
A 1 1000
A 2 1000
B 1 1500
B 2 1500
C 1 1700
C 2 1700
D 1 5000
D 2 5000

 

I tried to do it in the script :
IF(Column 2 = 1, Column 3) AS TEST

And I tried to do it directly in the table :
=Aggr({<Column 3 = {'1'}>}Column 2,Column 1)

But neither of this works.

Any idea on how to do this ?

Best regards.

Labels (1)
1 Solution

Accepted Solutions
ogster1974
Partner - Master II
Partner - Master II

Then this 

Load
*,
If([Column 1]=Previous([Column 1]),Previous([Column 3]),[Column 3]) as [Column 4]
Resident Tmp
;

ogster1974_0-1675072826926.png

 

View solution in original post

5 Replies
ogster1974
Partner - Master II
Partner - Master II

In front end

Only{<[Column 2] = {'1'}>} [Column 3])

In Script 

Tmp:
Load * Inline [
Column 1, Column 2, Column 3,
A, 1, 1000
A, 2, 1000
B, 1, 1500
B, 2, 1500
C, 1, 1700
C, 2, 1700
D, 1, 5000
D, 2, 5000
]
;

Table:
Load
*,
If([Column 2]='1', [Column 3], Null()) as [Column 4]
Resident Tmp
;

Drop table Tmp;

End result of both.

ogster1974_0-1675069459465.png

 

luciancotea
Specialist
Specialist

Best way is to use the peek() function in the script.

 

User93
Contributor III
Contributor III
Author

Hi, thank you for the quick answer.

However, I would like to show all the rows, including those where column 2 = 2, but with the new column showing the values for when column 2 = 1 on all rows (for each value of column 1),  like this, as in column 4 :

Column 1 Column 2 Column 3 Column 4
A 1 1000 1000
A 2 2000 1000
B 1 1500 1500
B 2 2500 1500
C 1 1700 1700
C 2 2700 1700
D 1 5000 5000
D 2 6000 5000

 

Is there a way to do it ?

ogster1974
Partner - Master II
Partner - Master II

Then this 

Load
*,
If([Column 1]=Previous([Column 1]),Previous([Column 3]),[Column 3]) as [Column 4]
Resident Tmp
;

ogster1974_0-1675072826926.png

 

User93
Contributor III
Contributor III
Author

Thanks a lot, it's working !

Best regards.