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

SAFRA DE 45 DIAS

Galera boa noite,

Como consigo fazer uma safra de 45 dias?

Exemplo:

Tenho um cliente que mudou a analise dos produtos e agora quer por SAFRA

Antes disso realizava as analises por dia, semana, mês, trimestre e ano.

Agora preciso analisar por SAFRA de 45 dias, então como faço isso?

Tem algum comando especifico para SAFRA?

exemplo:

LOAD

DATA

PRODUTO

VALOR

QTD

FROM MEU QVD

10 Replies
mauroponte
Creator II
Creator II

Jeferson,

Nao entendi muito bem.  Seu cliente quer saber a soma de valor e qtd dos ultimos 45 dias partindo de uma data informada? ou da data atual? é isso?

Clever_Anjos
Employee
Employee

O que é uma SAFRA? Poderia detalhar melhor?

Entendo se você tenha um tabela Calendario seria uma nova coluna com a logica necessária

Not applicable
Author

Buenas meu caro Clever, caro Mauro

SAFRA: periodo de validade da carteira de produto, exemplo, recebo uma base de clientes que posso trabalhar somente em determinado periodo, tipo: do dia 01/10 ao dia 15/11 on de receberei uma nova safra de clientes e depois de algum tempo terei que fazer a analise de ambas as safras ou de de safras passadas...então SAFRA é o periodo de validade da carteira de clientes.

Tem alguma função que agrupa 45 dias? tipo do 1 ao 45 ? o máximo que consegui foi 31 dias ou selecionando dois meses e no ultimo selecionando até o dia 15

calendario.pngcalendario2.png

mauroponte
Creator II
Creator II

Jeferson,

Tente:

sum({<SeuCampoData={">=$(=date(SeuCampoDia&'/'&num(SeuCampoMes,'00')&'/'&SeuCampoAno,'DD/MM/YYYY'))<=$(=date(SeuCampoDia&'/'&num(SeuCampoMes,'00')&'/'&SeuCampoAno,'DD/MM/YYYY')+45)"},SeuCampoMes=,SeuCampoAno=,SeuCampoDia=>} SeuCampoValor)

Quando voce selecionar ano, mes e dia deve contar a data de referencia e somar tudo dessa data até a data de 45 dias para frente.

Espero que resolva seu problema.

Clever_Anjos
Employee
Employee

Tente criar um campo assim:

LOAD

  Data,

  'Safra ' & num(Floor((Data - YearStart(Data))/45)) as SAFRA;

LOAD

  Date(Today()-RecNo()) as Data

AutoGenerate 300;

Capturar.PNG

Not applicable
Author

Ótimo, quase perfeito só preciso de um ajuste:

Clever se eu precisar alterar a data de começo da safra por algum motivo pontual exemplo: atraso no recebimento da base de dados tipo minha safra terminou 30/03 e recebi uma nova safra apenas dia 03/04 como faço para dar start nesta nova safra a partir da data de carregamento e ja vendo por esta ótica, no lugar do campo data posso usar uma variavel que receba a data de carregamento(importação da base)? sendo assim a variavel podia ler a data da carga e neste campo data que você criou usar essa variavel e estartar a partir desta data...mas não sei como colocar isso na pratica

Clever_Anjos
Employee
Employee

Eu usei o primeiro dia do ano, você poderia usar qualquer valor

Tipo

LET DataRef=Num(Date#('03/04/2016','DD/MM/YYYY'));


LOAD

  Data,

  'Safra ' & num(Floor((Data - $(DataRef))/45))  as SAFRA;

LOAD

  Date(Today()-RecNo()) as Data

AutoGenerate 300;

Not applicable
Author

Tu é o cara brother...

Então o scrip aqui é para pegar o ano é isso?

LOAD

  Date(Today()-RecNo()) as Data

AutoGenerate 300;

aqui eu crio a variavel e digo que é essa data ok? e se eu colocar o meu campo de importação da base  nesta variavel vai começar a contar os 45d a partir dai é isso?

LET DataRef=Num(Date#('03/04/2016','DD/MM/YYYY'));


Bom fiz assim por enquanto:

//Seleciona a maior data de carregamento

SAFRA2MAXDATE:

load Timestamp(max(DIV_DATAMATRIZ),'DD/MM/YYYY hh:mm:ss')as MAXDATA

FROM

(txt, codepage is 1252, embedded labels, delimiter is ';', msq);

//------------------------------------------------------

//variavel para pegar na SAFRA2MAXDATE a ultima data de carregamento

LET vCarga = Peek('MAXDATA',0,SAFRA2MAXDATE);

//------------------------------------------------------

drop table SAFRA2MAXDATE;

-------------------------------------------------------------------

safra.png

safra2.pngsafra3.png

Coloquei a SAFRA para gerar usando a tabela historico onde eu armazeno todas as ocorrencias assim saberei o que aconteceu nas SAFRAS de acordo com as ocorrencias.

Mas como não importei nada no Qlik antes do dia 03/10 não deveria aparecer só uma SAFRA? tIPO DO DIA 03/10 até 45 dias para frente? ou até hoje?

Tchê não entendi porque aparece Safra 947 e 948

Bom vou dar uma boa analisada agora antes de pedir agua se não conseguir eu volto...

Valew

Clever_Anjos
Employee
Employee

1) "Então o scrip aqui é para pegar o ano é isso?

LOAD

  Date(Today()-RecNo()) as Data

AutoGenerate 300;"

Não, isso gera um pequeno calendário como exemplo

2)  "Tchê não entendi porque aparece Safra 947 e 948"

É porque você está usando campos datahora. (leia isso por favor Campos data/hora, também conhecidos como "Monstros S/A"). Trabalhe com campo data "puro" para que os cálculos sejam corretos

SAFRA2MAXDATE:

load Floor(max(DIV_DATAMATRIZ))as MAXDATA

FROM

(txt, codepage is 1252, embedded labels, delimiter is ';', msq);