Accéder au contenu principal Passer au contenu complémentaire

Champs dérivés

Si vous disposez d'un groupe de champs apparentés (ou si les champs contiennent des informations divisibles en parties plus petites pouvant servir lors de la création de dimensions ou de mesures), vous pouvez créer des définitions de champ destinées à générer des champs dérivés. Un exemple type est un champ de date, à partir duquel il est possible de dériver plusieurs attributs, tels que l'année, le mois, le numéro de semaine ou le nom du jour. Vous pouvez calculer tous ces attributs dans une expression de dimension en utilisant des fonctions de date Qlik Sense, mais vous avez également la possibilité de créer une définition de calendrier commune à tous les champs de type date. Les définitions de champ sont stockées dans le script de chargement de données.

Note InformationsLes définitions de champs de calendrier par défaut prévues pour Qlik Sense sont incluses dans autoCalendar pour les champs de date chargés à l'aide du Gestionnaire de données.Pour plus d'informations, voir Dérivation automatique de champs de date via autocalendar et Ajout de données à l'application.

Déclaration des définitions de champ de calendrier

L'instruction Declare vous permet de créer une définition des champs dérivés. C'est à ce stade que vous définissez les différents attributs du champ, dans ce cas il s'agit d'attributs liés à la date. Chaque champ est décrit comme <expression> As field_name tagged tag. La définition d'une ou de plusieurs balises est facultative, mais cela peut influer sur l'ordre de tri du champ dérivé. Utilisez $1 pour faire référence au champ de données à partir duquel les champs dérivés doivent être générés.

Note Avertissement À moins de créer votre propre autocalendar ou d'utiliser l'[autoCalendar] automatiquement configuré créé par le Gestionnaire de données, n'utilisez pas autoCalendar comme nom pour des définitions de champ de calendrier. Ce nom est réservé aux modèles de calendrier automatiquement générés. Voir Dérivation automatique de champs de date via autocalendar.
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');
 

Pour plus d'informations, voir Declare.

Mappage de champs de données au calendrier à l'aide de Derive

L'étape suivante consiste à utiliser l'instruction Derive pour mapper les champs de données existants au calendrier. Cela aboutira à la création des champs dérivés. Il existe trois façons de procéder à partir du script de chargement de données :

  • Mappez des champs spécifiques par nom de champ.

    DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
  • Mappez tous les champs à l'aide d'une ou de plusieurs balises de champ spécifiques.

    DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
  • Mappez tous les champs dotés de l'une des balises de la définition du champ ($date dans l'exemple ci-dessus).

    DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;

Dans ce cas, vous pouvez utiliser n'importe lequel des trois champs indiqués ici.

Pour plus d'informations, voir Derive.

Dérivation automatique de champs de date via autocalendar

Si vous utilisez le Gestionnaire de données pour créer votre application et charger des données, un calendrier nommé [autoCalendar] est automatiquement inséré dans le script de chargement pour fournir des définitions de calendrier par défaut. Celles-ci sont visibles dans la logique métier de l'application.

Pour les applications créées via des scripts qui contiennent des champs de date, vous pouvez insérer le code [autoCalendar] indiqué ci-dessous, dans une section de votre script après avoir chargé l'ensemble des champs de date applicables. Cela permet aux utilisateurs d'applications d'utiliser l'ensemble des types d'analyse basés sur des périodes disponibles, y compris ceux capables de créer des feuilles intelligentes. Notez que, pour que les périodes de calendrier puissent être correctement ajoutées à la logique métier, il faut que le calendrier soit intitulé [autocalendar].

Modifiez les noms de champ [My_Date_Field1] et [My_Date_Field2] de la ligne DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ; pour lier le champ de date aux calculs autocalendar générant les nouveaux champs de date dérivés. Si vous avez un seul champ de date à lier à autocalendar, supprimez le champ [My_Date_Field2]. De même, ajoutez des champs de date supplémentaires, si vous avez plus de deux champs de date pour lesquels vous souhaitez activer autocalendar.

[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] ;

Si cela est fait correctement, un certain nombre de périodes de calendrier sera automatiquement créé dans la logique métier de l'application, et vous pourrez utiliser les types d'analyse basés sur des périodes dans Insight Advisor.

Pour plus d'informations, voir Utilisation de feuilles intelligentes dans Insight Advisor pour des analyses basées sur des périodes.

Utilisation des champs de date dérivés dans une visualisation

Qlik Sense est prêt à reconnaître les champs de données dérivés si vous avez créé une définition de calendrier et mappé les champs comme dans l'exemple présent. Ces champs sont disponibles dans la section Champs de date et heure du panneau des ressources Champs. Vous trouverez également tous les champs dérivés dans l'éditeur d'expression et lors de la création ou de l'édition de dimensions.

Pour plus d'informations, voir Champs de date et heure.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !