2016-03-30 4 views
2

Es ist wichtig, Berechnungen und Geschäftsregeln konsistent über QlikView-Anwendungen hinweg anzuwenden. Wir können Variablen, Verbindungen etc. in einer externen Datei speichern und über verschiedene QVW anwenden.Wiederverwendbarkeit QlikView: Zeit/Kalender Tabelle

Gibt es ein standardisiertes Skript für die Zeit-/Kalenderdimension, das praktisch alles enthält, was Sie bezüglich der Zeit benötigen und das über verschiedene QVWs hinweg verwendet werden kann, ohne dass Sie es bei der Entwicklung eines neuen QVW neu erstellen müssen. Ich hätte gerne etwas, das robust ist, alles hat was ich brauche und das ich in jeden QVW einbinden kann.

Antwort

0

zwei Optionen:

  1. Sie können eine .qvw erstellen, die einen Kalender .qvd generiert, die alle Datumsfelder enthält (etwa DayOfMonth, DayOfWeek, Month etc.) sowie ein Date Feld, sagen genannt CalendarDate . Dann in Ihrem .qvw können Sie Left Join Ihre Faktentabelle gegen die Daten laden, die von .qvd über das Feld CalendarDate geladen werden. Aus Leistungsgründen würde ich den Kalender nicht als separate Tabelle verlassen, wenn ich ihm helfen kann.
  2. Andernfalls können Sie eine Textdatei erstellen, die die Spaltendefinitionen in einer Variablen enthält, die Sie als Makro verwenden können. So etwas wie

    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 '; 
    

    Sie diese Datei laden können, sagen common.txt mit $(Must_Include=common.txt); oder $(Include=common.txt); Dann in Ihrer Ladeanweisung für Ihre Faktentabelle, können Sie dieses Makro wie wie verwenden:

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

Sie können nach dem Rob Wunderlich's Qlikview Components suchen, es gibt eine Standardkalenderfunktion, die Sie anrufen können.

Sie können auch auf seiner Website überprüfen, gibt es eine very good script Ich verwende jedes Mal, wenn ich einen Bericht mache. Sie können das Ergebnis des Skripts in eine QVD-Datei einfügen und sie bei jedem von Ihnen erstellten Bericht laden.

So wird es so etwas wie dieses:

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; 
Verwandte Themen