Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Condition based on Drill Down level in Qlik Sense

Hello,

I would need some help with following logic:

I have a drill down date dimension (year/month/week/day) and I want to compare values (for example sum of sold products) at the begining and end of some period. The issue is, that I want to compare sum(sold_products) in min month and max month, THEN, when I choose only one month, I drill down to weeks and here aI want to compare sum(sold_products) in min week and max week.

Lowest level in Date dimension is Time, so I've tried to use Interval() to find out, where in Drill Down dimension I'm right now:

minDD:

if(Interval(Max(total Date)-Min(total Date), 'hh') < 24, DayName(Min(total Date)),

if(Interval(Max(total Date)-Min(total Date), 'hh') > 24, if(Interval(Max(total Date)-Min(total Date), 'hh')

< 168, WeekName(Min(total Date)), MonthName(Min(total Date)))))

maxDD:

if(Interval(Max(total Date)-Min(total Date), 'hh') < 24, DayName(Max(total Date)),

if(Interval(Max(total Date)-Min(total Date), 'hh') > 24, if(Interval(Max(total Date)-Min(total Date), 'hh') < 50, WeekName(Max(total Date)),

    MonthName(Max(total Date)))))

When I choose one month, so I drill down to weeks, minDD and maxDD show weeks:

Now I want to use this logic in KPIs.

I want to compare last and first Month/Week/Day.

For example this works for Days:

SUM(

if(Interval(Max(total Date)-Min(total Date), 'hh') < 24,

IF(DayName(Date) = DayName(Min(total Date))

,Sales)))

But I cannot figure out, how to implement the rest. For example when I tried to add Weeks, expression dosn't work:

SUM(
if(Interval(Max(total Date)-Min(total Date), 'hh') < 24,
IF(DayName(Date) = DayName(Min(total Date)),

if(Interval(Max(total Date)-Min(total Date), 'hh') > 24,
if(Interval(Max(total Date)-Min(total Date), 'hh') < 168,
     IF(WeekName(Date) = WeekName(Min(total Date))

,Sales))))))

Can anyone help me please?

Thanks,

Mirek

1 Solution

Accepted Solutions
Not applicable
Author

Soo....

Seams like I found solution using Pick() and Match() function:

Pick(

Match(

IF(Interval(Max(total Date)-Min(total Date), 'D')<8,'Days',

  IF(Interval(Max(total Date)-Min(total Date), 'D')>7,

   IF(Interval(Max(total Date)-Min(total Date), 'D')<30,'Weeks','Months')))

,'Days','Weeks','Months'  

),

sum(IF(DayName(Date) = DayName(Max(total Date)),Sales)),

sum(IF(WeekName(Date) = WeekName(Max(total Date)),Sales)),

sum(IF(MonthName(Date) = MonthName(Max(total Date)),Sales))

)

I'm still not sure about number of days in Interval() condition, but I will focus on this later.

I hope it helps someone 😉

Miroslav

View solution in original post

1 Reply
Not applicable
Author

Soo....

Seams like I found solution using Pick() and Match() function:

Pick(

Match(

IF(Interval(Max(total Date)-Min(total Date), 'D')<8,'Days',

  IF(Interval(Max(total Date)-Min(total Date), 'D')>7,

   IF(Interval(Max(total Date)-Min(total Date), 'D')<30,'Weeks','Months')))

,'Days','Weeks','Months'  

),

sum(IF(DayName(Date) = DayName(Max(total Date)),Sales)),

sum(IF(WeekName(Date) = WeekName(Max(total Date)),Sales)),

sum(IF(MonthName(Date) = MonthName(Max(total Date)),Sales))

)

I'm still not sure about number of days in Interval() condition, but I will focus on this later.

I hope it helps someone 😉

Miroslav