Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
franklima1950
Contributor II
Contributor II

DATA

Tenho um campo que  é uma DATA, supondo que venha no resultado dia 16/03/2022, que é uma QUARTA, eu preciso transformar essa data na próxima SEGUNDA FEIRA(21/03/2022), e todas as datas de um certo cliente tenho que converter pra próxima segunda feira, é possível?

 

 

 

Labels (3)
2 Solutions

Accepted Solutions
LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Creio que você consiga fazer da seguinte forma:

 

Teste:
LOAD
  *,
  WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
  Cod,
  data,
  WeekDay(data) as DiaSemana,
  If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
  FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);

 

Resultado:

LucasBarbosa_0-1647438671078.png

Segue a planilha que usei para testar.

 

Edit: Corrigindo problema caso o dia da semana dê em um domingo.

 

 

View solution in original post

LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:

 

iF(Cliente = 'A',
    	If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
    Date(data)) as NovaData

 

Traduzindo, 

Se o cliente for igual a "A"

Então a operação será realizada(Jogaremos todos para a próxima segunda feira)

Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.

Portanto, o resultado será o seguinte:

LucasBarbosa_0-1647452062660.png

Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.

 

 

View solution in original post

3 Replies
LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Creio que você consiga fazer da seguinte forma:

 

Teste:
LOAD
  *,
  WeekDay(NovaData) AS DiaSemanaNovaData;
LOAD
  Cod,
  data,
  WeekDay(data) as DiaSemana,
  If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)) as NovaData
  FROM [lib://AttachedFiles/TesteData.xlsx]
(ooxml, embedded labels, table is Planilha1);

 

Resultado:

LucasBarbosa_0-1647438671078.png

Segue a planilha que usei para testar.

 

Edit: Corrigindo problema caso o dia da semana dê em um domingo.

 

 

franklima1950
Contributor II
Contributor II
Author

Entendi, dá certo mesmo! Mas me responde algo, preciso limitar a partir de um outro campo quais datas serão convertidas pra segunda feira, sabe dizer como ficaria a sintaxe? 

LucasBarbosa
Partner - Contributor II
Partner - Contributor II

Não sei se entendi a pergunta, mas supondo que você queira mudar apenas as datas dos clientes "A" dentro da base anexada, uma das formas de fazer é a seguinte:

 

iF(Cliente = 'A',
    	If(num(weekday(data)) = 0, data+1,Date((data + 7) - (num(weekday(data))) + 1)),
    Date(data)) as NovaData

 

Traduzindo, 

Se o cliente for igual a "A"

Então a operação será realizada(Jogaremos todos para a próxima segunda feira)

Senão a operação não será realizada, logo, continuará com o mesmo valor de antes.

Portanto, o resultado será o seguinte:

LucasBarbosa_0-1647452062660.png

Caso a sua regra inclua mais de um campo (Por exemplo, uma combinação entre Cliente e Cidade), sugiro que antes de iniciar a transformação citada acima, você transforme essa combinação em apenas um campo com o objetivo de diminuir o número de operações lógicas e de operadores relacionais.