Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Porcentagem

Tenho uma tabela que registra as paradas existente no servidor(máquinas):

Maquina Mês   Valor (segundos)

    1            01          30                  

    1            02          20

    1            03          10

    1            05          25

   

Se observamos no mês 04 e 06 os mesmos não teve nenhuma parada, ai não existe essa informação na tabela. funcionou 100%.

Como fazer esse que ele fique dessa forma:

    1            01      30                  

    1            02       20

    1            03       10

    1            04       00

    1            05       25

    1            06       00

Quando não existir dados na tabela fique 00?

Labels (6)
1 Solution

Accepted Solutions
Marcio_Campestrini
Specialist
Specialist

Veja se atende.

Márcio Rodrigo Campestrini

View solution in original post

11 Replies
Marcio_Campestrini
Specialist
Specialist

Veja o post:

How to populate a sparsely populated field

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Márcio,

Estou tentando dessa forma:

calendarioqtd:

LOAD * INLINE [
mesmonit    , Qtd  
01           , 31
02          , 28   
03               ,   31    
04               ,   30
05               ,   31    
06                  , 30    
07                  , 31    
08               ,   31    
09                  , 30    
10                  , 31    
11                  , 30    
12                  , 31    


]
;

left join
//monitoramento:

LOAD idcliente, idtiporecurso,dsNomeTipoRecurso,idrecurso,dsnomerecurso,
idrecursopai,idplugin,dsDescricaoPlugin,idgruporesponsavel,
dsNomeGrupoSolucao,dsestadossla,nrslacontratado,
dtinicial as 'dtinicialmonit' ,
date(dtinicial) as 'dtimonit',
Hour(dtinicial) & ':' & Minute(dtinicial) & ':' & Second(dtinicial) as 'horaimonit',
year(dtinicial) as 'anomonit',
Month(dtinicial) as 'mesmonit',
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
Hour(dtfinal) & ':' & Minute(dtfinal) & ':' & Second(dtfinal) as 'horafmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',
nrMinutosAteMudarGrupoSolucao,
dtUltimoAviso,
nrMinutosAteProximoAviso
FROM
[..\QVD_E\TBE_monitoramento.QVD]
(
qvd);

No load de baixo não tem o mês de março ai preciso que mostre 01,02,null,04 e 05. Esta mostrando assim 01,02,04,05.imagem.png

Marcio_Campestrini
Specialist
Specialist

Oliveira

Você chegou a analisar o post que te enviei? Lá tem a solução para o que você está procurando.

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Márcio,

Analisei mais não conseguir entender bem como adapta a minha situação. Tentei fazer +- parecido mais não funcionou. Teria como você informar aonde estou errando?

calendarioqtd:

LOAD * INLINE [
mesmonit    , Qtd  
01           , 31
02          , 28   
03               ,   31    
04               ,   30
05               ,   31    
06                  , 30    
07                  , 31    
08               ,   31    
09                  , 30    
10                  , 31    
11                  , 30    
12                  , 31    


]
;


monitoramento:

LOAD idcliente,
date(dtinicialas 'dtimonit',
year(dtinicialas 'anomonit',
Month(dtinicial) as 'mesmonit',
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',      
FROM
[..\QVD_E\TBE_monitoramento.QVD]
(
qvd);

left join (calendarioqtd)
load mesmonit Resident  monitoramento;

juncao:

NoConcatenate load If(IsNull(mesmonit),Peek(mesmonit),mesmonit) as mesmonit
Resident calendarioqtd;

Marcio_Campestrini
Specialist
Specialist

Segue a provável solução

tempMonitoramento:

LOAD idcliente, idtiporecurso,dsNomeTipoRecurso,idrecurso,dsnomerecurso,
idrecursopai,idplugin,dsDescricaoPlugin,idgruporesponsavel,
dsNomeGrupoSolucao,dsestadossla,nrslacontratado,
dtinicial as 'dtinicialmonit' ,
date(dtinicial) as 'dtimonit',
Hour(dtinicial) & ':' & Minute(dtinicial) & ':' & Second(dtinicial) as 'horaimonit',
year(dtinicial) as 'anomonit',
Month(dtinicial) as 'mesmonit',
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
Hour(dtfinal) & ':' & Minute(dtfinal) & ':' & Second(dtfinal) as 'horafmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',
nrMinutosAteMudarGrupoSolucao,
dtUltimoAviso,
nrMinutosAteProximoAviso
FROM [..\QVD_E\TBE_monitoramento.QVD] (qvd);


MinMaxDate:

Load Min(dtinicialmonit) As MinDate, Max(dtinicialmonit) As MaxDate Resident tempMonitoramento;

Let vMinDate = Peek('MinDate',-1,'MinMaxDate') - 1;

     Let vMaxDate = Peek('MaxDate',-1,'MinMaxDate')    ;

Join (tempMonitoramento)

Load Date(RecNo() + $(vMinDate)) As dtinicialmonit AudoGenerate vMAxDate - vMinDate;


Monitoramento:

NoConcatenate

Load idcliente, idtiporecurso,dsNomeTipoRecurso,idrecurso,dsnomerecurso,
idrecursopai,idplugin,dsDescricaoPlugin,idgruporesponsavel,
dsNomeGrupoSolucao,dsestadossla,nrslacontratado,
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
Hour(dtfinal) & ':' & Minute(dtfinal) & ':' & Second(dtfinal) as 'horafmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',
nrMinutosAteMudarGrupoSolucao,
dtUltimoAviso,
nrMinutosAteProximoAviso,

If(IsNull(dtinicialmonit ), Peek(dtinicialmonit ), dtinicialmonit ) As dtinicialmonit

Resident tempMonitoramento

Order By dtinicialmonit ;


Drop table MinMaxDate, tempMonitoramento;

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

Desculpe o incomodo que estou de dando. Sou inciante no QlikView.

Tentei utilizar o código que você passou, tinha algumas inconsistência que conseguir resolver, mais essa não estou encontrando aonde estou errando.

imagem1.png

tempMonitoramento:
LOAD idcliente,
idtiporecurso,
dsNomeTipoRecurso,
idrecurso,
dsnomerecurso,
idrecursopai,
idplugin,
dsDescricaoPlugin,
idgruporesponsavel,
dsNomeGrupoSolucao,
dsestadossla,
nrslacontratado,
dtinicial as 'dtinicialmonit' ,
date(dtinicialas 'dtimonit',
Hour(dtinicial) & ':' & Minute(dtinicial) & ':' & Second(dtinicial) as 'horaimonit',
year(dtinicialas 'anomonit',
Month(dtinicial) as 'mesmonit',
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
Hour(dtfinal) & ':' & Minute(dtfinal) & ':' & Second(dtfinal) as 'horafmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',      
nrMinutosAteMudarGrupoSolucao,
dtUltimoAviso,
nrMinutosAteProximoAviso
FROM [..\QVD_E\TBE_monitoramento.QVD] (qvd);


MinMaxDate:
Load Min(dtinicialmonit) As MinDate, Max(dtinicialmonit) As MaxDate Resident tempMonitoramento;
Let vMinDate = Peek('MinDate',-1,'MinMaxDate') - 1;
Let vMaxDate = Peek('MaxDate',-1,'MinMaxDate');

Join(tempMonitoramento)
Load Date(RecNo()+$(vMinDate)) As dtinicialmonit AutoGenerate vMAxDate - vMinDate;


Monitoramento:
NoConcatenate
LOAD idcliente,
idtiporecurso,
dsNomeTipoRecurso,
idrecurso,
dsnomerecurso,
idrecursopai,
idplugin,
dsDescricaoPlugin,
idgruporesponsavel,
dsNomeGrupoSolucao,
dsestadossla,
nrslacontratado,
dtinicial as 'dtinicialmonit' ,
date(dtinicialas 'dtimonit',
Hour(dtinicial) & ':' & Minute(dtinicial) & ':' & Second(dtinicial) as 'horaimonit',
year(dtinicialas 'anomonit',
Month(dtinicial) as 'mesmonit',
dtfinal as 'dtfinmonit',
date(dtfinal)    as 'dtfmonit',
Hour(dtfinal) & ':' & Minute(dtfinal) & ':' & Second(dtfinal) as 'horafmonit',
cdestado,
dsEstado,
nrsegundos,
Time(Time#(nrsegundos,'mm'), 'hh:mm:ss') as 'minutomonitoramento',      
nrMinutosAteMudarGrupoSolucao,
dtUltimoAviso,
nrMinutosAteProximoAviso,
If(IsNull(dtinicialmonit ), Peek(dtinicialmonit ), dtinicialmonit ) As dtinicialmonit
Resident tempMonitoramento
Order By dtinicialmonit ;
 
Drop table MinMaxDate, tempMonitoramento;


Marcio_Campestrini
Specialist
Specialist

Troque vMAxDate por vMaxDate

Márcio Rodrigo Campestrini
Anonymous
Not applicable
Author

O script funcionou sem erro, só não trouxe o resultado que eu estrou precisando. Irei tentar detalhar melhor a minha necessidade.

Na tabela monrecursohistorico registra quando o servidor fica indisponível. se eu executar um select no banco fica assim:

Maquina Mês Valor (segundos)

1              01       30                 

1              02       20

1              03       10

1              05       25

  

Se observamos no mês 04 e 06 os mesmos não teve nenhuma parada, assim funcionou 100%.

Existe a possibilidade que fique dessa forma no qlikview?

1 01       30                 

1 02       20

1 03       10

1 04       00

1 05       25

1 06       00

No momento da execução do scripte do Qlikview ele criar essa linha.

1 03       00

1 06       00

  O proposito e que no gráfico mostre que os mês (03 e 06) o servidor funcionou 100%.

Anonymous
Not applicable
Author

Preciso que ele fique desta forma abaixo:

Ele vai preencher o campo anomonit com 2017 a datainicialmonit com a ultima data 18/05/2017 e nsegundos com zero

Planilha.png