Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Srs. Bom dia.
Sou novo no Qlikview e estou com uma função que esta me fazendo quebrar a cabeça. Preciso trazer os valores de VALORPREV que estão na FUNÇÃO = 9 somados aos valores das funções menores do que 9 que tem CLASSDESPESA = '4.4.90.51' E CLASSDESPESA = '4.4.90.512. Esse CLASSDESPESA é uma classificação existente dentro da FUNÇÃO. No script abaixo consigo fazer isso usando a função All, porém foi necessário mudar a consulta e agora preciso selecionar outras informações e essa função não se aplica mais. Segue o script.
if(funcao.COD_FUNCAO = 9, sum(ALL if((classdespesa.CD_CLASSDESPESA = '4.4.90.51' or classdespesa.CD_CLASSDESPESA = '4.4.90.52')or funcao.COD_FUNCAO = 9, recfindespesa.VALORPREV)),
if(funcao.COD_FUNCAO < 9, sum(if((classdespesa.CD_CLASSDESPESA = '3.1.90.11' or
classdespesa.CD_CLASSDESPESA = '3.1.90.13' or
classdespesa.CD_CLASSDESPESA = '3.1.90.16' or
classdespesa.CD_CLASSDESPESA = '3.3.50.41.03' or
classdespesa.CD_CLASSDESPESA = '3.3.90.30' or
classdespesa.CD_CLASSDESPESA = '3.3.90.36' or
classdespesa.CD_CLASSDESPESA = '3.3.90.39' or
classdespesa.CD_CLASSDESPESA = '4.5.90.61'), recfindespesa.VALORPREV)), Sum(recfindespesa.VALORPREV)))
Alguém tem alguma ideia?
Desde já obrigado.
Bom Marcos, então não entendi bem o teu problema.
Pelo que entendi você quer pegar a soma do VALORPREV, onde a Função seja = 9
Para isso segue o primeiro Set Analysis:
Sum({<funcao.COD_FUNCAO={'9'}>} recfindespesa.VALORPREV)
Depois entendi que você quer somar este valor aos valores de VALORPREV, onde a Função seja menor que 9 e CLASSDESPESA sejam = 4.4.90.51 e 4.4.90.512.
Sendo assim, segue o segundo Set Analysis:
Sum({<funcao.COD_FUNCAO={'<9'}, classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.512'}>} recfindespesa.VALORPREV)
Foi isso que entendi, caso não seja, explique melhor para que possamos fechar este tópico.
Bom dia Marcos.
Em funções de agregação simples (Sum(), Avg(), etc) podemos utilizar Distinct, All e Total.
Distinct serve para trazer a agregação por valores distintos. Já o All trará todos os valores do seu Data Cloud ignorando as seleções existentes no documento. Já o Total trará os totais de uma dimensão para uma determinada seleção.
Marcos!
É claro que fica difícil sugerir algo sem estar vendo o resultado para correções ou sem conhecer a estrutura que você tem, mas segue abaixo uma sugestão, usando somente setanalisys
Soma todos os valores cuja função são diferentes de 9 com classdespesa igual aos dois valores informados
sum({< (COD_FUNCAO -= {9} , CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} >} VALORPREV)
+
Soma todos os valores da função igual a 9 independente do classdespesa
sum({< COD_FUNCAO = {9} >}
+
Soma todos os valores da função menor que 9 que sejam diferentes das duas classdespesa calculadas acima na função igual a 9
sum({< (COD_FUNCAO = {"<9"} , CD_CLASSDESPESA -= {"4.4.90.51","4.4.90.52"} >} VALORPREV)
Bom dia Cesar e raphael.
Utilizei as funções surgeridas, porém não funcionou. Como disse sou iniciante e estou assimilando grande parte das coisas. Bom, continuando com o problema, peguei o script acima, retirei os comentarios e adaptei os campos de dados com os nomes corretos. O estranho foi que o QV não reconheceu o comando -=. Lembrando que estou fazendo esta programação dentro da aba Expressão no item Definição.
Obrigado pelo apoio.
em vez de CD_CLASSDESPESA -= {"4.4.90.51","4.4.90.52"} , use
CD_CLASSDESPESA = {*} - CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} .
LC
luis
ele já da erro no incio da função, em COD_FUNCAO -= {9}. O erro apresentado é: error in set modifier expression.
Bom dia!
Estranho não ter funcionado, utilize a sugestão do Luis Cavaleiro que também deveria funcionar
CD_CLASSDESPESA = {*} - CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} .
De: marcos nakao
Enviada em: sexta-feira, 18 de outubro de 2013 10:09
Para: Cesar Anton
Assunto: Re: - Função ALL
<http://community.qlik.com/> QlikCommunity
Função ALL
reply from marcos nakao <http://community.qlik.com/people/marcosnakao?et=watches.email.thread> in Qlikview Brasil - View the full discussion <http://community.qlik.com/message/408633?et=watches.email.thread#408633>
Podes anexar a expressão de setanalysis que estás a usar sff?
Obg
Segue o setanalysis:
sum({< ( funcao.COD_FUNCAO -= {9} , classdespesa.CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} >} recfindespesa.VALORPREV)
+
sum({< funcao.COD_FUNCAO = {9} >}
+
sum({< (funcao.COD_FUNCAO = {"<9"} , classdespesa.CD_CLASSDESPESA -= {"4.4.90.51","4.4.90.52"} >} recfindespesa.VALORPREV)
Após a sugestão do luis, ficou assim:
sum({< ( funcao.COD_FUNCAO -= {9} , classdespesa.CD_CLASSDESPESA = {*} - classdespesa.CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} recfindespesa.VALORPREV)
+
sum({< funcao.COD_FUNCAO = {9} >}
+
sum({< (funcao.COD_FUNCAO = {"<9"} , classdespesa.CD_CLASSDESPESA = {*} - classdespesa.CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} recfindespesa.VALORPREV)
lembrando que el não deixa passar nem no primeiro -=
tenta
sum({< ( funcao.COD_FUNCAO {*} - funcao.COD_FUNCAO = {9} , classdespesa.CD_CLASSDESPESA = {*} - classdespesa.CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} recfindespesa.VALORPREV)
+
sum({< funcao.COD_FUNCAO = {9} >}
+
sum({< (funcao.COD_FUNCAO = {"<9"} , classdespesa.CD_CLASSDESPESA = {*} - classdespesa.CD_CLASSDESPESA = {"4.4.90.51","4.4.90.52"} recfindespesa.VALORPREV)
outra hipótese é marcar (1 e 0) em script as linhas a somar e assim o cálculo em Set era mais directo