NoConcatenate
Med NoConcatenate-prefixet tvingas skriptet att behandla två inlästa tabeller med identiska fält som två separata interna tabeller. Annars skulle tabellerna konkateneras automatiskt.
Syntax:
NoConcatenate( loadstatement | selectstatement )
Om en tabell är laddad som innehåller ett identiskt antal fält och matchande fältnamn som en tabell som laddats tidigare i skriptet kommer Qlik Sense som standard att autokonkatenera de här två tabellerna. Detta kommer att ske även om den andra tabellen har ett annat namn.
Men om skriptprefixet NoConcatenate anges före load-satsen eller select-satsen i den andra tabellen kommer dessa två tabeller att laddas separat.
Ett typiskt användarfall för NoConcatenate är när du behöver skapa en tillfällig kopia av en tabell för att utföra någon tillfällig transformering på den kopian, samtidigt som du behåller eh en kopia av ursprungliga data. NoConcatenate säkerställer att du kan göra den kopian utan att implicit lägga till den tillbaka på källtabellen.
Lokala inställningar
Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i SET DateFormat-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.
Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.
Exempel | Resultat |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
En tabell med A och B som mått laddas.. En andra tabell med samma fält laddas separat genom att använda NoConcatenate-variabeln. |
Exempel 1 – implicit konkatenering
Översikt
I det här exemplet kommer du att lägga till två laddningsskript i ordningsföljd.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En initial datauppsättning med datum och belopp som skickas till en tabell som heter Transactions.
Laddningsskript 1
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
-
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 |
Laddningsskript 2
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
-
En andra datauppsättning med identiska fält skickas till en tabell som heter 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
];
Resultat
Ladda data och gå till tabellen.
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 |
När skriptet körs konkateneras tabellen Sales implicit till den befintliga Transactions-tabellen på grund av att de två datauppsättningarna delar ett identiskt antal fält, med identiska fältnamn. Detta sker trots att den andra tabellens namntagg försöker ge den resulterande uppsättningen namnet ‘Sales’.
Du kan se att datauppsättningen över försäljningen konkateneras implicit genom att titta på loggen över dataladdningsförloppet .
Exempel 2 – scenario med användarfall
Översikt
I det här användarfallet har du:
-
Eatauppsättning med transaktioner med:
-
id
-
date
-
belopp (i GBP)
-
-
En valutatabell med:
-
Valutakurser för USD till GBP
-
-
Ytterligare en datauppsättning med transaktioner med:
-
id
-
date
-
belopp (i USD)
-
Du kommer att ladda fem skript i ordningsföljd.
-
Det första laddningsskriptet innehåller en initial datauppsättning med datum och belopp i GBP som skickas till en tabell som heter Transactions.
-
Det andra laddningsskriptet innehåller:
-
Ytterligare en datauppsättning med datum och belopp i USD som skickas till en tabell som heter Transactions_in_USD.
-
Prefixet noconcatenate som är placerat före load-satsen i datauppsättningen Transactions_in_USD så att implicit konkatenering förhindras.
-
-
Det tredje laddningsskriptet innehåller prefixet join som kommer att användas för att skapa en valutakurs mellan GBP och USD i tabellen Transactions_in_USD.
-
Det fjärde laddningsskriptet innehåller prefixet concatenate som kommer att lägga till Transactions_in_USD i den initiala tabellen Transactions.
-
Det femte laddningsskriptet innehåller prefixet drop table som kommer att ta bort Transactions_in_USD i den initiala tabellen Transactions.
Laddningsskript 1
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
- 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 |
Tabellen visar den initiala datauppsättningen med belopp i GBP.
Laddningsskript 2
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
];
Resultat
Ladda data och gå till tabellen.
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 |
Du kommer att se att den andra datauppsättningen från Transactions_in_USD-tabellen har lagts till.
Laddningsskript 3
Det här laddningsskriptet kopplar en valutakurs från USD till GBP till Transactions_in_USD-tabellen.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
Resultat
Ladda data och gå till datamodellvyn. Välj Transactions_in_USD-tabellen så kommer du att se att alla befintliga poster har ett "kurs"-värde på 0,7.
Laddningsskript 4
Genom att använda resident load kommer det här laddningsskriptet att konkatenera Transactions_in_USD-tabellen till Transactions-tabellen efter att beloppen har konverterats till USD.
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
Resultat
Ladda data och gå till tabellen. Du kommer att se nya poster med belopp i GBP från raderna åtta till fjorton.
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 |
Laddningsskript 5
Det här laddningsskriptet kommer att släppa dubblerade poster från det fjärde laddningsskriptets resultattabell. På så sätt kommer bara poster med belopp i GBP att återstå.
drop tables Transactions_in_USD;
Resultat
Ladda data och gå till tabellen.
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 |
När det femte laddningsskriptet har laddats visar resultattabellen alla fjorton transaktioner som fanns i båda datauppsättningarna med transaktioner, men beloppen i transaktionerna 8–14 har konverterats till GBP.
Om vi tar bort prefixet NoConcatenate som användes före Transactions_in_USD i det andra laddningsskriptet kommer skriptet att misslyckas och felet “Tabell "Transactions_in_USD" visas. Detta beror på att Transactions_in_USD-tabellen skulle ha autokonkatenerats till den ursprungliga Transactions-tabellen.