NoConcatenate
O prefixo NoConcatenate força duas tabelas carregadas com conjuntos de campos idênticos a serem tratadas como tabelas internas à parte, quando do contrário seriam concatenadas automaticamente.
Sintaxe:
NoConcatenate( loadstatement | selectstatement )
Por padrão, se for carregada uma tabela que contenha um número idêntico de campos e nomes de campo correspondentes a uma tabela carregada anteriormente no script, o Qlik Sense concatenará automaticamente essas duas tabelas. Isso acontecerá mesmo que a segunda tabela tenha um nome diferente.
No entanto, se o prefixo do script NoConcatenate for incluído antes da instrução de carregamento ou da instrução de seleção da segunda tabela, essas duas tabelas serão carregadas separadamente.
Um caso de uso típico de NoConcatenate é quando você pode precisar criar uma cópia temporária de uma tabela para realizar algumas transformações temporárias nessa cópia, mantendo uma cópia dos dados originais. NoConcatenate garante que você possa fazer essa cópia sem adicioná-la implicitamente de volta à tabela de origem.
Configurações regionais
A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução SET DateFormat no seu script de carregamento de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos.
As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor em que o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Sense. O Qlik Sense será exibido no mesmo idioma do navegador que você está usando.
Exemplo | Resultado |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
Uma tabela com A e B como medidas é carregada. Uma segunda tabela com os mesmos campos é carregada separadamente usando a variável NoConcatenate. |
Exemplo 1: Concatenação implícita
Visão geral
Neste exemplo, você adicionará dois scripts de carregamento em ordem sequencial.
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
Um conjunto de dados inicial com datas e valores que é enviado para uma tabela denominada Transactions.
Primeiro script de carregamento
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
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
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 |
Segundo script de carregamento
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
Um segundo conjunto de dados com campos idênticos é enviado para uma tabela denominada 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
];
Resultados
Carregue os dados e vá até a tabela.
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 |
Quando o script é executado, a tabela Sales é implicitamente concatenada na tabela Transactions existente pelo fato de os dois conjuntos de dados compartilharem um número idêntico de campos, com nomes de campo idênticos. Isso acontece apesar de a segunda tag de nome da tabela tentar nomear o conjunto de resultados ‘Sales’.
Examinando o registro de Progresso do carregamento de dados, é possível ver que o conjunto de dados de vendas está implicitamente concatenado.
Exemplo 2: Cenário de caso de uso
Visão geral
Nesse cenário de caso de uso, você tem:
-
Um conjunto de dados de transações com:
-
id
-
date
-
amount (em GBP)
-
-
Uma tabela de moedas com:
-
Taxas de conversão de USD para GBP
-
-
Um segundo conjunto de dados de transações com:
-
id
-
date
-
amount (em USD)
-
Você carregará cinco scripts em ordem sequencial.
-
O primeiro script de carregamento contém um conjunto de dados inicial com datas e valores em GBP que é enviado para uma tabela denominada Transactions.
-
O segundo script de carregamento contém:
-
Um segundo conjunto de dados com datas e valores em USD que é enviado para uma tabela denominada Transactions_in_USD.
-
O prefixo noconcatenate que é colocado antes da instrução de carregamento do conjunto de dados Transactions_in_USD para evitar a concatenação implícita.
-
-
O terceiro script de carregamento contém o prefixo join que será usado para criar uma taxa de câmbio entre GBP e USD na tabela Transactions_in_USD.
-
O quarto script de carregamento contém o prefixo concatenate que adicionará Transactions_in_USD à tabela inicial Transactions.
-
O quinto script de carregamento contém a instrução drop table que removerá a tabela Transactions_in_USD cujos dados foram concatenados à tabela Transactions.
Primeiro script de carregamento
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
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
- 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 |
A tabela mostra o conjunto de dados inicial com valores em GBP.
Segundo script de carregamento
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
];
Resultados
Carregue os dados e vá até a tabela.
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 |
Você verá que o segundo conjunto de dados da tabela Transactions_in_USD foi adicionado.
Terceiro script de carregamento
Esse script de carregamento une uma taxa de câmbio de USD para GBP à tabela Transactions_in_USD.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
Resultados
Carregue os dados e acesse o Visualizador do modelo de dados. Selecione a tabela Transactions_in_USD, e você verá que cada registro existente tem um valor de campo de “rate” de 0,7.
Quarto script de carregamento
Usando carregamento residente, esse script de carregamento concatenará a tabela Transactions_in_USD com a tabela Transactions depois de converter os valores em USD.
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
Resultados
Carregue os dados e vá até a tabela. Você verá novas entradas com valores em GBP das linhas de oito a 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 |
Quinto script de carregamento
Esse script de carregamento eliminará as entradas duplicadas da tabela de resultados do quarto script de carregamento, deixando apenas entradas com valores em GBP.
drop tables Transactions_in_USD;
Resultados
Carregue os dados e vá até a tabela.
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 |
Após o carregamento do quinto script de carregamento, a tabela de resultados mostra todas as quatorze transações que existiam em ambos os conjuntos de dados de transações. No entanto, as transações de 8 a 14 tiveram seus valores convertidos em GBP.
Se removermos o prefixo NoConcatenate usado antes de Transactions_in_USD no segundo script de carregamento, o script falhará com o erro: “Tabela Transactions_in_USD não encontrada”. Isso ocorre porque a tabela Transactions_in_USD teria sido concatenada automaticamente com a tabela Transactions original.