17 Replies Latest reply: Mar 6, 2018 7:09 PM by Cristiane Miamoto RSS

    Expressão - Condição

    Cristiane Miamoto

      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

        • Re: Expressão - Condição
          Márcio Rodrigo Campestrini

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

          • Re: Expressão - Condição
            Alessandro Furtado

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

              • Re: Expressão - Condição
                Cristiane Miamoto

                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.

                  • Re: Expressão - Condição
                    Alessandro Furtado

                    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?



                      • Re: Expressão - Condição
                        Cristiane Miamoto

                        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 )

                          • Re: Expressão - Condição
                            Alessandro Furtado

                            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 )

                              • Re: Expressão - Condição
                                Cristiane Miamoto

                                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

                                  • Re: Expressão - Condição
                                    Alessandro Furtado

                                    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)

                        • Re: Expressão - Condição
                          Thiago Justen Teixeira

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

                          • Re: Expressão - Condição
                            Thiago Justen Teixeira

                            Cristiane,

                             

                            Acho que com a ajuda dada por todos aqui, aliado ao que mario.sergio.ti e eu fizemos via Skype ,sua questão foi resolvida. Correto?

                             

                            Se sim, poste a expressão final para que a comunidade tome conhecimento e atribua o devido mérito às respostas que lhe foram úteis, em sinal de agradecimento a todos que dispendem tempo e boa vontade em ajudar.

                             

                            Abs e Sucesso!!

                              • Re: Expressão - Condição
                                Cristiane Miamoto

                                Olá Pessoal,

                                Como mencionei estou iniciando no set analysis.

                                Agradeço a todos que me ajudaram. Consegui concluir esse projeto e no que eu tinha dúvidas(set analysis) vocês me apoiaram.

                                 

                                Abraço e sucesso.

                                 

                                Abaixo a expressão final de acordo com o que o afurtado direcionou.

                                 

                                =If(getselectedcount(Evoluc_Defeitos.Ano_Defeito)>0,

                                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)

                                +

                                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)

                                ,

                                Count(Distinct{$<Evoluc_Defeitos.Data_Inicio_Semana={"<$(=(Evoluc_Defeitos.Data_Inicio_Semana))"}>} Evoluc_Defeitos.ID_Entrada)

                                +

                                Count(Distinct {$-<Evoluc_Defeitos.DF_DT_BX={"*"}>} Evoluc_Defeitos.ID_Entrada)

                                )