Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Como juntar dados texto de duas colunas ?

Bom dia Pessoal.

Não estou conseguindo colocar num gráfico os dados da tabela abaixo.

Eu levantei na equipe, quais eram as linguas que cada funcionário falava.

Agora eu preciso colocar num gráfico mostrando a quantidade de linguas faladas.

O problema é que os dados estão em duas colunas distintas e eu não sei juntar estes dados num único gráfico.

Alguém tem alguma dica ?

Antecipadamente obrigado.

                                                                                                    

FUNCIONARIOLINGUA1LINGUA2
AInglêsAlemão
BInglês
CEspanhol
DInglês
EInglêsEspanhol
FFrancês
GInglêsItaliano
HInglêsItaliano
IInglês
JUcraniano
KInglês
LInglêsEspanhol
MInglês
NMandarin
OInglês
PInglêsEspanhol
QInglês
RInglêsItaliano
18 Replies
Not applicable
Author

Fala Aderlan,

Eu utilizo desta forma por uma questão de conceito.

Sempre procuro ler somente uma vez as tabelas de origens (neste caso a tabela original) e depois sempre que precisar reutilizar as tabelas uso o resident, pois como está em memória, o acesso as informações é mais rápida. 

Neste exemplo como é pouca informação não chega a ser visível este ganho entre o " LOAD FROM " e o " LOAD RESIDENT "

Mas é uma questão de "boa prática"

Abraços

aderlanrm
Partner - Specialist
Partner - Specialist

Brunpipo, marca respostas e ajudas ai para fechar o post.

Fala Eduardo, tudo bem?

Então, é exatamente essa a minha dúvida, dois LOAD FROM com ou sem WHERE é "pior" do que um LOAD FROM + dois LOAD RESIDENT e um DROP?

Trabalhei durante um tempo com tuning de SQL (Microsoft), e esse tem vasto material e farramentas para comprovar e examinar as aplicações das "boas práticas", mas em QlikView, isso (para min) ainda está muito vago, se tiver algumas fontes que possa sitar para estudo das melhores práticas no QlikView, por favor, gosto desse asunto.

Issosorio, seria algo assim:

IDIOMAS:

LOAD FUNCIONARIO,

     LINGUA1 as LINGUA

     'Idioma 1' AS TIPO_IDIOMA

FROM BASE_DE_DADOS

WHERE NOT ISNULL(LINGUA1);

LOAD FUNCIONARIO,

     LINGUA2 as LINGUA,

     'Idioma 2' AS TIPO_IDIOMA

FROM BASE_DE_DADOS

WHERE NOT ISNULL(LINGUA2);

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Haaaa entendi, nesse caso da para fazer realmente isso, afinal o qlikview irá concatenar automaticamente ambos os load por terem o campo FUNCIONARIO iguais né.

Mas com os dados in memory, ele não carrega mais rapido usando resident? Se bem que o where já exlcuiria muitos dados, interessante isso. Ver qual dos dois é mais performático.

Not applicable
Author

Aderlan,

O Conceito aplicado não foi retirado de uma documentação específica, mas sim dos treinamentos e eventos Qlikview.

Quando você utiliza o "FROM " por exemplo, acaba sendo realizada uma I/O no disco rigido.

A utilização do RESIDENT busco o que já está em memória (cujo o acesso é bem mais rápido que o I/O no disco).

Veja esse exemplo que montei. No script a primeira aba faz de acordo com o que você falou, na segunda aba, reutilizando as informações em memória.

O arquivo de exemplo possui 300.000 registro para que pese um pouco a leitura dos dados.

Abraços

Not applicable
Author

Aderlan fiz um teste aqui com 1 milhão de registros de uma planilha excel

2min23seg - Load + From + Where

1min14seg - Resident

Trabalhando com tabela Resident, o tempo para carregar as informações caiu pela metade.Fiquei surpreso até com esse resultado.

aderlanrm
Partner - Specialist
Partner - Specialist

Fala Issosorio, e Eduardo.

Acabei de executar isso aqui com o exemplo que o Eduardo enviou, realmente os resultados são interessantes.

Primeira execução:

FROM: 30sec

Resident: 16sec

Segunda execução:

FROM: 25sec

Resident: 14sec

Ou seja, o ganho é significativo, aprendi mais uma! Apesar da maior quantidade de "passos" o resultado final representa um ganho de performance muito significativo. No SQL o I/O também é o grande vilão, no QlikView também. Rsrsrsrsr...

Valeu galera, abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Issosorio.

E se eu quisesse ao mesmo tempo juntar as colunas como o seu script fez, mas mudar a palavra 'Não' por 'Brasil' por exemplo.

Teria como ?

Obrigado.

Abraços.

Not applicable
Author

Se a palavra estiver em um campo eu faria assim

/*DADOS UTILIZANDO A RESIDENT*/

[tabela]:

LOAD Funcionarios,

     lingua,

     lingua2,

     teste

FROM

planilha2.xlsx

(ooxml, embedded labels, table is Plan1);

[tabela2]:

Load

Funcionarios,

lingua,

if(teste = 'Não','Brasil','Sim') as testea

Resident tabela;

Concatenate(tabela2)

Load

Funcionarios,

lingua2 as lingua,

if(teste = 'Não','Brasil','Sim') as teste

Resident tabela;

DROP Table tabela;

Not applicable
Author

Obrigado a todos que me ajudaram neste desafio !!

Até o próximo...

Abs.