Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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.
Oliveira
Você chegou a analisar o post que te enviei? Lá tem a solução para o que você está procurando.
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(dtinicial) as 'dtimonit',
year(dtinicial) as '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;
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;
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.
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 AutoGenerate vMAxDate - vMinDate;
Monitoramento:
NoConcatenate
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,
If(IsNull(dtinicialmonit ), Peek(dtinicialmonit ), dtinicialmonit ) As dtinicialmonit
Resident tempMonitoramento
Order By dtinicialmonit ;
Drop table MinMaxDate, tempMonitoramento;
Troque vMAxDate por vMaxDate
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%.
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