Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Pessoal.
Preciso calcular o saldo na expressão do gráfico a regra é a seguinte:
Saldo:
Quantidade de defeito com data de entrada <=data selecionada
E
Quantidade de defeitos com data de baixa > data selecionada
+
Quantidade de defeitos com data de entrada <=data selecionada
E
Quantidade de defeitos com data de baixa > NULL
Como posso resolver? Já fiz algumas tentantivas, mas sem sucesso.
Período > 01/01/2015
Cristiane
Não entendi muito bem a sua questão, pois aparenta estar comparando quantidade com data. Pode melhorar (inclusive com exemplos) a sua dúvida?
Minha primeira sugestão é na carga de dados tratar o NULL (force um valor qualquer, por exemplo 0).
tem um modelo com dados reduzidos (e dependendo embaralhados) para postar?
Cristiane,
Conforme falamos via Skype, faça as validações necessárias e se a solução sugerida resolveu seu caso, feche a thread e compartilhe com a comunidade a expressão que utilizamos.
Abs e Sucesso!!
Fiz o set analisys mas não funcionou essa parte da expressão onde preciso mostrar todos os ANOS e SEMANAS menores que o ANO E SEMANA selecionados.
Veja:
=Count(Distinct {< Evoluc_Defeitos.AnoSemana_Defeito={"<=$(=date#(Evoluc_Defeitos.Ano_Defeito&Evoluc_Defeitos.Semana_Defeito))"} >} Evoluc_Defeitos.ID_Entrada )
Script:
LOAD
Year(DF_DT) AS Ano_Defeito,
Month(DF_DT) AS Mes_Defeito,
Week(DF_DT) AS Semana_Defeito,
date#(Year(DF_DT)&Week(DF_DT)) As AnoSemana_Defeito
Resident Table1;
O resultado do Count está trazendo somente do Ano e Semana selecionados, preciso que o resultado seja de todos os anos e semanas menores que a seleção.
Tens um modelo para disponibilizar?
Eu na carga faria assim:
Script:
LOAD
WeekStart(DF_DT) as Data_Inicio_Semana
Year(DF_DT) AS Ano_Defeito,
Month(DF_DT) AS Mes_Defeito,
Week(DF_DT) AS Semana_Defeito,
date#(Year(DF_DT)&Week(DF_DT)) As AnoSemana_Defeito
Resident Table1;
Eu criaria um campo data que representa o primeiro dia da semana selecionada. Assim, basta na expressão fazer
=Count(Distinct {<AnoSemana_Defeito=,Data_Inicio_Semana={"<$(=max(Data_Inicio_Semana))"} >} ID_Entrada )
aonde
AnoSemana_Defeito= desmarca o campo selecionado
Data_Inicio_Semana={"<$(=max(Data_Inicio_Semana)) pega todos as datas anteriores ao selecionado
Seria isto?
Boa noite Alessandro.
Quando seleciono o ano e a semana acima (Ano_Defeito e Semana_Defeito)
Não está pegando todas as datas anteriores, somente o inicio da semana selecionada.
Data_Inicio_Semana
18/02/2018
A expressão está assim:
=Count(Distinct {<Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} >} Evoluc_Defeitos.ID_Entrada )
Voce esta selecionando o ANO e a SEMANA e tem que no Set Analysis desmarcar...
entao pode ser que esteja faltando desmarcar os dois conforme abaixo.
=Count(Distinct {< Evoluc_Defeitos.Ano=,Evoluc_Defeitos.Semana=, Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} >} Evoluc_Defeitos.ID_Entrada )
Alessandro, muito obrigada pelo retorno deu certo. O cálculo que preciso na expressão é esse:
Saldo:
Quantidade de defeito com data de entrada <=data selecionada
E
Quantidade de defeitos com data de baixa > data selecionada)
+
(Quantidade de defeitos com data de entrada <=data selecionada
E
Quantidade de defeitos com data de baixa is NULL)
If(GetSelectedCount(Evoluc_Defeitos.Ano_Defeito)=1 and GetSelectedCount(Evoluc_Defeitos.Semana_Defeito)=1,
(
Count(Distinct {<Evoluc_Defeitos.Ano_Defeito=,Evoluc_Defeitos.Semana_Defeito=, Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} >} Evoluc_Defeitos.ID_Entrada )
+
Count(Distinct {<Evoluc_Defeitos_Saida.Ano_Defeito={">$(=GetFieldSelections(Evoluc_Defeitos_Saida.Ano_Defeito))"},Evoluc_Defeitos_Saida.Semana_Defeito={">$(=GetFieldSelections(Evoluc_Defeitos_Saida.Semana_Defeito))"}>}Evoluc_Defeitos.ID_Entrada)
+
Count(Distinct {<Evoluc_Defeitos.Ano_Defeito=,Evoluc_Defeitos.Semana_Defeito=, Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} >} Evoluc_Defeitos.ID_Entrada )
+
Sum(Aggr(IF(LEN(TRIM(Evoluc_Defeitos.DF_DT_BX))<1 and Evoluc_Defeitos.Ano_Defeito <= GetFieldSelections(Evoluc_Defeitos.Ano_Defeito),1,0),Evoluc_Defeitos.ID_Entrada))
)
Pode verificar se está de acordo os outros set ? Abç, obrigd
Cristiane,
o melhor seria ter um modelo de exemplo para "ajustar" a expressão para mostrar um valor esperado. Tens como disponibilizar?
Mas sobre a data nula, poderias usar Evoluc_Defeitos.DF_DT_BX -= {*}
Me parece que daria para fazer a expressao da forma abaixo (**** Sem ver no editor de script então pode ter erro de sintaxe. O ideal seria ter um modelo para ajustar e "ver" rodando)
// Quantidade de defeito com data de entrada <=data selecionada E
// Quantidade de defeitos com data de baixa > data selecionada)
Count(Distinct {<Evoluc_Defeitos.Ano_Defeito=,Evoluc_Defeitos.Semana_Defeito=, Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<=$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} , Evoluc_Defeitos.DF_DT_BX ={">$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} >} Evoluc_Defeitos.ID_Entrada)
+
// Quantidade de defeitos com data de entrada <=data selecionada E
// Quantidade de defeitos com data de baixa is NULL)
Count(Distinct {<Evoluc_Defeitos.Ano_Defeito=,Evoluc_Defeitos.Semana_Defeito=, Evoluc_Defeitos.AnoSemana_Defeito=,Evoluc_Defeitos.Data_Inicio_Semana={"<=$(=max(Evoluc_Defeitos.Data_Inicio_Semana))"} , Evoluc_Defeitos.DF_DT_BX -= {*} >} Evoluc_Defeitos.ID_Entrada)