Exemples d'états alternatifs dans les expressions de graphique

Ces exemples sont destinés à présenter aux développeurs QlikView et/ou aux utilisateurs extrêmement chevronnés de QlikView les meilleures pratiques d'utilisation des états alternatifs. Ces exemples figurent dans le fichier : Alternate States Functionality.qvw.

Synchronisation de sélections entre états

Les expressions suivantes peuvent s'utiliser dans un même graphique :

count({$} DISTINCT [Numéro de facture])

count({État1} DISTINCT [Numéro de facture])

count({État2} DISTINCT [Numéro de facture])

Cette méthode présente un problème : le développeur QlikView doit dupliquer les sélections (listes de sélection et listes multiples) pour les trois états afin que l'utilisateur final puisse effectuer les sélections appropriées aux différents états. Dans de nombreux cas, le développeur QlikView souhaitera disposer d'un ensemble de sélections communes, disponibles dans tous les états. L'utilisateur final peut alors définir le contexte des divers graphiques, puis utiliser des sélections précises pour montrer les différences d'un état à l'autre. Lorsqu'elle est utilisée avec les états, l'analyse d'ensembles permet de maintenir la cohérence de certaines sélections d'un état à l'autre.

count({État1<Année = $::Année, Mois = $::Mois>} DISTINCT [Numéro de facture])

count({État2<Année = $::Année, Mois = $::Mois>} DISTINCT [Numéro de facture])

Le développeur QlikView conserve les sélections Année et Mois selon les états État1 et État2 synchronisés avec les sélections Année et Mois de l'état par défaut. Le développeur QlikView peut, selon les besoins, ajouter des éléments aux modificateurs de l'ensemble afin de maintenir la cohérence entre davantage de champs d'un état à l'autre.

Opérateurs d'ensemble

Les états sont compatibles avec les opérateurs d'ensemble (+, *, -, /). Les expressions suivantes sont valides et permettent de calculer les différents numéros de facture définis soit dans l'état par défaut soit dans l'État1.

Exemples :  

count({$ + État1} DISTINCT [Numéro de facture])
compte les différents numéros de facture concernant l'union de l'état <par défaut> et de l'État1.

count({1 - État1} DISTINCT [Numéro de facture])
compte les différents numéros de facture n'étant pas dans l'État1.

count({État1 * État2} DISTINCT [Numéro de facture])
compte les différents numéros de facture étant à la fois dans l'état <par défaut> et l'État1.

Remarque: Soyez prudent lors de l'utilisation d'opérateurs d'ensemble dans ce genre de situation. Le résultat est quelquefois différent de celui auquel vous vous attendiez. Cela peut arriver lorsque les sélections effectuées dans un état donné génèrent un ensemble de données pouvant ne pas être totalement compatible avec l'ensemble ou les ensembles avec lesquels il a été combiné. Cette situation se produit plus particulièrement lorsque le modèle de données est complexe.

Définitions de valeurs de champ implicites

Une autre façon d'utiliser les opérateurs d'ensemble consiste à les associer aux fonctions d'élément P() et E(). Ces fonctions sont uniquement disponibles dans des expressions d'ensemble.

Exemples :  

count({$<[Numéro de facture] = p({État1} [Numéro de facture])>} DISTINCT [Numéro de facture])
Cette expression compte les différents numéros de facture dans l'état <par défaut> sur la base des numéros de facture éventuellement disponibles dans l'État1.

Il s'agit presque (mais pas tout à fait) de l'équivalent de l'expression suivante :

count({$<[Numéro de facture] = État::[Numéro de facture]>} DISTINCT [Numéro de facture])

La différence entre les expressions est le fait que dans la première, les valeurs possibles pour le numéro de facture de l'État1 sont transmises dans l'état par défaut. Dans la deuxième expression, ce sont les valeurs sélectionnées à partir de l'État1 qui sont transmises dans l'état par défaut. Si l'utilisateur n'a pas effectué de sélections de numéros de facture dans l'État1, aucune valeur de numéro de facture ne sera transmise dans l'état par défaut.

Il est recommandé de réserver l'emploi des opérateurs d'ensemble dans le cadre des modificateurs d'ensemble. L'expression suivante permet de rechercher l'intersection des numéros de facture possibles de l'État1 et de l'État2, puis de transmettre ces valeurs dans les numéros de facture définis dans l'état par défaut.

Exemples :  

count({$<[Numéro de facture] = p({État1} [Numéro de facture]) * p({État2} [Numéro de facture])>} DISTINCT [Numéro de facture])
L'expression permettant de rechercher l'intersection des numéros de facture définis dans l'état <par défaut> et l'État1 est la suivante :

count({$<[Numéro de facture] = p({$} [Numéro de facture]) * p({État1} [Numéro de facture])>} DISTINCT [Numéro de facture])

Cette expression peut sembler complexe, car elle utilise un état (<par défaut> dans cet exemple) à la fois dans la fonction d'élément et dans un identificateur d'ensemble. Gardez à l'esprit le fait que la fonction d'élément p($) renvoie les valeurs possibles dans l'état par défaut. L'identificateur d'ensemble/d'état {$} est modifié par le résultat des fonctions d'élément. Les sélections de factures actuellement définies dans l'état par défaut sont écrasées par les valeurs issues de l'intersection des fonctions d'élément.

Notez toutefois que l'expression ci-dessus n'est pas encore tout à fait correcte, car elle ne permet pas de synchroniser les sélections communes à l'état par défaut et à l'État1. L'expression suivante permet de corriger ce problème :

Exemples :  

count({$<[Numéro de facture] = p({$} [Numéro de facture]) * p({État1<Année = $::Année, Mois = $::Mois>} [Numéro de facture])>} DISTINCT [Numéro de facture])

Comme dans les versions précédentes, le développeur QlikView peut ajouter des champs dans le modificateur afin de maintenir la cohérence des sélections d'un état à l'autre.