Accéder au contenu principal

Concaténation

La concaténation est une opération qui utilise deux tables pour les combiner en une seule.

Les deux tables sont associées par empilement de l'une sur l'autre, avec une colonne représentant chaque nom de colonne distinct. Les données restent inchangées et la table résultante contient le même nombre d'enregistrements que les deux tables d'origine rassemblées. Il est possible d'effectuer plusieurs opérations concatenate successivement pour obtenir une table concaténée à partir de plus de deux tables.

Concaténation automatique

Si le nombre et les noms des champs de plusieurs tables chargées sont exactement identiques, Qlik Sense concaténera automatiquement le contenu des différentes instructions en une seule table.

Le nombre et les noms des champs doivent être parfaitement identiques pour que la concaténation automatique puisse avoir lieu. L'ordre des deux instructions LOAD est arbitraire, mais la table portera le nom de la table chargée en premier lieu.

Procédez comme suit :

  1. Ouvrez l'éditeur de chargement de données dans l'application Scripting Tutorial.
  2. Cliquez sur l'onglet Dates.
  3. Cliquez sur Charger les données.
  4. En fonction du script de chargement écrit jusqu'à présent, Qlik Sense charge 628 lignes du fichier de données Dates.xlsx vers Table2.

    Fenêtre de progression de chargement de données
    Data load progress window

  5. Sur la nouvelle ligne dans le section de script Dates, copiez et collez l'instruction LOAD pour Table2. Ceci entraînera les données à être chargées deux fois. Nommez la seconde table Table2a.
  6. Vous pouvez également supprimer le script existant, puis copiez et collez ce qui suit :

    Table2: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); Table2a: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    Le script devrait avoir l'aspect suivant :

    Script de chargement sur l'onglet Dates
    Load script in Dates tab.

  7. Cliquez sur Charger les données.
  8. Qlik Sense ne charge pas Table2 et puis Table2a. À la place, il reconnaît que Table2a a les mêmes noms de champs et le nombre de champs que Table2. Il ajoute ensuite les données de Table2a vers Table2, et supprime la table Table2a. Le résultat est que désormais Table2 a 1 256 lignes.

    Concaténation dans la fenêtre de progression de chargement de données
     Concatenation in data load progress window.

  9. Ouvrez le Visionneur de modèle de données.
  10. Cliquez sur Afficher l'aperçu.
  11. Seule Table2 a été créée. Sélectionnez Table2. La table a 256 lignes.

    Visionneur de modèle de données affichant Table2
    Data model viewer showing Table2.

Concaténation forcée

Même si plusieurs tables n'ont pas exactement le même ensemble de champs, il est tout de même possible de forcer Qlik Sense à les concaténer. Pour ce faire, utilisez le préfixe Concatenate dans le script afin de concaténer une table avec une autre table nommée ou avec la table créée en dernier lieu.

Procédez comme suit :

  1. Éditez l'instruction LOAD pour la table Table2a, en ajoutant Concatenate et en commentant Week.
  2. Votre script devrait désormais apparaître ainsi :

    Table2a: Concatenate LOAD "Date", Month (Date) as "Month", Quarter, // "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    En commentant Week, nous garantissons que les tables ne sont pas identiques.

  3. Cliquez sur Charger les données.
  4. Ouvrez le Visionneur de modèle de données.
  5. Vous pouvez constater à présent que la Table2a n'a pas été créée.

  6. Cliquez sur Table2 dans le visionneur de modèle de données, puis cliquez sur Aperçu.
  7. La table contient les champs Date, Month, Quarter, Week et Year. Le champ Week est toujours visible, car il a été chargé à partir de la Table2.

  8. Cliquez sur Week dans Table2. L'aperçu affiche que le nombre de valeurs non nulles pour le champ est 628. Cependant, si vous cliquez sur n'importe quel autre champ, vous verrez que le nombre de valeurs non nulles est 1 256. Week a été chargée une seule fois, de Table2. Le nombre de valeurs, ou d'enregistrements, est la somme du nombre d'enregistrements des Table2 et Table2a.

Blocage de la concaténation

Si le nombre et les noms des champs de plusieurs tables chargées sont exactement identiques, Qlik Sense concaténera automatiquement le contenu des différentes instructions en une seule table. Ce comportement peut être empêché à l'aide d'une instruction NoConcatenate. La table chargée avec l'instruction LOAD ou SELECT associée ne sera donc pas concaténée avec la table existante.

Procédez comme suit :

  1. Pour pouvoir complètement séparer le contenu de deux tables, ajoutez NoConcatenate à l'instruction LOAD dans Table2a, et renommez les champs pour que Qlik Sense ne crée pas une clé synthétique en fonction des champs correspondants. Annulez un commentaire Week dans Table2 pour que les deux tables aient les mêmes champs.
  2. Votre script devrait désormais apparaître ainsi :

    Table2: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); Table2a: NoConcatenate LOAD "Date" as "Date2", Month (Date) as "Month2", Quarter as "Quarter2", "Week" as "Week2", "Year" as "Year2" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); 

  3. Cliquez sur Charger les données.
  4. Ouvrez le Visionneur de modèle de données.
  5. Vous constatez à présent que les deux tables sont entièrement séparées.

    Visionneur de modèle de données affichant Table2 et Table 2a
    Data model viewer showing Table2 and Table 2a.

  6. Maintenant que nous avons terminé la démonstration de la concaténation, nous n'avons plus besoin de la Table2a. Supprimez toutes les lignes relatives à l'instruction LOAD pour Table2a, puis cliquez sur Charger les données.