Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
joao_sp_campina
Contributor II

duplicar registros por mês com base no ultimo lançamento do mês

Boa tarde Pessoal,

Preciso de uma ajuda, se alguem puder ajudar, agradeço muito.

Tenho período de lançamento de metas: Abril/2017 à Novembro/2017. Os valores são lançados por mês. Porem, acontece que nem todos os meses, eu tenho lançamento.

Por exemplo:

Data Meta
Indicadorvalor
01/04/20171100
01/05/20171200
01/06/2017não lançado indicador 1duplicar ultimo valor 200
01/07/2017não lançado indicador 1duplicar ultimo valor 200
01/08/2017não lançado indicador 1duplicar ultimo valor 200
01/09/2017não lançado indicador 1duplicar ultimo valor 200
01/10/2017não lançado indicador 1duplicar ultimo valor 200
01/11/2017não lançado indicador 1duplicar ultimo valor 200

Voces podem ver acima que o ultino lançamento foi em Mai/2017. Preciso duplicar este lançamento para todos os outros meses ate nov/2017.

Como fazer isto de uma maneira mais fácil. Sempre quando não tiver meta até o final do período replicar o ultimo lançamento ate o final.

Se alguem puder ajudar, agradeço.

João Carlos Ferreira

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Amigo, segue exemplo completo com a resolução para te facilitar;

Tab_Dados:

Load *

  Inline [

  Data_Meta|Indicador|valor

  01/04/2017|1|100

  01/05/2017|1|200

  ](delimiter is '|');

Concatenate(Tab_Dados)

Load *

  Inline [

  Data_Meta

  01/04/2017

  01/05/2017

  01/06/2017

  01/07/2017

  01/08/2017

  01/09/2017

  01/10/2017

  01/11/2017

  ];

Tab_Meta:

Load

  Data_Meta,

  If(IsNull(Indicador),Peek(KPI),Indicador) As 'KPI',

  If(IsNull(valor),Peek(META),valor) As 'META'

  Resident Tab_Dados;

Drop Table Tab_Dados;

Lembrando que os atributos gerados KPI e META podem ser alterados para os requisitos reais, e alterando, será necessário modificar os nomes internos das funções Peek().

Abraço.

9 Replies
mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Amigo, segue;

Dim_Meta:

Load

  Data_Meta,

    If(IsNum(Indicador),Indicador,Peek(KPI)) As 'KPI',

    If(IsNum(valor),valor,Peek(META)) As 'META'

From <SUA_TABELA>;

joao_sp_campina
Contributor II

Re: duplicar registros por mês com base no ultimo lançamento do mês

Boa tarde Mario,

Não seria isnull no lugar de Isnum?

De onde vc tirou o KPI e META?

Poderia definir melhor?

Obrigado

João Carlos

mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Amigo,

IsNum() testa se é número, pois na sua tabela aparece string quando não tem o resultado;

Se o seu caso for célula vazio quando não tem resultado, IsNum() também iria esperar por um resultado numérico para retornar -1(true), mas pode usar IsNull() para testar vazio se for este o caso.

KPI e META pode ser alterados a gosto, são Alias, observe que tem a função As;

Versão Inline

Tab1:

Load

  Data_Meta,

    If(IsNum(Indicador),Indicador,Peek(KPI)) As 'KPI',

    If(IsNum(valor),valor,Peek(META)) As 'META'

Inline [

Data_Meta|Indicador|valor

01/04/2017|1|100

01/05/2017|1|200

01/06/2017|não lançado indicador 1|duplicar ultimo valor 200

01/07/2017|não lançado indicador 1|duplicar ultimo valor 200

01/08/2017|não lançado indicador 1|duplicar ultimo valor 200

01/09/2017|não lançado indicador 1|duplicar ultimo valor 200

01/10/2017|não lançado indicador 1|duplicar ultimo valor 200

01/11/2017|não lançado indicador 1|duplicar ultimo valor 200

](delimiter is '|');

Not applicable

Re: duplicar registros por mês com base no ultimo lançamento do mês

João, caso a resposta do tópico acima tenha te ajudado, marque a resposta como correta para fechar o tópico.


Att.,

Luana Ribeiro

joao_sp_campina
Contributor II

Re: duplicar registros por mês com base no ultimo lançamento do mês

Mario,

No exemplo que vc fez, vc testou o campo Indicador a String e no campo Valor. Porém, no meu caso não funciona, pois não vem nenhum dado no campo, quando não tem Meta.

Por isso não atendeu. Teria que gerar os registros, inclusive as Datas para o Indicador.

João Carlos

mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Amigo, tente:

Dim_Meta:   

Load   

  Data_Meta,   

    If(IsNull(Indicador),Peek(KPI),Indicador) As 'KPI',   

    If(IsNull(valor),Peek(META),valor) As 'META'   

From <SUA_TABELA>

mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Se a data não existe no modelo de dados, terá que criar;

Pode ser em um Inline e depois concatenar com a tabela das metas;

Concatenate(<SUA_TABELA>)

Tab_Data;

Inline[

Data_Meta

01/04/2017

01/05/2017

01/06/2017

01/07/2017

01/08/2017

01/09/2017

01/10/2017

01/11/2017

];

O nome do campo Data_Meta tem que ser o mesmo da <SUA_TABELA>;

E depois poderá fazer um Resident com as duas tabelas juntas para executar as funções IF() acima.

mario_sergio_ti
Valued Contributor

Re: duplicar registros por mês com base no ultimo lançamento do mês

Amigo, segue exemplo completo com a resolução para te facilitar;

Tab_Dados:

Load *

  Inline [

  Data_Meta|Indicador|valor

  01/04/2017|1|100

  01/05/2017|1|200

  ](delimiter is '|');

Concatenate(Tab_Dados)

Load *

  Inline [

  Data_Meta

  01/04/2017

  01/05/2017

  01/06/2017

  01/07/2017

  01/08/2017

  01/09/2017

  01/10/2017

  01/11/2017

  ];

Tab_Meta:

Load

  Data_Meta,

  If(IsNull(Indicador),Peek(KPI),Indicador) As 'KPI',

  If(IsNull(valor),Peek(META),valor) As 'META'

  Resident Tab_Dados;

Drop Table Tab_Dados;

Lembrando que os atributos gerados KPI e META podem ser alterados para os requisitos reais, e alterando, será necessário modificar os nomes internos das funções Peek().

Abraço.

joao_sp_campina
Contributor II

Re: duplicar registros por mês com base no ultimo lançamento do mês

Obrigado Mario,

Me ajudou bastante na minha necessidade.

João Carlos Ferreira