Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
luizclaudio
Creator
Creator

Criar nova tabela a partir de combinação de valores

Bom dia

Preciso criar uma tabela onde são gerados valores que são combinações de registros carregados de uma planilha no excel.

Tenho vários registros com uma determinada data e a leitura desses deverá gerar uma série de novas informações que preciso carregar em outra tabela.

Por exemplo: tenho 5 registros com uma mesma data. isso vai gerar 10 combinações entre os valores lidos na tabela principal.

Alguém sabe me dizer como fazer isso no script?

Grato

Labels (1)
19 Replies
Anonymous
Not applicable

Seguindo essa mesma lógica, falta vc criar um FOR onde vc consiga buscar uma data por vez , fazer esse processo que eu passei e depois concatenar tudo.

Qualquer dúvida posta ai.

luizclaudio
Creator
Creator
Author

Bom dia

Já consegui avançar um pouco

A dica sobre o TRACE foi ótima... O problema agora está na string da equipe...

Na visualização ela aparece certinha, mas ao carregar na tabela aparecem datas incorretas e um valor negativo.

E nas datas que tenho na tabela original aparece apenas um traço (hífen)...

Creio que o erro está neste trecho

tab_equipe:

  load distinct

    $(equipe) as Equipe,

  $(Dia_Escala) as Dia 

Resident Resultados;

Abaixo está a rotina completa....

for vRow = 0 to NoOfRows('Resultados')-1

LET vDia = Peek('Dia', $(vRow), 'Resultados');

LET Dia_Escala = vDia;

LET vHorário = Peek('Horário', $(vRow), 'Resultados');

  do while N <= 4

  LET vDia = Peek('Dia', $(vRow)+N, 'Resultados');

  LET vFuncionario = Peek('Funcionario', $(vRow)+N, 'Resultados');

  if N = 0 then

   LET equipe = vFuncionario;

  ELSE

   LET equipe = equipe&'-'&vFuncionario;

  endif

  

  N = N + 1;

  loop

  LET N = 0;

    LET vRow = vRow + 4;

TRACE $(equipe);

   

tab_equipe:

  load distinct

    $(equipe) as Equipe,

  $(Dia_Escala) as Dia 

Resident Resultados;

Next

Anonymous
Not applicable

Cara, ali em :

LET equipe = equipe&'-'&vFuncionario;

troca esse '-' , ou use um SET... porque ele deve estar fazendo um calculo tipo  1-2 = -1.

E das datas deve ser alguma questão de formato, eu acho.


Anonymous
Not applicable

o trace ajuda bastante a entender o processo, melhor que um debug rsrs... Bota um "trace $(Dia_Escala)" pra ver como esta vindo tbm

Anonymous
Not applicable

e não entendi também essa parte:

LET vRow = vRow + 4;

acho que não tem necessidade dessa linha (o FOR já faz um incremento automático, diferente do while que vc coloca n= n+1)

luizclaudio
Creator
Creator
Author

O problema está mesmo relacionado a isso...

Ele está fazendo cálculo ao invés de concatenar...

A variável comb está definida como string. Para garantir coloquei a seguinte linha:

if N = 0 then
  LET comb = Text(vFuncionario);
ELSE
  LET comb = comb&'/'&Text(vFuncionario);
endif

Mas mesmo assim, ainda faz cálculo e com a barra '/' acaba gerando número exponencial.

Anonymous
Not applicable

use essa '|'

e ao invés de "LET comb = ..." use "SET comb = .."

colocou pra rodar o exemplo que passei? ele funciona certinho.

luizclaudio
Creator
Creator
Author

Rodrigo

Usar o SET não vai funcionar, pois ele armazena a "expressão" e não o valor...

Utilizei o LET e com a barra vertical funciona a concatenação dos dados, mas passou a dar o erro abaixo.

Alguma idéia?

Erro de sintaxe, cláusula FROM faltando ou colocada na posição errada:

tab_terno:

load distinct

  10|75|81|31|72 as Comb,

  02/01/2015 as Dia 

Resident Resultados

tab_terno:

load distinct

  10|75|81|31|72 as Comb,

  02/01/2015 as Dia 

Resident Resultados

Em tempo: ainda não usei a sua rotina, pois fiz um teste e não traz o que preciso...

Anonymous
Not applicable

Se usar assim funciona:

SET comb = $(comb)&'|'&$(vFuncionario) ;

não precisa usar a função text() , e quanto ao erro no load da tabela traga a variável entre aspas simples assim:

load distinct

  '$(comb)' as Comb,

  '$(Dia_Escala)' as Dia

Resident Resultados

luizclaudio
Creator
Creator
Author

Valeu Rodrigo

Agora funcionou... mas com uma pequena alteração

Em vez de:

SET comb = $(comb)&'|'&$(vFuncionario) ;

Ficou:

SET comb = $(comb)|$(vFuncionario) ;


Um grande abraço e obrigado