Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Abgeleitete Felder

Wenn Feldgruppen miteinander in Bezug stehen oder Felder Informationen enthalten, die in kleinere, bei der Erstellung von Dimensionen und Kennzahlen relevante Teile aufgeschlüsselt werden können, lassen sich Felddefinitionen zum Generieren der abgeleiteten Felder erstellen. Ein Beispiel wäre ein Datumsfeld, aus dem sich mehrere Attribute, wie Jahr, Monat, Kalenderwoche oder Wochentag ableiten lassen. Alle diese Attribute können in einer Dimensionsformel mithilfe der Datumsfunktionen von Qlik Sense berechnet werden. Alternativ lässt sich jedoch eine gemeinsame Kalenderdefinition für alle Felder des Datumstyps erstellen. Felddefinitionen werden im Datenladeskript gespeichert.

InformationshinweisStandarddefinitionen für Kalenderfelder für Qlik Sense sind in autoCalendar für Datumsfelder enthalten, die mit dem Datenmanager geladen werden.Weitere Informationen finden Sie unter Automatisches Ableiten von Datumsfeldern mithilfe des automatischen Kalenders und Hinzufügen von Daten zur App aus Verbindungen und neuen Dateien.

Definieren der Kalenderfelddefinitionen

Sie verwenden den Declare-Befehl, um eine Definition für die abgeleiteten Felder zu erstellen. Hier legen Sie die verschiedenen Attribute des Felds fest – in diesem Fall Attribute mit Datumsbezug. Jedes Feld wird folgendermaßen beschrieben: <expression> As field_name tagged tag. Das Festlegen von einem oder mehreren Tags ist optional, kann sich jedoch auf die Sortierreihenfolge des abgeleiteten Felds auswirken. Verwenden Sie $1 zur Bezugnahme auf das Datenfeld, aus dem die abgeleiteten Felder generiert werden sollen.

Warnhinweis Außer wenn Sie Ihren eigenen automatischen Kalender erstellen oder mit dem automatisch konfigurierten [autoCalendar] arbeiten, der von Datenmanager erstellt wird, dürfen Sie autoCalendar nicht als Namen für Kalenderfelddefinitionen verwenden. Dieser Name ist für automatisch generierte Kalendervorlagen reserviert. Siehe Automatisches Ableiten von Datumsfeldern mithilfe des automatischen Kalenders.
Calendar: DECLARE FIELD DEFINITION TAGGED '$date' Parameters first_month_of_year = 1 Fields Year($1) As Year Tagged ('$numeric'), Month($1) as Month Tagged ('$numeric'), Date($1) as Date Tagged ('$date'), Week($1) as Week Tagged ('$numeric'), Weekday($1) as Weekday Tagged ('$numeric'), DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric');
 

Weitere Informationen finden Sie unter Declare.

Zuordnen von Datenfeldern zum Kalender mithilfe von Derive

Der nächste Schritt ist die Verwendung des Derive-Befehls für die Zuordnung der vorhandenen Datenfelder zum Kalender. Dadurch werden die abgeleiteten Felder erstellt. Sie können dies auf drei verschiedene Möglichkeiten im Datenladeskript erreichen.

  • Zuordnung der spezifischen Felder nach Feldname.

    DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
  • Zuordnung aller Felder mit einem oder mehreren spezifischen Tags für Felder.

    DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
  • Zuordnung aller Felder, die mit einem der Tags der Felddefinition versehen sind ($date in unserem Beispiel).

    DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;

In diesem Fall können Sie eines von den dreien der hier aufgeführten Beispiele verwenden.

Weitere Informationen finden Sie unter Derive.

Automatisches Ableiten von Datumsfeldern mithilfe des automatischen Kalenders

Wenn Sie den Datenmanager verwenden, um Ihre App zu erstellen und Daten zu laden, wird ein Kalender namens [autoCalendar] automatisch in das Ladeskript eingefügt, um Standardkalenderdefinitionen bereitzustellen. Diese werden in der Geschäftslogik der App angezeigt.

Für Apps, die mit Skripterstellung mit enthaltenen Datumsfeldern erstellt wurden, können Sie diesen [autoCalendar]-Code wie unten gezeigt in Ihre Skript in einen Abschnitt einfügen, nachdem Sie alle anwendbaren Datumsfelder geladen haben. Dies ermöglicht es App-Benutzern, alle verfügbaren zeitraumbasierten Analysetypen zu verwenden, einschließlich derjenigen, die intelligente Arbeitsblätter erstellen können. Beachten Sie, dass der Kalender den Titel [autocalendar] haben muss, damit die Kalenderzeiträume korrekt zur Geschäftslogik hinzugefügt werden.

Ändern Sie die Feldnamen [My_Date_Field1] und [My_Date_Field2] in der Zeile DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ;, um das Datumsfeld mit den Berechnungen des automatischen Kalenders zu verknüpfen, wodurch die neuen abgeleiteten Datumsfelder generiert werden. Wenn Sie nur ein Datumsfeld für die Verknüpfung mit dem automatischen Kalender haben, entfernen Sie [My_Date_Field2]. Analog dazu fügen Sie zusätzliche Datumsfelder hinzu, wenn Sie den automatischen Kalender für mehr als zwei Datumsfelder aktivieren möchten.

[autoCalendar]:
  DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS		
  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter', '$cyclic'),
  Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$yearquarter', '$qualified'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [_YearQuarter] Tagged ('$yearquarter', '$hidden', '$simplified'),
  Month($1) AS [Month] Tagged ('$month', '$cyclic'),
  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),
  Dual(Month($1), monthstart($1)) AS [_YearMonth] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber', '$cyclic'),
  Date(Floor($1)) AS [Date] Tagged ('$axis', '$date', '$qualified'),
  Date(Floor($1), 'D') AS [_Date] Tagged ('$axis', '$date', '$hidden', '$simplified'),
  If (DayNumberOfYear($1) <= DayNumberOfYear(Today()), 1, 0) AS [InYTD] ,
  Year(Today())-Year($1) AS [YearsAgo] ,
  If (DayNumberOfQuarter($1) <= DayNumberOfQuarter(Today()),1,0) AS [InQTD] ,
  4*Year(Today())+Ceil(Month(Today())/3)-4*Year($1)-Ceil(Month($1)/3) AS [QuartersAgo] ,
  Ceil(Month(Today())/3)-Ceil(Month($1)/3) AS [QuarterRelNo] ,
  If(Day($1)<=Day(Today()),1,0) AS [InMTD] ,
  12*Year(Today())+Month(Today())-12*Year($1)-Month($1) AS [MonthsAgo] ,
  Month(Today())-Month($1) AS [MonthRelNo] ,
  If(WeekDay($1)<=WeekDay(Today()),1,0) AS [InWTD] ,
  (WeekStart(Today())-WeekStart($1))/7 AS [WeeksAgo] ,	
  Week(Today())-Week($1) AS [WeekRelNo] ;

DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ;

Wenn dies korrekt konfiguriert wird, wird automatisch eine Anzahl Kalenderzeiträume in der Geschäftslogik der App erstellt, und Sie können die zeitraumbasierten Analysetypen in Insight Advisor verwenden.

Weitere Informationen finden Sie unter Verwenden von intelligenten Arbeitsblättern in Insight Advisor für zeitraumbasierte Analysen.

Verwenden der abgeleiteten Datumsfelder in einer Visualisierung

Qlik Sense erkennt abgeleitete Datumsfelder, wenn Sie eine Kalenderdefinition erstellt haben und die Felder wie in diesem Beispiel zugeordnet haben. Sie sind im Abschnitt Datums- und Uhrzeitfelder des Extras-Fensters Felder verfügbar. Alle abgeleiteten Felder sind auch im Formel-Editor und bei der Erstellung und Bearbeitung von Dimensionen zu finden.

Weitere Informationen finden Sie unter Datums- und Zeitfelder.

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!