2016-03-30 4 views
2

Важно применять вычисления и бизнес-правила последовательно в приложениях QlikView. Мы можем хранить переменные, соединения и т. Д. Во внешнем файле и применять их в различных QVW.Повторное использование QlikView: таблица времени/календаря

Есть ли стандартизованный сценарий для измерения времени/календаря, который имеет практически все, что вам нужно в отношении времени, и которое может использоваться на разных QVW без необходимости тратить время на создание его снова и снова при разработке нового QVW. Я хотел бы иметь что-то надежное, иметь все, что мне нужно, и что я могу включить в каждый QVW.

ответ

0

Два варианта:

  1. Вы можете создать .qvw, который генерирует календарь .qvd, содержащий все поля даты (скажем DayOfMonth, DayOfWeek, Month и т.д.), а также Date поля, называемые говорят CalendarDate , Затем во всех ваших .qvw вы можете Left Join свою таблицу фактов с данными, загруженными из .qvd через поле CalendarDate. По соображениям производительности я бы не оставил календарь в виде отдельной таблицы, если я могу помочь.
  2. В противном случае вы можете создать текстовый файл, содержащий определения столбцов в переменной, которую вы можете использовать в качестве макроса. Что-то вроде

    LET CalendarFields = ' 
        Year($1) as DateYear, 
        Month($1) as DateMonthOfYear, 
        Week($1) as DateWeekOfYear, 
        Day($1) as DateDayOfMonth, 
        WeekDay($1) as DateDayOfWeek, 
        Date(MonthStart($1), ''YYYY MMM'') as DateMonthInYear, 
        Year(WeekStart($1)) & ''w'' & Num(Week($1), ''00'') as DateWeekInYear '; 
    

    Вы можете загрузить этот файл, скажем common.txt с $(Must_Include=common.txt); или $(Include=common.txt); Затем в заявлении нагрузки для вашей таблицы фактов, вы можете использовать этот макрос, как, как:

    Facts: 
    LOAD 
        *, 
        $(CalendarFields(FactDateField)); 
    
1

Вы можете проверить Rob Wunderlich's Qlikview Components, есть стандартная функция Календаря, которую вы можете вызвать.

Вы также можете проверить на своем сайте, есть very good script Я использую каждый раз, когда я делаю отчет. Вы можете поместить результат скрипта в QVD и загрузить его на каждый сделанный вами отчет.

Так что это будет что-то вроде этого:

MasterCalendar: 
Load 
TempDate AS OrderDate, 
week(TempDate) As Week, 
Year(TempDate) As Year, 
Month(TempDate) As Month, 
Day(TempDate) As Day, 
'Q' & ceil(month(TempDate)/3) AS Quarter, 
Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 
WeekDay(TempDate) as WeekDay 
; 

//=== Generate a temp table of dates === 
LOAD 
date(mindate + IterNo()) AS TempDate 
,maxdate // Used in InYearToDate() above, but not kept 
WHILE mindate + IterNo() <= maxdate; 

//=== Get min/max dates from Field ===/ 
LOAD 
AddYears(today(), -6) as mindate, // The first date you want 
Today() as maxdate 
AUTOGENERATE 1; 

STORE MasterCalendar INTO 'Calendar.qvd' (qvd); 
DROP TABLE MasterCalendar;