Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
cristianevpm
Contributor III
Contributor III

Expressão - Condição

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

Labels (3)
17 Replies
Marcio_Campestrini
Specialist
Specialist

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).

Márcio Rodrigo Campestrini
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

tem um modelo com dados reduzidos (e dependendo embaralhados) para postar?

furtado@farolbi.com.br
Thiago_Justen_

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!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
cristianevpm
Contributor III
Contributor III
Author

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.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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?



furtado@farolbi.com.br
cristianevpm
Contributor III
Contributor III
Author

filtros.JPG

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 )

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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 )

furtado@farolbi.com.br
cristianevpm
Contributor III
Contributor III
Author

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

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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)

furtado@farolbi.com.br