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: 
Not applicable

Set expression in Min() leads to '-'

I have a test-table with one dimension:

product_id

I have the measure Min(price)

to check whether  there is data or not.

I have a min price for each product_id, so do I if i select the last date by myself.

But if i try to use a set expression to ensure that the min price shows the data for the last date, i only have "-" signs in the column.

Min({ $ <filter_date = {'$(=date(floor(Max( {$<[filter_date]=>} discoverydate))))'} price)

I checked the inner

=date(floor(Max( {$<[filter_date]=>} discoverydate)))

too, and it has the intended date which i want to use as filter_date.


any ideas?

1 Solution

Accepted Solutions
Not applicable
Author

OMG...

It was a typo all the time...

the closing " >} " was missing all the time

even in your suggestions we kept missing it.

and the syntax-check don't get it in this case.

anyway i appreciate your help very much.

View solution in original post

17 Replies
sunny_talwar

What is your date field format Edgar?

UPDATE: Try this

Min({$<filter_date = {'$(=Date(Floor(Max({$<[filter_date]=>} discoverydate)), 'DateFieldFormatHere'))'} price)

Not applicable
Author

In my Main:

SET DateFormat='DD.MM.YYYY';

SET TimestampFormat='DD.MM.YYYY hh:mm:ss[.fff]';

I load the used fields like:

...

discoveryDate as discoverydate,

Date(Floor(discoveryDate)) as filter_date,

...

I tried:

Min({ $ <filter_date = {'$(date(floor(Max( {$<[filter_date]=>} discoverydate)), 'DD.MM.YYYY'))'} price)

It doesn't work 😕

sunny_talwar

You are missing a equal sign and you need to use double quotes:

Min({$<filter_date = {"$(=Date(Floor(Max({$<[filter_date]=>} discoverydate)), 'DD.MM.YYYY'))"} price)

Not applicable
Author

hm...

I "copy-pasted" your code, but still no value.

What made me wonder is that my "controll-columns"

Max( {$<[filter_date]=>} discoverydate)

and

Date(floor( Max( {1} discoverydate)))

and

min(price)

all work.

sunny_talwar

Does this, in a KPI object, give you the date you want to filter in filter_date column (and hopefully in the same format as filter_date)

=Date(Floor(Max({$<[filter_date]=>} discoverydate)), 'DD.MM.YYYY')

MK_QSL
MVP
MVP

What is the format of discoverydate and filter_date?

Not applicable
Author

I get the 16.02.2016 as KPI as expected.

Not applicable
Author

discoverydate is loaded from a mysql.

I didn't change anything on purpose in the LOAD-Script.

discoverydate is presented as DD.MM.YYYY hh:mm:ss

from this discoverydate i made the filter_date with:

Date(Floor(discoveryDate)) as filter_date

filter_date is presented as DD.MM.YYYY

thus, are these the formats you are asking for, or do we have more control to define a field as date within the LOAD-Script?

So far I didn't run into trouble regarding dates.

Not applicable
Author

Hardcoded:

Min( {$<filter_date = {"16.02.2016"} >} price)

works.

But in other KPIs the (bold):

count(

  { $ <calc_merchant = {"OWN_CLIENT_DATA_FLAG"},

    [filter_date]= > }

  distinct if(

    aggr( { $ <filter_date = {'$(=date(floor(Max( {$<[filter_date]=>} discoverydate))))'} > } rank(-min(price),1,1), product_id, calc_merchant) = 1, product_id

        )

  )

Set Expression work.

Thus why not as measure within a Min ?