NoConcatenate
Le préfixe NoConcatenate oblige deux tables chargées aux ensembles de champs identiques à être traitées comme deux tables internes distinctes. Sinon, elles seraient automatiquement concaténées.
NoConcatenate( loadstatement | selectstatement )
Par défaut, si une table chargée contient un nombre identique de champs et des noms de champ identiques par rapport à une table précédemment chargée dans le script, Qlik Sense concatène automatiquement ces deux tables. Cela se produit, même si la deuxième table est nommée différemment.
Cependant, si le préfixe de script NoConcatenate est inclus avant l'instruction LOAD ou l'instruction SELECT de la deuxième table, ces deux tables sont chargées séparément.
Un cas d'usage type de NoConcatenate se produit si vous avez besoin de créer une copie temporaire d'une table pour effectuer des transformations temporaires sur cette copie, tout en conservant une copie des données originales. Grâce à NoConcatenate, vous pouvez effectuer cette copie sans la rajouter implicitement à la table source.
Paramètres régionaux
Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. Le format de date est indiqué dans l'instruction SET DateFormat de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples.
Les paramètres régionaux par défaut des applications sont basés sur les paramètres système régionaux de l'ordinateur ou du serveur sur lequel Qlik Sense est installé. Si le serveur Qlik Sense auquel vous accédez est configuré sur la Suède, l'éditeur de chargement de données utilisera les paramètres régionaux suédois pour les dates, l'heure et la devise. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Sense. Qlik Sense sera affiché dans la même langue que celle du navigateur que vous utilisez.
Exemple | Résultat |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
Une table avec A et B comme mesures est chargée. Une deuxième table contenant les mêmes champs est chargée séparément via la variable NoConcatenate. |
Exemple 1 – concaténation implicite
Vue d'ensemble
Dans cet exemple, vous allez ajouter deux scripts de chargement dans l'ordre séquentiel.
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
-
Un ensemble de données initial avec des dates et des montants, envoyé à une table appelée Transactions.
Premier script de chargement
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
id
-
date
-
amount
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
Deuxième script de chargement
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
-
Un deuxième ensemble de données avec des champs identiques est envoyé à une table appelée Sales.
Sales:
LOAD
*
Inline [
id, date, amount
8, 10/01/2018, 164.27
9, 10/03/2018, 384.00
10, 10/06/2018, 25.82
11, 10/09/2018, 312.00
12, 10/15/2018, 4.56
13, 10/16/2018, 90.24
14, 10/18/2018, 19.32
];
Résultats
Chargez les données et accédez à la table.
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
8 | 10/01/2018 | 164.27 |
9 | 10/03/2018 | 384.00 |
10 | 10/06/2018 | 25.82 |
11 | 10/09/2018 | 312.00 |
12 | 10/15/2018 | 4.56 |
13 | 10/16/2018 | 90.24 |
14 | 10/18/2018 | 19.32 |
Lors de l'exécution du script, la table Sales est implicitement concaténée à la table Transactions existante en raison du fait que les deux ensembles de données partage un nombre identique de champs portant des noms de champ identiques. Cela se produit, même si la balise de nom de la deuxième table tente de nommer l'ensemble de résultats ‘Sales’.
Vous pouvez voir que l'ensemble de données Sales est implicitement concaténé en consultant le journal Progression du chargement de données.
Exemple 2 – scénario de cas d'usage
Vue d'ensemble
Dans ce scénario de cas d'usage, vous avez :
-
Un ensemble de données de transactions avec :
-
id
-
date
-
montant (en GBP)
-
-
Une table de devises avec :
-
taux de conversion d'USD en GBP
-
-
Un deuxième ensemble de données de transactions avec :
-
id
-
date
-
montant (en USD)
-
Vous allez charger cinq scripts dans l'ordre séquentiel.
-
Le premier script de chargement contient un ensemble de données initial avec des dates et des montants en GBP, envoyé à une table appelée Transactions.
-
Le deuxième script contient les éléments suivants :
-
Un deuxième ensemble de données avec des dates et des montants en USD, envoyé à une table appelée Transactions_in_USD.
-
Le préfixe noconcatenate, placé avant l'instruction LOAD de l'ensemble de données Transactions_in_USD, pour empêcher la concaténation implicite.
-
-
Le troisième script de chargement contient le préfixe join, utilisé pour créer un taux de change de devises entre les devises GBP et USD dans la table Transactions_in_USD.
-
Le quatrième script de chargement contient le préfixe concatenate, qui ajoutera la valeur Transactions_in_USD à la table Transactions initiale.
-
Le cinquième script de chargement contient l'instruction drop table, qui supprimera la table Transactions_in_USD dont les données ont été concaténées à la table Transactions.
Premier script de chargement
Transactions:
Load * Inline [
id, date, amount
1, 12/30/2018, 23.56
2, 12/07/2018, 556.31
3, 12/16/2018, 5.75
4, 12/22/2018, 125.00
5, 12/22/2018, 484.21
6, 12/22/2018, 59.18
7, 12/23/2018, 177.42
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
- id
- date
- amount
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
Le tableau montre l'ensemble de données initial avec les montants en GDP.
Deuxième script de chargement
Transactions_in_USD:
NoConcatenate
Load * Inline [
id, date, amount
8, 01/01/2019, 164.27
9, 01/03/2019, 384.00
10, 01/06/2019, 25.82
11, 01/09/2019, 312.00
12, 01/15/2019, 4.56
13, 01/16/2019, 90.24
14, 01/18/2019, 19.32
];
Résultats
Chargez les données et accédez à la table.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 19.32 |
Vous verrez que le deuxième ensemble de données de la table Transactions_in_USD a été ajouté.
Troisième script de chargement
Ce script de chargement joint un taux de change de devises de la devise USD en devise GDP dans la table Transactions_in_USD.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
Résultats
Chargez les données et accédez au visionneur de modèle de données. Sélectionnez la table Transactions_in_USD et vous verrez que chaque enregistrement existant comporte une valeur de champ 'rate' égale à 0,7.
Quatrième script de données
Via l'instruction resident load, ce script de chargement concatène la table Transactions_in_USD à la table Transactions après avoir converti les montants en USD.
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
Résultats
Chargez les données et accédez à la table. Vous verrez de nouvelles entrées avec des montants en GBP dans les lignes huit à quatorze.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 268.80 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 18.074 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 218.40 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 3.192 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 63.168 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 13.524 |
14 | 01/18/2019 | 19.32 |
Cinquième script de chargement
Ce script de chargement abandonne les entrées en double du tableau de résultats du quatrième script de chargement, laissant uniquement les entrées avec des montants en GBP.
drop tables Transactions_in_USD;
Résultats
Chargez les données et accédez à la table.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
9 | 01/03/2019 | 268.80 |
10 | 01/06/2019 | 18.074 |
11 | 01/09/2019 | 218.40 |
12 | 01/15/2019 | 3.192 |
13 | 01/16/2019 | 63.168 |
14 | 01/18/2019 | 13.524 |
Après le chargement du cinquième script de chargement, le tableau de résultats montre l'ensemble des quatorze transactions qui existaient dans les deux ensembles de données de transactions ; en revanche, les montants des transactions 8 à 14 ont été convertis en GBP.
Si on supprime le préfixe NoConcatenate utilisé avant Transactions_in_USD dans le deuxième script de chargement, le script échoue avec l'erreur :“Table 'Transactions_in_USD' not found” (Table introuvable). Cela est dû au fait que la table Transactions_in_USD aurait été automatiquement concaténée à la table Transactions originale.