Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
Luiz,
Ainda não ficou muito claro sua dúvida. Poderia postar um exemplo?
Abs.
Fabio Nakashigue
Desculpe Fábio... vamos lá
Tenho equipes de funcionários que variam nos grupos de trabalho.
Algo como:
Data | Funcionario |
18/08/2016 | 1 |
18/08/2016 | 2 |
18/08/2016 | 3 |
18/08/2016 | 4 |
18/08/2016 | 5 |
Data | Equipe |
18/08/2016 | 1-2-3 |
18/08/2016 | 1-2-4 |
18/08/2016 | 1-2-5 |
18/08/2016 | 1-3-4 |
18/08/2016 | 1-3-5 |
18/08/2016 | 1-4-5 |
18/08/2016 | 2-3-4 |
18/08/2016 | 2-3-5 |
18/08/2016 | 2-4-5 |
18/08/2016 | 3-4-5 |
Na primeira tabela tenho o pessoal disponível para uma determinada data. Nesse caso, 5 funcionários
Preciso gerar as combinações de equipes em outra tabela... No exemplo, são 10 combinações possíveis de equipe formada por 3 funcionários.
A primeira eu tenho uma planilha em excel.
A segunda eu preciso gerar e estou tentando fazer isso no script
Cara não consigo pensar em alguma solução nem função do próprio qlikview para o que você precisa.
Função própria do Qlik eu não achei aqui também... Eu faria da seguinte maneira:
1º - criaria 1 variável vFunc e traria o valor max de 'funcionários' (tem que ser um ID sequencial conforme o exemplo que vc postou) = 5,
2º - faria 3 FORs , criando 3 variáveis (a,b,c) , um FOR dentro do outro (concatenando no final ) criando uma matriz.
3º - criaria condicionais no FOR do $(b) e $(c) , para evitar repetições , b > a (no FOR do $(b) ) e c> b (no FOR do $(c))
4º - existe uma função comb(funcionarios,3) = 10 , usaria essa função para fazer uma validação comparando com o número de registros gerados.
* Isso considerando esse exemplo que vc postou, provavelmente são mais datas, então considere 4 FORs, sendo o primeiro para as datas...Fazendo um load de cada data por vez,criando vFunc com o ID max de funcionários e então os 3 FORs...
Bom dia Rodrigo
Obrigado pela ajuda, mas minha dúvida é onde incluir isso no script, pois terei que ler vários registros (enquanto for a mesma data) para ter os funcionários disponíveis naquele dia. Onde encaixo a rotina? Abaixo está a carga da tabela de escala.
LOAD Dia,
weekday(Semana) as Semana,
Funcionario
FROM
(ooxml, embedded labels, table is Resultados)
Luiz, esse código você precisa criar após a leitura da definição das escalas
Bom dia
Tentei com o seguinte código:
LOAD Dia,
weekday(Semana) as Semana,
Funcionario
FROM
(ooxml, embedded labels, table is Resultados)
for vRow = 1 to NoOfRows('Resultados')
Dia_Escala = Dia;
Equipe = '';
do while Dia = Dia_Escala
do while N <= 5
Equipe= Equipe & Funcionario;
N = N + 1;
loop
loop
n = 1;
next
O problema é que o campo Funcionario não traz valor...
O que está errado?
Luiz, você precisa colocar o conteúdo do campo de sua tabela dentro das variáveis, por exemplo:
Dia_Escala = Dia;
O conteúdo Dia não possui nenhuma informação, pois você não declarou nenhum valor.
Um exemplo de como seria:
TabelaData:
LOAD
Dia
From TabelaData.qvd (qvd);
for x = 0 to NoOfRows('TabelaData')-1
LET vDia = Peek('Dia', $(x), 'TabelaData');
TRACE O conteúdo da variável vDia é: $(vDia);
NEXT x;
tmp:
load
Date#(Data) as Data,
Funcionario
inline [
Data, Funcionario
18/08/2016, 1
18/08/2016, 2
18/08/2016, 3
18/08/2016, 4
18/08/2016, 5];
let vFunc = NoOfRows('tmp');
for a = 1 to $(vFunc)
for b = $(a) + 1 to $(vFunc)
for c = $(b) + 1 to $(vFunc)
set vComb = $(a)&'|'&$(b)&'|'&$(c);
trace $(vComb);
tab_comb:
load distinct
$(vComb) as Comb ,
Data
resident tmp;
next
next
next