Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
kettyterra
Creator
Creator

Criar variavel - script

Bom dia, Pessoa!

Estou com a seguinte situação:

Estou trabalhando com duas Tabelas:

STF - Planos Preventivos

ST9 - Bens

Eu carreguei elas e usei um left join entre ambas. ok.

Na STF eu vejo quais planos preventivos estão cadastrados para cada bem da minha ST9. Estes Planos podem assumir status de ATRASADO OU NORMAL, de acordo com a formula:

=IF((MAX(STF_Cont.Manut))+STF_Incr.Manut. < MAX([Horimetro C]), 'Atrasada', '-')

Até aqui, tudo bem. Eu montei uma tabela que me mostra o status para cada plano, e ficou assim: MIC3775 - Conexão de Área de Trabalho Remota.jpg

O que eu quero? Duas coisas!

- Na tabela que criei acima, quero mostrar apenas os Planos com status de atrasado. Tentei usar a sintaxe:

Count({$<[STF_Mant.Ativa]={'S'}, STF_Cont.Manut+STF_Incr.Manut.={}>} distinct Planos_Preventivos_Manut) .

.. Mas não deu certo não.

- Quero criar um gráfico de pizza que me mostre por bem quantos planos estão atrasados. Basicamente é um Count com a condição para Status = Atrasado

Eu pensei em criar dentro do script a variavel que depois eu possa selecionar Atrasada/ok.. Mas eu nao sei bem como funciona isso.

Podem me ajudar?

Obrigada

Labels (2)
1 Solution

Accepted Solutions
joao_sp_campina
Creator II
Creator II

Ketty,

Se não está funcionando o filtro no set analysis. Tente fazer o seguinte:

Nas suas dimensões coloque um if(Status = 'Atrasada', codigo,''). Depois marque a opção 'ocultar valores nulos'.

Veja se funciona.

João Carlos Ferreira.

View solution in original post

20 Replies
paulovendruscol
Creator
Creator

Ketty,

Inclui o filtro por Status no seu Set Analysis, exemplo:

Sum({$< STATUS = {'Atrasada'}>} VALOR)

kettyterra
Creator
Creator
Author

Paulo,

Acontece que o status ele nao existe a variavel..

Eu crio atraves da expressao: =IF((MAX(STF_Cont.Manut))+STF_Incr.Manut. < MAX([Horimetro C]), 'Atrasada', '-')

Como eu faço para criar como se fosse uma dimensao..

paulovendruscol
Creator
Creator

Ketty,

Cria o campo Status no seu script e depois faça o filtro no Set Analysis

kettyterra
Creator
Creator
Author

Como eu crio no script?

paulovendruscol
Creator
Creator

Ketty,

Faça um teste:

Crie a seguinte expressão (no seu objeto de tabela):

IF(IF((MAX(STF_Cont.Manut))+STF_Incr.Manut. < MAX([Horimetro C]), 'Atrasada', '-')='Atrasada','Atrasada')

Se possível disponibilize um QVW de exemplo...

Exemplo de campo Status no script:

Tabela1:

LOAD * INLINE [

    Plano, mes, VOLUME, STF_Cont.Manut, STF_Incr.Manut., Horimetro C

    Um, 01, 12, 1, 251, 1756

    Dois, 02, 14, 1, 501, 1756

    Três, 03, 15, 1, 1001, 1756

    Quatro, 04, 3, 1, 2001, 1756

    Cinco, 05, 4, 1, 251, 1756

    Seis, 06, 5, 1, 7, 1756

];

Tabela2:

LOAD

Plano,

//MAX(STF_Cont.Manut+STF_Incr.Manut.) as MaxManut,

//MAX([Horimetro C]) as MaxHorimetro,

IF((MAX(STF_Cont.Manut))+STF_Incr.Manut. < MAX([Horimetro C]), 'Atrasada', '-') as STATUS

Resident Tabela1

Group By Plano,STF_Incr.Manut.,STF_Cont.Manut,[Horimetro C];

kettyterra
Creator
Creator
Author

Paulo,

Não deu certo!

Consegui criar o campo STATUS, porém acontece o seguinte: !

Para cada BEM ele criou um status Atrasada e OK ..

Mas não é isso que eu quero.. eu quero que avalie a minha condição..

Para cada bem, eu tenho 4 de lubrificação e 4 mecanicas.

Sendo, 250H, 500H,1000H e 200h de cada tipo.

Ai tenho um campo que me mostra o horimetro de cada equipamento.(t9_acumulado)

Ai funciona assim:

Na minha tabela de planos(STF) eu tenho os 8 planos preventivo e qual foi o horimetro da ultima manutenação. 

ai para eu saber se essa manutenação esta atrasada, eu preciso fazer essa formula que criamos o status,..

Quando eu crie o status na expressao, eu consigo visualizar se esta atrasada ou nao..

Porem, eu quero filtrar apenas as atrasadas.. Mas nao tenho a dimensao para filtrar..

Estou enviando o QVD e os arquivos para leitura. Se puder me ajudar, agradeço.

Obrigada

joao_sp_campina
Creator II
Creator II

Ketty,

Faltou você associar a tabela1 com a tabela2 onde está a condição de Status.

Feito isso você pode na própria dimensão do gráfico realizar uma condição com if para mostrar só Status ='ATRASADA'.

Mais ou menos assim:

if(Status = 'ATRASADA', suadimensao,'')

e marca para ocultar os nulos.

João Carlos.

paulovendruscol
Creator
Creator

Ketty,

Existem outras fontes de dados que você não enviou (CTT_FULL.qvd,Filiais Protheus.xls e etc). Mas faz os seguintes ajustes no seu script:

1 - Incluir o campo CHAVE_DESCRIÇÃO_ZB7 na Tabela 2 (necessário para fazer o relacionamento com a Tabela1:

Tabela2:

Load

CHAVE_DESCRIÇÃO_ZB7,

IF((MAX(STF_Cont.Manut))+STF_Incr.Manut. < MAX(T9_Cont.Acumul.), 'Atrasada', '-') as STATUSMANUT 

Resident Tabela1 

Group By  Planos_Preventivos_Manut,STF_Incr.Manut.,STF_Cont.Manut,T9_Cont.Acumul.;

2 - Depois utilize o campo STATUSMANUT no set analysis, exemplo:

sum({$<[STATUSMANUT] ={'Atrasada'}>} VALOR)

vinafidalgo
Partner - Creator
Partner - Creator

Por favor informe se as soluções apontadas posteriormente atenderam à sua necessidade.

Caso positivo, marque a resposta como correta para que o tópico possa ser encerrado.