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

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Filtering table based on date

Hi

I have a table box with two columns. Below are the first few rows of the table box.

DateDetails
01 Sep 2014Task 1`
02 Sep 2014Task 2
03 Sep 2014

Now I want a list box that has the following four options to select from:

  • Last One Week
  • Last Two Weeks
  • Last Three Weeks
  • Last Four weeks

When I select any one of the  four options I want the table to display the data accordingly.

Example : If user selects Last One Week, then I want the table to display the data only for the last one week (current week).. I don't want any older data to appear in the table.

How can I make this work?

Labels (1)
7 Replies
ali_hijazi
Partner - Master II
Partner - Master II

I would add a new field as follows:

if Today() - DateField <=7, 'Last Week',if(Today()-DateField <=14 and >7, '2 Weeks',..... as Week Indicator

then you can add your list box listing values for Week Indicator field

hope this helps

I can walk on water when it freezes
maleksafa
Specialist
Specialist

there is a very nice blog on how to dynamically select time frames, it would be interesting to have a look.

http://community.qlik.com/blogs/qlikviewdesignblog/2014/06/06/dynamically-selecting-timeframes

maternmi
Creator II
Creator II

Hi,

I think Ali suggest to do it in the script, don't you Ali?

BR

Michael

Not applicable
Author

What if my Last one week is not defined as 'the last 7 days' but defined by the Week Number. For Example- If the current week is W18 then my 'last one week' will be defined as W17 and my 'last two weeks' will be defined by W17 & W16 and so on..

ali_hijazi
Partner - Master II
Partner - Master II

yes this is done at the script side

I can walk on water when it freezes
ali_hijazi
Partner - Master II
Partner - Master II

then you need to create a master calendar and specify the week number in it the master calendar would be something as follows:

StartYear = Year(Today()) -4;

  YearsToGenerate=Year(Today()) - $(StartYear) +1;

  UNQUALIFY *;

  //Look through number of years defined above

  for i = 1 to YearsToGenerate;

  let curYear = StartYear+(i-1);

  let StartDate = makedate(curYear);  //Returns first day of year

  let YearEnd = YearEnd(StartDate);   //Returns last day of year

  let EndWeek = WeekEnd(StartDate);

  let DayEndWeek = day(EndWeek);

  let WeekStart = date(EndWeek);

  //use if week starts on Saturday let WeekStart = date(EndWeek - 1);

  //Calculate number of days in the year

  let TotalDays =(YearEnd-StartDate)+2;

  //Create a temporary calendar

  TempCalendar:

  load recno()*$(i) as DateKey,

  '$(StartDate)'+recno()-1 as PERIOD_DATE

  autogenerate(TotalDays-1);

    

  Next

  //Building the master calendar with most date dimensions

  MasterCalendar:

  load

  num(daystart(PERIOD_DATE)) as PERIOD_DATE,

  Week(PERIOD_DATE) as Week,

  DateKey,

  Year(PERIOD_DATE) as Year,

  Month(PERIOD_DATE) as Month,

  Num(Month(PERIOD_DATE)) as MonthNum,

  Day(PERIOD_DATE) as Day,

  'Q' & Ceil(Month(PERIOD_DATE)/3) as Quarter,

  Year(PERIOD_DATE) & '-' & 'Q' & Ceil(Month(PERIOD_DATE)/3) as QUARTER_YEAR,

  Year(AddMonths(PERIOD_DATE,-3)) & '-' & 'Q' & ceil(Month(AddMonths(PERIOD_DATE,-3))/3) AS PREVIOUS_QUARTER_YEAR,

  Year(PERIOD_DATE) & ' - S' & Ceil(Month(PERIOD_DATE)/6) as Season,

  if(MOD(Month(PERIOD_DATE),6) =0,1,0) AS IS_LAST_MONTH_OF_SEASON,

  Month(PERIOD_DATE) & '-' & Day(PERIOD_DATE) as MonthDay,

  Date(MonthStart(PERIOD_DATE), 'MM  Week(PERIOD_DATE) as CalendarWeek,

M-YYYY') as MonthYear,

  Week(PERIOD_DATE) & '-' & Year(PERIOD_DATE) as WeekYear,

  WeekDay(PERIOD_DATE) as WeekDay

  resident TempCalendar  order by PERIOD_DATE Asc;

  Drop table TempCalendar;

The calendar Week will be the week that you want

I can walk on water when it freezes
Not applicable
Author

What if I want to create a calendar with only two fields Date Key & Date Label. That has 7 dates corresponding to Label 'Last One Week' and 14 dates corresponding to 'Last Two Weeks' and so on