Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Senhores, boa tarde!
Quero criar faixa horária e ñ sei como fazer.
tenho duas tabelas: uma com carros e outras com tempo de viagem. Quero criar uma expressão onde retorne a media do tempo de viagem não pelo horário que o carro saiu e sim por uma faixa horária. exemplo: os carros que saiu entre 06:00 e 06:30, retorne a media de tempo de viagem dessa faixa.
Alguem pode me ajudar?
Olá faça assim:
Dados:
LOAD DATA, [Saida do carro], [Tempo de viagem], Interval(Subfield(Classe_TMP,'<',1),'hh:mm') & ' - '& Interval(Subfield(Classe_TMP,'<',3),'hh:mm') AS Classe;
LOAD *, Class([Saida do carro],0.0208333333333) AS Classe_TMP INLINE [
DATA, Saida do carro, Tempo de viagem
01/01/14, 05:00, 01:30
01/01/14, 05:20, 01:40
01/01/14, 05:30, 01:35
01/01/14, 05:50, 02:00
02/01/14, 05:00, 01:00
02/01/14, 05:20, 01:05
02/01/14, 05:30, 01:40
02/01/14, 05:50, 01:30
];
Resultado.
05:00 - 05:30 | 01:18:45 |
05:30 - 06:00 | 01:41:15 |
Qlikfique-se.
Tonial
Regimilson, verifique a função Class(), ela vai fazer exatamente o que precisa.
Exemplo de utilização:
class( var,10 ) com var = 23 retorna '20<=x<30'
class( var,5,'valor' ) com var = 23 retorna '20<= valor <25'
class( var,10,'x',5 ) com var = 23 retorna '15<=x<25'
Lembrando que o Class deve ser passado na dimensão do gráfico e na expressão você faz a média do tempo.
Caso queira melhor performance, então deve-se fazer essa faixa diretamente no script, utilizando-se de ifs.
Acredito que a função Class() pode te ajudar, se possível post um exemplo da sua base para que possamos auxiliar melhor:
Exemplo da função Class:
class( var,10 ) com var = 23 retorna '20<=x<30'
Abs.
DATA | Saida do carro | Tempo de viagem | media tempo viagem |
01/01/14 | 05:00 | 01:30 | 01:35 |
01/01/14 | 05:20 | 01:40 | |
01/01/14 | 05:30 | 01:35 | |
01/01/14 | 05:50 | 02:00 | 01:28 |
02/01/14 | 05:00 | 01:00 | |
02/01/14 | 05:20 | 01:05 | |
02/01/14 | 05:30 | 01:40 | |
02/01/14 | 05:50 | 01:30 |
Segue exemplo acima
sendo que essa faixa seria de 30 minutos.
EXEMPLO:
(dimensão) 05:00 - 05:30 (expressão) :media tempo viagem 01:35
(dimensão) 05:30 - 06:00 (expressão) :media tempo viagem 01:28
Olá faça assim:
Dados:
LOAD DATA, [Saida do carro], [Tempo de viagem], Interval(Subfield(Classe_TMP,'<',1),'hh:mm') & ' - '& Interval(Subfield(Classe_TMP,'<',3),'hh:mm') AS Classe;
LOAD *, Class([Saida do carro],0.0208333333333) AS Classe_TMP INLINE [
DATA, Saida do carro, Tempo de viagem
01/01/14, 05:00, 01:30
01/01/14, 05:20, 01:40
01/01/14, 05:30, 01:35
01/01/14, 05:50, 02:00
02/01/14, 05:00, 01:00
02/01/14, 05:20, 01:05
02/01/14, 05:30, 01:40
02/01/14, 05:50, 01:30
];
Resultado.
05:00 - 05:30 | 01:18:45 |
05:30 - 06:00 | 01:41:15 |
Qlikfique-se.
Tonial
Isso mesmo que eu quero Fernando, como estou usando planilha do excel, fiz a seguinte adaptação:
LOAD Data,
SDO.Carro,
Saida,
Tempo_Real_Hr,
Interval(Subfield(Classe_TMP,'<',1),'hh:mm') & ' - '& Interval(Subfield(Classe_TMP,'<',3),'hh:mm') AS Classe;
LOAD *, Class([Saida],0.0208333333333) AS Classe_TMP
FROM
(biff, embedded labels, table is [Plan1$]);
Porém quando fiz a expressão da média o resultado não bate correto.
A media do tempo de viagem não está correta pq ele está calculando as horas que 1 só carro saiu.
Na verdade eu quero que calcule a media pela faixa de 30 minutos que vários carros possa ter saído.
Entendeu?
Muito estranho, para mim esta correto.
Veja arquivo anexo.
DATA | Classe | Interval(Avg([Tempo de viagem])) |
---|---|---|
01:30:00 | ||
01/01/14 | 05:00 - 05:30 | 01:35:00 |
01/01/14 | 05:30 - 06:00 | 01:47:30 |
02/01/14 | 05:00 - 05:30 | 01:02:30 |
02/01/14 | 05:30 - 06:00 | 01:35:00 |
Regimilson,
O que o mestre Fernando Tonial fez foi criar as faixas de horário para te possibilitar o cálculo da média por estas faixas, independente do carro e de outras dimensões.
O cálculo só será feito por carro se você adicionar a dimensão carro no gráfico.
Talvez você esteja tendo uma interpretação diferente para este cálculo, pois percebi que você apresentou dois resultados (1:35 e 1:28) que não consegui identificar como chegou a eles.
O correto seria:
05:00 - 05:30 | 05:30 - 06:00 | |||
05:00 | 01:30 | 05:30 | 01:35 | |
05:20 | 01:40 | 05:50 | 02:00 | |
05:00 | 01:00 | 05:30 | 01:40 | |
05:20 | 01:05 | 05:50 | 01:30 | |
média | 01:18 | média | 01:41 |
Para testar, crie um gráfico usando apenas a faixa como dimensão e avg([campo do tempo de viagem]) como expressão.
Abs,
Felipe
Parabéns!! A resposta está corretíssima, eu que tinha vacilado.
Meu nobre, mil perdões! Pois estou começando agora - bem no início mesmo.
Se não for abuso, poderia fazer com faixa de 20,30, 60 minutos? Sendo assim posso por a dimensão em grupo e avançar de acordo a faixa escolhida.