Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa Tarde amigos, tudo bem?
Sou iniciante no QV e estou com algumas dúvidas:
Eu preciso fazer um arquivo parecido com essa planilha, estou usando ela como base de dados(somente as colunas Year, Month, Series, Index e Index Value) e preciso fazer o calculo de porcentagem igual a coluna percent no próprio QV comparando os anos anteriores
EX:
Calcular a porcentagem do mês de Agosto dos anos 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 e 2014.
OBS - meu Qlikview ja venceu a licença, então não consigo abrir arquivos feitos em outras maquinas.
Olá Tiago,
Para esses casos que você necessita comparar informações entre períodos e os períodos estão sendo utilizados como dimensão, é necessário criar uma tabela auxiliar com algumas informações.
Essa técnica é denominada AsOf Date.
Veja o exemplo.
Dados:
LOAD
Date(Data,'YYYYMM') AS [ID_MesAtual],
*
Where IsNum(Data);
LOAD
MakeDate(Num(Year),Num(Month)) As Data,
Num(Year) AS Year,
Num(Year)-1 AS PreviousYear,
Num(Month) AS Month,
Series,
Index,
[Index Value]
FROM
[Brazil - Key Segments Production Tracker2.xlsx]
(ooxml, embedded labels, table is [Textiles Prod], filters(
Replace(1, top, StrCnd(null))
));
[AsOfDate]:
LOAD
Year(Data) AS Ano,
Month(Data) AS Mês,
MonthName(Data) AS [Mês Ano]
,Date(Data,'YYYYMM') AS ID_MesAtual
,'Corrente' as ID_Tipo_MesAno
,1 as Flg_MesAnoCorrente
,0 as Flg_MesAnoAnterior
;
LOAD DISTINCT Data
RESIDENT Dados
;
CONCATENATE ([AsOfDate])
LOAD
Year(Data) AS Ano,
Month(Data) AS Mês,
MonthName(Data) AS [Mês Ano]
,Date(AddYears(Data,-1),'YYYYMM') AS ID_MesAtual
,'Anterior' as ID_Tipo_MesAno
,0 as Flg_MesAnoCorrente
,1 as Flg_MesAnoAnterior
;
LOAD DISTINCT Data
RESIDENT Dados
;
Para fazer os cálculos dos valores é necessário fazer o uso dos campos Flag.
Expressão para Valor do Ano Mês Dimensão
Sum({$<Flg_MesAnoCorrente={1}>} [Index Value])
Expressão para Valor da Variação Percentual.
Sum({$<Flg_MesAnoCorrente={1}>} [Index Value])/Sum({$<Flg_MesAnoAnterior={1}>} [Index Value])-1
Ficando assim:
Qlikfique-se.
Tonial.
Olá Tiago,
Para esses casos que você necessita comparar informações entre períodos e os períodos estão sendo utilizados como dimensão, é necessário criar uma tabela auxiliar com algumas informações.
Essa técnica é denominada AsOf Date.
Veja o exemplo.
Dados:
LOAD
Date(Data,'YYYYMM') AS [ID_MesAtual],
*
Where IsNum(Data);
LOAD
MakeDate(Num(Year),Num(Month)) As Data,
Num(Year) AS Year,
Num(Year)-1 AS PreviousYear,
Num(Month) AS Month,
Series,
Index,
[Index Value]
FROM
[Brazil - Key Segments Production Tracker2.xlsx]
(ooxml, embedded labels, table is [Textiles Prod], filters(
Replace(1, top, StrCnd(null))
));
[AsOfDate]:
LOAD
Year(Data) AS Ano,
Month(Data) AS Mês,
MonthName(Data) AS [Mês Ano]
,Date(Data,'YYYYMM') AS ID_MesAtual
,'Corrente' as ID_Tipo_MesAno
,1 as Flg_MesAnoCorrente
,0 as Flg_MesAnoAnterior
;
LOAD DISTINCT Data
RESIDENT Dados
;
CONCATENATE ([AsOfDate])
LOAD
Year(Data) AS Ano,
Month(Data) AS Mês,
MonthName(Data) AS [Mês Ano]
,Date(AddYears(Data,-1),'YYYYMM') AS ID_MesAtual
,'Anterior' as ID_Tipo_MesAno
,0 as Flg_MesAnoCorrente
,1 as Flg_MesAnoAnterior
;
LOAD DISTINCT Data
RESIDENT Dados
;
Para fazer os cálculos dos valores é necessário fazer o uso dos campos Flag.
Expressão para Valor do Ano Mês Dimensão
Sum({$<Flg_MesAnoCorrente={1}>} [Index Value])
Expressão para Valor da Variação Percentual.
Sum({$<Flg_MesAnoCorrente={1}>} [Index Value])/Sum({$<Flg_MesAnoAnterior={1}>} [Index Value])-1
Ficando assim:
Qlikfique-se.
Tonial.
Muito obrigado Fernando, você me ajudou bastante, eu já consegui fazer aqui.
Só estou com mais um "probleminha" que não consegui resolver, a partir de 2013 eu tenho que usar a base 2012=100( célula J98) para calcular a % de 2013/2014
Veja se isso adianta:
No bloco abaixo você inclui a condição Where Year(Data) < 2013; :
[AsOfDate]:
LOAD
Year(Data) AS Ano,
Month(Data) AS Mês,
MonthName(Data) AS [Mês Ano]
,Date(Data,'YYYYMM') AS ID_MesAtual
,'Corrente' as ID_Tipo_MesAno
,1 as Flg_MesAnoCorrente
,0 as Flg_MesAnoAnterior
;
LOAD DISTINCT Data
RESIDENT Dados
Where Year(Data) < 2013;
Depois você replica os passos e concatena as duas partes.