Skip to main content
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: 
mercadante
Creator
Creator

Gravar foto mensal

Sr.(as)

Boa tarde!

Alguém pode me orientar a melhor forma de resolver a necessidade abaixo.

Tenho os seguintes campos:

Numero Contrato,

Data Venda Contrato,

Data Pedido Cancelamento,

Data Desistência do Cancelamento,

Data Cancelamento Contrato,

Etc.

Preciso armazenar uma foto mensal destes dados

Pensei em duas formas de resolver

1º Opção

Criar uma variavel com o Mês/Ano e utilizar a mesma para compor o nome do QVD. Desta forma quando virar o mês, um novo qvd será criado.

Só que as informações será duplicadas. Exemplo 50.000 linhas no qvd Janeiro 50.000 linhas no qvd de fevereiro e assim por diante.

2º Opção

Criar uma chave com todos os campos mais uma data de carga, desta forma é possivel criar uma validação e a linha sera gravada se houver alteração de algum campo.

Assim será duplicado somente os registros que sofreram alterações.

OBS.: A Data Venda Contrato, Data Pedido Cancelamento e Data Cancelamento compõe meu calendário.

Quando selecionar um mês do meu calendário, quero saber quantos contratos foram vendidos, quantos foram cancelados, quantos desistiram do cancelamento e assim por diante.

Alguém pode me mostrar qual caminho seguir?

Obrigado!

Mercadante

1 Solution

Accepted Solutions
mercadante
Creator
Creator
Author

Srs. Boa tarde!

Consegui resolver em partes meu problema.

Criei uma primeira carga concatenando todos os campos da minha tabela.

Agora eu faço um

[base]

Load

     chave

     .   

     .

residente

     [arquivo];

concatenate (base)

load

chave

*

*

where

not exists ('chave', <campos>);

select

......

Desta forma ele incrementa somente se houve alteração na linha.

Porem me deparei com outro problema e não estou vendo saída.

Um dos campos que compoem a chave é o DIA_VENCIMENTO

peguei um cliente que o dia vencimento era 5 alterei para 10 e minha carga gravou as duas linhas.

Quando eu volto ele para o dia 5 ele não grava mais, pois já tenho esta linha na minha tabela.

Alguém tem ideia de como posso resolver isso?

View solution in original post

14 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Antonio,

Eu fiz uma rotina para tirar uma foto diária do estoque.

Eu tenho um modelo que roda todo dia as 23:55 e grava a posicao em qvd. Ele roda bem rápido (menos de 1minuto...).

Seria pegar a rotina e adaptar para mensal....

//************************************************

//************************************************

ODBC CONNECT TO (XUserId is DeKCPWdNHLaQHBA, XPassword is RbOBHWdNHLaQXfC);

//************************************************

//************************************************

//************************************************

//

Let Data = year(today()1) & '-' & num(month(today()1),'00') & '-' & num(day(today()+1),'00');

//

Item:

LOAD

"COD_EMPRESA" & '-' & "COD_ITEM" as PK_Item,

"QTD_SALDO" as Item_Saldo_Estoque,

"COD_LOCAL" as PK_Local,

"IES_SITUA_QTD" as Item_Estoque_Situacao;

SQL SELECT "COD_EMPRESA","COD_ITEM","COD_LOCAL","IES_SITUA_QTD","QTD_SALDO" FROM LOGIX."ESTOQUE_LOTE_ENDER";

PosicaoEstoque:

LOAD

PK_Item,

PK_Local,

date(today()+1,'DD/MM/YYYY') as PosicaoEstoque_Data,

sum(Item_Saldo_Estoque) as PosicaoEstoque_Saldo

resident Item Where PK_Local = 9 or PK_Local = 1 or PK_Local = 2 or PK_Local = 3 group by PK_Item,PK_Local;

//

trace '$Data';

store PosicaoEstoque into posicaoestoque\PosicaoEstoque$(Data).qvd (qvd);

Att,

AMF

De: Antonio Mercadante

Enviada em: terça-feira, 3 de fevereiro de 2015 16:46

Para: ALESSANDRO FURTADO

Assunto: - Gravar foto mensal

<http://community.qlik.com/?et=watches.email.thread> Qlik Community

Gravar foto mensal

criado por Antonio Mercadante <http://community.qlik.com/people/Mercadante?et=watches.email.thread> em Qlik Brasil - Visualize a discussão completa <http://community.qlik.com/message/706613?et=watches.email.thread#706613>

furtado@farolbi.com.br
mercadante
Creator
Creator
Author

Boa tarde Alessandro!

Se eu gero uma foto diária como você faz, mas validando uma chave para gravar somente as linhas que foram alteradas, terei a seguinte situação

Data da CargaNumero ContratoData Venda ContratoData Pedido Cancelamento

Data Cancelamento

05/05/201400105/05/2014--
09/12/201400105/05/201408/12/2014-
11/01/201500105/05/201408/12/201410/01/2015

Três linhas para o contrato 001, com suas respectivas Data da Carga. A minha grande duvida esta no Calendário que vou montar.

Hoje o painel que esta em produção não gera foto, é um select * diário da base. Eu criei um calendário e o relacionei com os três campos data acima. Data Venda Contrato, Data Pedido Cancelamento e Data Cancelamento. Desta forma quando seleciono um mês no calendário ele irá fazer referencia as três datas minha.

Eu não sei como o painel vai se comportar se e eu mudar e criar o calendário referenciando somente a data da carga.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Antonio,

Eu não tinha prestado atenção ao tipo de tabela. Estes contratos que você tem e que quer uma “foto”, o que pode mudar? Somente o cancelamento?

AMF

De: Antonio Mercadante

Enviada em: terça-feira, 3 de fevereiro de 2015 17:30

Para: ALESSANDRO FURTADO

Assunto: Re: - Gravar foto mensal

<http://community.qlik.com/?et=watches.email.thread> Qlik Community

Gravar foto mensal

resposta de Antonio Mercadante <http://community.qlik.com/people/Mercadante?et=watches.email.thread> em Qlik Brasil - Visualize a discussão completa <http://community.qlik.com/message/706681?et=watches.email.thread#706681>

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Da uma olhada neste post

Canonical Date

AMF

furtado@farolbi.com.br
mercadante
Creator
Creator
Author

No exemplo que dei, somente a data da venda do contrato não muda, o restante pode mudar e varias vezes.

Fora as datas que postei ainda existem outras, por conta disse comentei sobre criar uma chave com todos os campos.

Assim posso comparar diariamente se houve ou não alteração na linha.

O Calendário é comum para todos os campos de data. Carrego cada um através de uma chave e depois faço um inner join na base principal nomeando como Data. Desta forma tenho um campo data comum para todos.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Bom dia.

quem sabe da uma luz.....

Slowly Changing Dimensions

AMF

furtado@farolbi.com.br
thiago_mlg
Creator II
Creator II

Antonio, bom dia!

Criei uma aplicação onde eu guardo uma foto diária das informações, porem seria tranquilo aplicar para o mês. Neste caso vc terá a duplicidade dos dados, porem este ira gerar um problema apenas se a sua base for enorme, Caso não, num terá problema de desempenho pois vc faz antes num qvd e depois fica tranquilo pra puxar pra um qvw.

Basicamente eu faço o seguinte.

Seto uma variável QVD_Date = Text(Date(Today(),'YYYY-MM-DD')); neste caso o ideal seria vc fazer um monthname aii que a data viria ex. fev/2015

aii na hora de gravar a tabela vc usa um: STORE tabela INTO caminho\tabela_$(QVD_Date).qvd;

isso vai gravar o arquivo com a data fev/2015, quando virar o mes mar/2015

e na tabela que vc vai gravar.. vc adiciona um campo no load

load

*,

monthname(today)    as DATA_REFERENCIA

quando vc for puxar a informação vc puxa todos os arquivos: desta forma

load * from

caminho\tabela_*.qvd(qvd);

ai a visão vai carregar os dados em duplicidade..  porem como vc quer trabalhar com a FOTO MENSAL.. vc coloca na visão uma lista contendo DATA_REFERENCIA.. com a ultima data_referencia setado da seguinte forma. que um valor sempre esteja setado e que nao possa setar dois ao mesmo tempo (propriedades da lista)

então dentro da mesma visão vc poderá trabalhar com as fotos simultaneamente, inclusive fazendo comparações entre elas, usando o estado alternativo (alternate state)..

espero ter ajudado..

tambem criei uma rotina para que possa deletar os arquivos mais antigos, ou seja, a partir de uma quantidade de arquivos definida...

se quiser me avise que te explico.

Abraços

rphpacheco
Creator III
Creator III

Veja se este exemplo que montei lhe atende!

Abraço! !

mercadante
Creator
Creator
Author

Bom dia Raphael!

Desculpe minha ignorância, mas nesse seu modelo se eu quiser ver algum status de um mês anterior como ele vai se comportar.

Porque digo isso,

Um cliente pode pedir o cancelamento e desistir posteriormente indeterminadas vezes. Quer dizer que o campo data pedido cancelamento pode ter varias datas.

Não sei se consegui expor minha duvida