Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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?
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>
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 Carga | Numero Contrato | Data Venda Contrato | Data Pedido Cancelamento | Data Cancelamento |
---|---|---|---|---|
05/05/2014 | 001 | 05/05/2014 | - | - |
09/12/2014 | 001 | 05/05/2014 | 08/12/2014 | - |
11/01/2015 | 001 | 05/05/2014 | 08/12/2014 | 10/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.
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>
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.
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
Veja se este exemplo que montei lhe atende!
Abraço! !
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