Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Gabrielsantana
Contributor
Contributor

Cálculo de Média

Boa noite, colegas,

 

Sou novo no Qlik e sense e tenho dúvidas em relação ao cálculo de uma média, é o seguinte, eu tenho tabela carregada com numero populacional (anual) e um gasto(anual). Gostaria de tirar uma média para saber qual meu gasto per capita anual, alguém poderia me ajudar?

11 Replies
rphpacheco
Creator III
Creator III

Boa noite Gabriel.

Acredito que uma forma tranquila de se fazer isso é vc criar um campo gastoPerCapita em seu script de carga, onde seria basicamente numeroPopulacional / gasto.

Após isso, basta vc criar uma measure mediaGasto = AVG(gastoPerCapita)

Bom, espero ter ajudado 😉

Gabrielsantana
Contributor
Contributor
Author

Perdão a ignorância, mas eu ainda estou aprendendo a entender a linguagem do programa, você poderia ser um pouco mais detalhista na sua explicação, o que seria carga ou measure, ou, se for o caso você pode me apresentar algum artigo/tutorial que trate do assunto?
rphpacheco
Creator III
Creator III

Tranquilo Gabriel, vamos lá 😉

Você provavelmente está lendo estes dados de alguma fonte (.csv, .xls, banco de dados ou tabela web) certo?

Então, esta leitura dos dados gera um script em seu arquivo .QVW, onde ele deve apresentar algo do tipo: 

<nome_da_sua_tabela>:
LOAD
numeroPopulacional,
gasto
FROM <path>;

Então, quando me refiro em carga é justamente na declaração deste script (obs: estou contando com possibilidade de vc ter acesso ao modo de edição de script no arquivo QVW gerador das suas analises, certo?).

Sendo assim, basta você adicionar mais um campo nesta tabela, o que ficaria mais ou menos assim (digo isto, pois não sei o nome correto dos seus campos):

<nome_da_sua_tabela>:
LOAD
numeroPopulacional,
gasto,
gasto / numeroPopulacional as gastoPerCapita
FROM <path>;

Obs: Após recarregar o seu arquivo .qvw (podes utilizar o botão recarregar, ou apenas CTRL + R), você poderá criar a sua measure (medida), ou seja, a expressão/fórmula em sua camada visual, ou mais conhecida como analises gráficas (pizza, barras, tabela, etc).

AVG(gastoPerCapita)

Se ficou ainda mais alguma dúvida não hesite em perguntar 😉  

Gabrielsantana
Contributor
Contributor
Author

Todas as perguntas que você realizou estão corretas, extrai dados de um da uma planilha .xls
Fui no meu editor de carga de dados fiz o que você pediu substituindo os nomes para os da minha tabela, contudo sem êxito.
rphpacheco
Creator III
Creator III

Vamos lá então... vc poderia dar mais detalhes do que não deu certo?

Tipo, o campo gastoPerCapita criado não trouxe nenhum dado na tabela? Podes ver isso usando o comando CTRL + T no seu arquivo .QVW para poder abrir o modo de visualização das tabelas, e na tabela em questão clicar com o botão direto do mouse para ver os results desta tabela. Verifique o que está retornando para este campo criado.

Você criou a expressão AVG(gastoPerCapita) no seu gráfico?

E por último, vc recarregou o aquivo (CTRL + R) depois que fizeste estas mudanças?

Gabrielsantana
Contributor
Contributor
Author

Set dataManagerTables = '','SAÚDE INDIGENA','POPULAÇÃO INDÍGENA','UG';
//This block renames script tables from non generated section which conflict with the names of managed tables

For each name in $(dataManagerTables)
Let index = 0;
Let currentName = name;
Let tableNumber = TableNumber(name);
Let matches = 0;
Do while not IsNull(tableNumber) or (index > 0 and matches > 0)
index = index + 1;
currentName = name & '-' & index;
tableNumber = TableNumber(currentName)
matches = Match('$(currentName)', $(dataManagerTables));
Loop
If index > 0 then
Rename Table '$(name)' to '$(currentName)';
EndIf;
Next;
Set dataManagerTables = ;


Unqualify *;

[SAÚDE INDIGENA]:
LOAD
[UG] AS [UG-UG ID],
[Saldo R$],
[Exercício],
[I],
[J],
[K]
FROM [lib://Downloads/APLICAÇÃO QLIK SENSE.xlsx]
(ooxml, embedded labels, table is [SAÚDE INDIGENA]);

[POPULAÇÃO INDÍGENA]:
LOAD
[UG] AS [UG-UG ID],
[2015],
[2016],
[2017],
[2018]
FROM [lib://Downloads/APLICAÇÃO QLIK SENSE.xlsx]
(ooxml, embedded labels, table is [POPULAÇÃO INDÍGENA]);

[UG]:
LOAD
[UG ID] AS [UG-UG ID],
[UG] AS [UG.UG]
FROM [lib://Downloads/APLICAÇÃO QLIK SENSE.xlsx]
(ooxml, embedded labels, table is UG);

Isso é minha tabela no editor de carga
Da eu quero tirar a média da dos anos da tabela população indígena do valor gasto em cada exercicio financeiro da tabela saúde indígena. Na verdade eu não entendi bem o que escrever no código que você repassou, veja se assim ficar mais claro pra você!
Gabrielsantana
Contributor
Contributor
Author

Dentro da minha coluna exercício está incluso os gastos respectivamente de 2015 a 2018 respectivamente.
diferente da tabela de população indígena, as dos gastos não está separado os gastos por coluna.
rphpacheco
Creator III
Creator III

Pelo o que eu entendi, vc tem na tabela [SAÚDE INDIGENA] o campo exercício, onde creio eu que seja os anos, correto?

Considerando isso, temos do outro lado a tabela [POPULAÇÃO INDIGENA], onde os anos estão representados em campos diferentes. Para que possamos levar as coisas da forma mais simples para a sua view, é melhor ajeitarmos esta tabela de população. 

[POPULAÇÃO INDÍGENA]:
CrossTable(Exercício, Populacao, 1)
LOAD
[UG] AS [UG-UG ID],
[2015],
[2016],
[2017],
[2018]
FROM [lib://Downloads/APLICAÇÃO QLIK SENSE.xlsx]
(ooxml, embedded labels, table is [POPULAÇÃO INDÍGENA]);

Pronto! Agora vamos ter algo do tipo

UG-UG ID | Exercício | Populacao

Agora temos outra particularidade, o [Saldo R$] está na tabela [SAÚDE INDIGENA] e como vc precisa ter as duas informações na masma tabela, sugiro que você cria outra trabela chamada [GASTO PER CAPITA], onde podes seguir assim:

auxiliar:
LOAD
[UG-UG ID],
Exercício, 
Populacao as pop
RESIDENT [POPULAÇÃO INDÍGENA];

LEFT JOIN ([GASTO PER CAPITA])
LOAD
[UG-UG ID],
[Exercício],
[Saldo R$] as saldo
RESIDENT [SAÚDE INDIGENA];

[GASTO PER CAPITA]:
[UG-UG ID], [Exercício],
saldo / pop as gastoPerCapita
RESIDENT auxiliar;

DROP TABLE auxiliar;

Dependendo a versão do Qlik ou Sense, quando fazemos uma leitura de dados de uma tabela já existente em memória, ou seja, um resident, os dados não são carregados pois poucas versões entendem como redundância. Para contornar isso, podes criar um campo com qualquer valor (eu costumo a por 1), mas isso eu acredito que não será necessário.

Agora é só criares a expressão 

AVG(gastoPerCapita)

que eu acredito que irá funcionar 😉

Gabrielsantana
Contributor
Contributor
Author

Pacheco obrigado por todo o apoio, agora é o seguinte a primeira linha de código fiz o que você mandou e deu super certo, sem percalços, já em relação a segunda partes dos códigos eu vi que você sugeriu que eu criasse uma tabela [GASTO PER CAPITA], contudo, não entendi bem a finalidade e quais dados devem estar nela, seria as mesmas informações da[Saldo R$] ?