Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Comparar porcentagem entre meses/anos anteriores

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.

Labels (1)
1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

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:

21-11-2014 14-11-06.png

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.

View solution in original post

3 Replies
fernando_tonial
Partner - Specialist
Partner - Specialist

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:

21-11-2014 14-11-06.png

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.
Not applicable
Author

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

lucianosv
Specialist
Specialist

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.