Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Variação Mensal - Dúvida

Estou querendo fazer uma expressão Variação Mensal = Receita Mat/Med (mes ant) / Receita Mat/Med (mes atual), exemplo:

   Na linha de Jan/2014 a Variação Mensal = Receita Mat/Med (Dez/2013) / Receita Mat/Med (Jan/2014)

   Na linha de Fev/2014 a Variação Mensal = Receita Mat/Med (Jan/2014) / Receita Mat/Med (Fev/2014)

   E assim sucessivamente, ou seja, preciso que seja dinâmico. Quando seleciono o ano, esta expressão deve ser calculada dinamicamente.

Inline image 2

Anexei um exemplo para ajudar. Não é o original, mas se alguém conseguir fazer a expressão variação neste exemplo resolve o meu problema real.

Desde já agradeço,

Geny Oliveira

Labels (1)
17 Replies
lucianosv
Specialist
Specialist

Vai dar mais trabalho e onerar um pouco a carga, mas na aplicação ficará mais rápido.

Not applicable
Author

Luciano,

   E o a tabela de Competência vai ficar dentro da tabela fato com essa nova carga?

   Não sei como vai ficar a lentidão da carga, porque tenho milhões de registros na fato.

   Estou tentando carregar o exemplo, mas ainda não consegui, ocorre erro,.

Obrigada

Geny

Not applicable
Author

Luciano,

   Minha nuvem tem várias dimensões ligada a tabela fato e eu não sei como fazer essa tabela de valores anteriores que vai ficar ligada a fato.

   Estou achando muito complicado fazer assim.

Geny

lucianosv
Specialist
Specialist

Para minimizar esse impacto, você pode incluir na fato somente os campos "Cd Mes Ant" e "Cd Mes" e retirá-los da competência. Você só precisa dos dois campos para o processo. Eu utilizei o left join com tudo só para ser mais simples. Acho que do jeito abaixo ficará mais rápido:

Volta a Dimensão como estava:

[Dim_competencia]:

LOAD ID_COMPETENCIA,

     date(date#(CD_MES&'01','YYYYMMDD')) AS "Dt Competencia",

     CD_MES AS "Cd Mes",

     DS_MES AS "Mes/Ano",

     CD_MES_ANT AS "Cd Mes Ant",

     ANO AS "Ano",

     MES AS "Mes",

     CD_TRIMESTRE AS "Cd Trimestre",

     DS_TRIMESTRE AS "Trimestre",

     CD_SEMESTRE AS "Cd Semestre",

     DS_SEMESTRE AS "Semestre"

FROM

[..\..\Extracao\Dimensoes\Dim_competencia.qvd]

(qvd);

Coloca o Left Join assim:

Left Join(Fato_Bicustos_01)

LOAD ID_COMPETENCIA,

     CD_MES AS "Cd Mes",

     CD_MES_ANT AS "Cd Mes Ant"

Resident [Dim_competencia];

e dropa os campos "Cd Mes Ant" e "Cd Mes" da dimensão:

Drop Fields [Cd Mes], [Cd Mes Ant] FROM [Dim_competencia];

Not applicable
Author

Luciano,

  Não consegui fazer a carga com o left join no exemplo que você enviou. E no meu mundo real vai ser mais complicado de fazer, pois são várias dimensões e milhões de registros.

  Não tem uma forma de fazer com set analyse ou outra coisa direto na expressão?

Ats

Geny

Not applicable
Author

Boa Tarde Luciano,

  Muito obrigada pela ajuda.

  Consegui fazer criando uma variável com o último mês do ano anterior (=Max(Ano) -1&12) e criei uma variável para guardar o valor da receita do ultimo mes do ano anterior (=SUM({$<[Cd Mes]={'$(=VUltMesAnoAnterior)'}, Ano=>} VL_RECEITA).  E na expressão da variação usei a variável com o valor da receita.

Ats

Geny

lucianosv
Specialist
Specialist

Ok.

Só dei aquela ideia pq dessa forma não funciona para duas viradas de ano.

Not applicable
Author

No meu caso só vai selecionar uma Ano por vez e por isso funciona.

Obrigada pela atenção,

Geny