Meilleures pratiques de modélisation des données
Cette section décrit différentes manières de charger des données dans une application Qlik Sense, suivant la structure des données et le modèle de données que vous souhaitez obtenir.
Conversion de colonnes de données en lignes
Mes données ressemblent probablement à celles-ci et je souhaite disposer les chiffres des ventes dans un champ distinct :
Année | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
2013 | 34 | 54 | 53 | 52 |
2014 | 47 | 56 | 65 | 67 |
2015 | 57 | 56 | 63 | 71 |
Utilisez le préfixe Crosstable lorsque vous chargez la table.
Le résultat final aura l'aspect suivant :
Year | Quarter | Sales |
---|---|---|
2013 | Q1 | 34 |
2013 | Q2 | 54 |
2013 | Q3 | 53 |
2013 | Q4 | 52 |
2014 | Q1 | 47 |
... | ... | ... |
Pour en savoir plus sur les tableaux croisés, voir Utilisation des tableaux croisés dans le script de chargement de données et Crosstable.
Conversion de lignes de données en colonnes
Je dispose d'une table générique contenant trois champs semblables à ceux-ci et je souhaite disposer chaque attribut sous forme de table distincte :
Object | Attribute | Value |
---|---|---|
ball | color | red |
ball | diameter | 25 |
ball | weight | 3 |
box | color | 56 |
box | height | 30 |
box | length | 20 |
box | width | 25 |
Créez un modèle de données générique à l'aide du préfixe de chargement Generic.
Vous obtiendrez un modèle de données qui aura l'aspect suivant :
Pour en savoir plus sur les données génériques, voir Bases de données génériques et Generic.
Chargement de données organisées en niveaux hiérarchiques, par exemple un schéma organisationnel
Mes données sont stockées dans une table de nœuds adjacents qui a l'aspect suivant :
NodeID | ParentNodeID | Title |
---|---|---|
1 | - | General manager |
2 | 1 | Country manager |
3 | 2 | Region manager |
Chargez les données avec le préfixe Hierarchy afin de créer une table de nœuds étendus :
NodeID | ParentNodeID | Title | Level1 | Level2 | Level3 |
---|---|---|---|---|---|
1 | - | General manager | General manager | - | - |
2 | 1 | Country manager | General manager | Country manager | - |
3 | 2 | Region manager | General manager | Country manager | Region manager |
Pour en savoir plus sur les niveaux hiérarchiques, voir Chargement de données hiérarchiques et Hierarchy.
Chargement des seuls enregistrements nouveaux ou mis à jour dans une base de données volumineuse
Je dispose d'une base de données comportant un grand nombre d'enregistrements et je ne souhaite pas recharger la totalité de la base de données pour actualiser le contenu de mon application. J'aimerais simplement charger les enregistrements nouveaux ou mis à jour, et effacer ceux qui ont été supprimés de la base de données.
Implémentez une solution de chargement incrémentiel à l'aide de fichiers QVD.
Pour plus d'informations, voir Chargement incrémentiel d'enregistrements nouveaux et mis à jour.
Combinaison de données issues de deux tables avec un champ commun
Qlik Sense associe les tables avec un champ commun de manière automatique, mais je souhaite contrôler la façon dont les tables sont combinées.
: Join / Keep
Vous pouvez combiner deux tables en une seule table interne à l'aide des préfixes Join ou Keep.
Pour plus d'informations, voir Combinaison de tables grâce à Join et Keep.
: Mappage
Une solution alternative à la jointure de tables consiste à utiliser le mappage, qui automatise la recherche de valeurs associées dans une table de mappage. Cette méthode permet de réduire la quantité de données à charger.
Pour plus d'informations, voir Utilisation du mappage comme alternative à la jointure.
Correspondance d'une valeur discrète avec un intervalle
Je dispose d'une table de valeurs numériques discrètes (Event) et je souhaite la faire correspondre avec un ou plusieurs intervalles (Start et End).
Time | Event | Commentaire |
---|---|---|
00:00 | 0 | Début de l'équipe 1 |
01:18 | 1 | Arrêt de la ligne |
02:23 | 2 | Redémarrage de la ligne 50 % |
04:15 | 3 | Vitesse de la ligne 100 % |
08:00 | 4 | Début de l'équipe 2 |
11:43 | 5 | Fin de la production |
Début | End | Ordre |
---|---|---|
01:00 | 03:35 | A |
02:30 | 07:58 | B |
03:04 | 10:27 | C |
07:23 | 11:43 | D |
Utilisez le préfixe IntervalMatch pour lier le champ Time à l'intervalle défini par Start et End.
Pour plus d'informations, voir Correspondance entre intervalles et données discrètes.
Si cet intervalle n'est pas défini de manière explicite par les préfixes de début et de fin (start et end), mais simplement au moyen d'un horodatage de modification tel que dans la table ci-dessous, vous devez créer une table d'intervalles.
Currency | Change Data | Rate |
---|---|---|
EUR | - | 8.59 |
EUR | 28/01/2013 | 8.69 |
EUR | 15/02/2013 | 8.45 |
USD | - | 6.50 |
USD | 10/01/2013 | 6.56 |
USD | 03/02/2013 | 6.30 |
Pour plus d'informations, voir Création d'un intervalle de dates à partir d'une seule date.
Gestion de valeurs de champ incohérentes
Mes données contiennent des valeurs de champ qui ne sont pas nommées de manière cohérente dans différentes tables. Par exemple, une table contient la valeur US dans la colonne Country tandis qu'une autre contient la valeur United States. Cette situation empêchera la création d'associations.
Country | Region |
---|---|
US | Maryland |
US | Idaho |
US | New York |
US | California |
Country | Population |
---|---|
United States | 304 |
Japan | 128 |
Brazil | 192 |
China | 1333 |
Procédez au nettoyage des données à l'aide d'une table de mappage, qui permettra de comparer les valeurs des champs et d'activer les associations appropriées.
Pour plus d'informations, voir Nettoyage de données.
Gestion des incohérences dans la casse des valeurs de champ
Mes données contiennent des valeurs de champ qui ne sont pas mises en forme de manière cohérente dans différentes tables. Par exemple, une table contient la valeur single dansType tandis qu'une autre table contient la valeur Single pour le même champ. Une telle situation empêche les associations, car le champ Type contiendra les deux valeurs single et Single ; la casse compte en effet.
Type | Price |
---|---|
single | 23 |
double | 39 |
Type | Couleur |
---|---|
Couleur unique | Red |
Couleur unique | Blue |
Double | Blanc |
Double | Black |
Si vous avez chargé les données via Ajouter des données, vous pouvez corriger le problème dans le Gestionnaire de données.
Procédez comme suit :
- Dans le Gestionnaire de données, ouvrez Table2 dans l'éditeur de table.
-
Renommez le champ Type en Table2.Type.
Si vous avez simplement ajouté la table via Ajouter des données en ayant activé la fonction de profilage des données, il est possible que le champ s'appelle déjà Table2.Type afin d'éviter une association automatique. Dans ce cas, cette procédure associe les deux tables.
- Créez un champ calculé au moyen de l'expression Lower(Table2.Type) et nommez-le Type.
- Cliquez sur Charger les données.
Les tables Table1 et Table2 doivent maintenant être associées par le champ Type, qui contient uniquement des valeurs en minuscules, comme single et double.
Si vous souhaitez utiliser un autre type de casse, vous pouvez également le faire au moyen de procédures similaires, mais n'oubliez pas que les tables seront associées à l'aide des champs portant le même nom.
- Pour que la première lettre de toutes les valeurs soit mise en majuscules, par exemple Single, créez plutôt le champ calculé Type dans Table1, et utilisez l'expression Capitalize(Table1.Type).
- Pour que toutes les valeurs soient intégralement mises en majuscules, par exemple SINGLE, créez le champ calculé Type dans les deux tables, et utilisez les expressions Upper(Table1.Type) et Upper(Table2.Type) respectivement.
Pour en savoir plus sur les champs calculés, voir Utilisation de champs calculés.
Pour en savoir plus sur la mise en majuscules, voir Capitalize - fonction de script et fonction de graphique, Lower - fonction de script et fonction de graphique et Upper - fonction de script et fonction de graphique.
Chargement de données géospatiales pour visualiser des données sur une carte
Je dispose de données que je souhaite visualiser au moyen d'une carte, par exemple des données de ventes par pays ou par magasin. Pour utiliser la visualisation d'une carte, je dois charger des données de zones ou des données de points.
Vous pouvez charger des données de zones ou de points correspondant aux lieux de vos valeurs de données à partir d'un fichier KML ou Excel. Vous devez par ailleurs charger l'arrière-plan réel de la carte.
Pour plus d'informations, voir Chargement de données de carte personnelles.