Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Variáveis em Espressões

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.

Tags (1)
1 Solution

Accepted Solutions
girino777
Contributor III

Re: Variáveis em Espressões

Segue Exemplo: 

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

16 Replies
MVP
MVP

Re: Variáveis em Espressões

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)


Not applicable

Re: Variáveis em Espressões

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.

egnaldo_sousa
Contributor II

Re: Variáveis em Espressões

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.

girino777
Contributor III

Re: Variáveis em Espressões

Segue Exemplo: 

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

MVP
MVP

Re: Variáveis em Espressões

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

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

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

Not applicable

Re: Variáveis em Espressões

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

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)'}

Not applicable

Re: Variáveis em Espressões

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.