16 Replies Latest reply: Jul 7, 2015 4:22 PM by Filipe Mattos Kuhn RSS

    Variáveis em Espressões

    Filipe Mattos Kuhn

      Boa tarde!

      Pessoal, tenho expressões onde preciso selecionar o cliente do qual quero trazer as informações. Entretanto, tenho vários gráficos e tenho então várias expressões, para trocar o código quando copie e colo para outro cliente, praticamente uma para cada gráfico, como estas:

      Count({<Cd_cliente={[000107]}>} Cd_numero_os)

      sum({<Cd_cliente={000107},USE_Cd_atividade={LOCAL,REMOTO,LABORATORIO}>} Quantidade)/24

      aggr( only({<Cd_cliente={000107}>} Cd_numero_os),Cd_numero_os)

       

      Gostaria de saber se consigo trocar o código que aparece entre (000107)  por uma variável que eu possa setar em algum lugar  e que ela assumisse essa variável como verdadeira. ficaria mais ou menos assim :

       

      $variável=000107

      Count({<Cd_cliente={[$variável]}>} Cd_numero_os)

      sum({<Cd_cliente={[$variável]},USE_Cd_atividade={LOCAL,REMOTO,LABORATORIO}>} Quantidade)/24

      aggr( only({<Cd_cliente={[$variável]}>} Cd_numero_os),Cd_numero_os)

       

      Abraço a todos e ótima tarde.

        • Re: Variáveis em Espressões
          Alessandro Furtado

          creio que abaixo funciona quando tiver um unico cliente selecionado.  Se mudar para maxstring ele pegara o maior dos selecionados ou possiveis.

           

           

           

          Count({<Cd_cliente={"=$(=only(Cd_cliente))"}>} Cd_numero_os)


          Count({<Cd_cliente={"=$(=maxstring(Cd_cliente))"}>} Cd_numero_os)


            • Re: Variáveis em Espressões
              Filipe Mattos Kuhn

              Alessandro, obrigado pela dica, a ideia que eu preciso é ter apenas um lugar para trocar o código e ele trocar em todos os locais que tiverem a variável aplicada.

                • Re: Variáveis em Espressões
                  Egnaldo de Sousa

                  Existe uma solução para isso:

                   

                  1) Crie uma variável vContar

                  2) Coloque sua expressão dentro dela "Count({<Cd_cliente={[000107]}>} Cd_numero_os)"

                  3) No lugar do  000107 coloque $1 ficando assim:"Count({<Cd_cliente={$1}>} Cd_numero_os)"

                  4) Teste em um objeto de texto, =$(vContar(000107))

                  5) O resultado deverá aparecer.

                   

                  Se der errado me avise que montarei um tutorial mais simples.

                    • Re: Variáveis em Espressões
                      Yuri Nicolett

                      Pode fazer o exemplo que o Egnaldo passou que é correto!

                       

                      Utilizar parâmetros em variáveis é uma boa prática

                        • Re: Variáveis em Espressões
                          Filipe Mattos Kuhn

                          Então Yuri, pelo que entendi no exemplo do Egnaldo, eu vou criar uma variável para a função Cont, e eu colocaria a variável correspondente a função, a qual no exemplo tem o nome de vcontar mais o código do cliente. A questão é que eu preciso do contrário, eu tenho várias funções diferentes, porem preciso colocar uma variável para substituir o codigo do cliente que neste caso é 000107. Neste caso, quando eu trocar o valor da variável trocaria para todas as funções onde esta variável existir pelo valor que eu coloquei. A função continua mesma, só o código que mudaria. Na minha ideia seria até mais simples que o exemplo.

                          Se eu entendi errado, por favor me corrija.

                            • Re: Variáveis em Espressões
                              Yuri Nicolett

                              DÚVIDA: Porque você esta querendo fazer isso por variável? Não seria mais fácil você disponibilizar o campo do COD_CLIENTE para o usuário filtrar qual ele deseja visualizar?

                               

                               

                              Caso queira continuar com a solução da variável, então crie uma variável simples, por exemplo:

                               

                              vCodCliente

                               

                              Disponibilize um objeto Caixa de Entrada para o usuário colocar o código que precisa.

                              Na sua expressão, basta adicionar o set analysis CAMPO_COD_CLIENTE = {'$(vCodCliente)'}

                                • Re: Variáveis em Espressões
                                  Filipe Mattos Kuhn

                                  Este aplicativo eu vou fazer cópias um para cada "cliente" do mesmo aplicativo,mas nem todos os clientes tem os mesmos dados alguns tem dados no mes de junho, outros não, mas os meses devem aparecer para compor o gráfico, mesmo zerados. Eu poderia setar o código criando um filtro,em uma pasta que ele não tenha acesso, deixando as funções sem um cliente pré-definido e simplesmente setar em uma aba que ele não tenha acesso. Entretanto, se o "cliente" clicar em algum campo que ele não tenha dados por exemplo, a seleção padrão que eu setei em outra pasta, é apagada, e os gráficos passam a mostrar dados gerais, como ele não pode ter acesso a trocar os dados, ele não consegue voltar aos dados dele mesmo. Ele apenas pode visualizar e interagir com os gráficos.

                                  Daí surgiu a necessidade de criar filtros por gráficos, e tudo que existir na pasta. Assim mesmo se o "cliente" clicar em algo que ele não tenha dados, um mês que ele não tenha nada, o máximo que vai acontecer é os gráficos zerarem, até ai tudo bem, isso é o resultado que eu queria.

                                   

                                  O contratempo e a necessidade de eu criar uma variável para substituir o código do cliente a a facilidade de trocar em um local só um dado que existe em todos os gráficos e que eu tenho que trocar manualmente cada vez que eu replico o aplicativo para outro cliente. Se eu crio uma variável para o código do cliente, aplico ela em todos os gráficos, meu trabalho será apenas copiar o aplicativo, entrar onde está a variável trocar por outro código de cliente, e isso será aplicado para todos os gráficos a a pasta está pronta para o outro cliente.

                                  • Re: Variáveis em Espressões
                                    Filipe Mattos Kuhn

                                    hum.. blz, é neste caso da variável, ele não vai ter opção de trocar, eu mesmo crio a pasta e mudo esta variável. A questão que eu não entendi é onde criar esta variável, é la no editor de carga de dados, é no próprio aplicativo. Está esta sendo minha dificuldade.

                                    Tenho árias funções como estas:

                                     

                                    Count({<Cd_cliente={[variável1]}>} Cd_numero_os)

                                    sum({<Cd_cliente={variável1},USE_Cd_atividade={LOCAL,REMOTO,LABORATORIO}>} Quantidade)/24

                                    aggr( only({<Cd_cliente={variável1}>} Cd_numero_os),Cd_numero_os)

                                     

                                    em vários gráficos, e quero que, quanto eu trocar o valor da "variável1" ele aplique para todos os locais que tem esta variável.

                                      • Re: Variáveis em Espressões
                                        Yuri Nicolett

                                        Para criar a variável: Dentro do QVW -> Configuração -> Visão geral das variáveis e adicione uma nova variável.

                                         

                                        Se preferir pelo script:

                                         

                                        SET vNomeVariavel = 101010101;

                                          • Re: Variáveis em Espressões
                                            Filipe Mattos Kuhn

                                            Valeu Yuri, o meu é o Sense... ficou assim

                                             

                                            Em uma das sessões que tenho de carregamento de dados:

                                            Set vclient=$(=000107);

                                             

                                            E as expressões ficaram assim:

                                            aggr( only({<Cd_cliente={"$(vclient)"}>} Nome_completo),Nome_completo)

                                            sum({<Cd_cliente={"$(vclient)"},USE_Cd_atividade={LOCAL,REMOTO,LABORATORIO}>} Quantidade)/24

                                             

                                            Agora sim ficou fácil, todas as expressões eu posso trocar de uma vez só, e eles matem as características que eu disse que preciso.

                                            Mas gostaria de ler mais sobre a dica que vc me mandou. Vou procurar !

                              • Re: Variáveis em Espressões
                                Alessandro Furtado

                                Criar uma variavel entao

                                 

                                =only(Cd_cliente))


                                ou


                                =maxstring(Cd_cliente)


                                e no set anal. 


                                Count({<Cd_cliente={"=$(vVarariavel))"}>} Cd_numero_os)



                              • Re: Variáveis em Espressões
                                Renato Tavares

                                Segue Exemplo: 

                                 

                                =SUM({<SUA_DIMENSAO = {'$(SUA_VARIAVEL)'}>} SEU_CAMPO)

                                  • Re: Variáveis em Espressões
                                    Filipe Mattos Kuhn

                                    Obrigado Renato, exatamente o que eu precisava. Os outros amigos tbm responderam semelhantemente.

                                    Só complementando para outros pouco entendidos no QLIK como eu, o local onde definir a variável é no Carregamento dos dados.

                                    No meu caso:

                                     

                                    Set vclient=$(=000087);

                                    as expressões ficaram assim:

                                    aggr( only({<Cd_cliente={"$(vclient)"}>} Nome_completo),Nome_completo)

                                    sum({<Cd_cliente={"$(vclient)"},USE_Cd_atividade={LOCAL,REMOTO,LABORATORIO}>} Quantidade)/24