Ir para conteúdo
  • 0

como criar uma coluna onde tem o ciclo baseado na data


Marcelo_Matesco
Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos

Prezados

No local onde trabalho, o período de fechamento de vendas é do dia 26 de um mês até 25 do seguinte, chamamos de "Ciclo".
Exemplo: vendas no período de 26/01/2024 até 25/02/2024 - Ciclo "Fev/2024" 26/02/2024 até 25/03/2024 - "Mar/2024"

Tentei várias maneiras na tabela calendário mas não consegui criar esta coluna, é possível?

Agradeço desde já.
Obrigado

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
23 minutos atrás, Marcelo_Matesco disse:

Prezados

No local onde trabalho, o período de fechamento de vendas é do dia 26 de um mês até 25 do seguinte, chamamos de "Ciclo".
Exemplo: vendas no período de 26/01/2024 até 25/02/2024 - Ciclo "Fev/2024" 26/02/2024 até 25/03/2024 - "Mar/2024"

Tentei várias maneiras na tabela calendário mas não consegui criar esta coluna, é possível?

Agradeço desde já.
Obrigado

Experimente esse codigo:

 

let
    // Definir o início e fim do período
    StartDate = #date(2023, 1, 1),
    EndDate = #date(2024, 12, 31),
    
    // Gerar lista de datas
    NumberOfDays = Duration.Days(EndDate - StartDate) + 1,
    DateList = List.Dates(StartDate, NumberOfDays, #duration(1, 0, 0, 0)),
    
    // Criar tabela de calendário
    CalendarTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Data"}),
    
    // Adicionar colunas adicionais
    AddYearColumn = Table.AddColumn(CalendarTable, "Ano", each Date.Year([Data])),
    AddMonthColumn = Table.AddColumn(AddYearColumn, "Mês", each Date.Month([Data])),
    AddDayColumn = Table.AddColumn(AddMonthColumn, "Dia", each Date.Day([Data])),
    AddDayOfWeekColumn = Table.AddColumn(AddDayColumn, "Dia da Semana", each Date.DayOfWeekName([Data])),
    AddMonthNameColumn = Table.AddColumn(AddDayOfWeekColumn, "Nome do Mês", each Date.ToText([Data], "MMMM")),
    
    // Adicionar coluna de "Ciclo"
    AddCycleColumn = Table.AddColumn(AddMonthNameColumn, "Ciclo", each 
        let
            Date = [Data],
            Year = Date.Year(Date),
            Month = Date.Month(Date),
            Day = Date.Day(Date),
            CycleMonth = if Day >= 26 then Month else Month - 1,
            CycleYear = if CycleMonth = 0 then Year - 1 else Year,
            CycleMonthName = Date.ToText(#date(CycleYear, if CycleMonth = 0 then 12 else CycleMonth, 1), "MMM/yyyy")
        in
            CycleMonthName
    )
in
    AddCycleColumn

image.png.51afc63002a759b6e6c6661f75dfc8f7.png

Editado por Alex Pereira
  • Like 1
  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
47 minutos atrás, Alex Pereira disse:

Experimente esse codigo:

 

let
    // Definir o início e fim do período
    StartDate = #date(2023, 1, 1),
    EndDate = #date(2024, 12, 31),
    
    // Gerar lista de datas
    NumberOfDays = Duration.Days(EndDate - StartDate) + 1,
    DateList = List.Dates(StartDate, NumberOfDays, #duration(1, 0, 0, 0)),
    
    // Criar tabela de calendário
    CalendarTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Data"}),
    
    // Adicionar colunas adicionais
    AddYearColumn = Table.AddColumn(CalendarTable, "Ano", each Date.Year([Data])),
    AddMonthColumn = Table.AddColumn(AddYearColumn, "Mês", each Date.Month([Data])),
    AddDayColumn = Table.AddColumn(AddMonthColumn, "Dia", each Date.Day([Data])),
    AddDayOfWeekColumn = Table.AddColumn(AddDayColumn, "Dia da Semana", each Date.DayOfWeekName([Data])),
    AddMonthNameColumn = Table.AddColumn(AddDayOfWeekColumn, "Nome do Mês", each Date.ToText([Data], "MMMM")),
    
    // Adicionar coluna de "Ciclo"
    AddCycleColumn = Table.AddColumn(AddMonthNameColumn, "Ciclo", each 
        let
            Date = [Data],
            Year = Date.Year(Date),
            Month = Date.Month(Date),
            Day = Date.Day(Date),
            CycleMonth = if Day >= 26 then Month else Month - 1,
            CycleYear = if CycleMonth = 0 then Year - 1 else Year,
            CycleMonthName = Date.ToText(#date(CycleYear, if CycleMonth = 0 then 12 else CycleMonth, 1), "MMM/yyyy")
        in
            CycleMonthName
    )
in
    AddCycleColumn

image.png.51afc63002a759b6e6c6661f75dfc8f7.png

@Alex Pereira
Quase certo, o correto é que até dia 25/01/2023, faz parte do ciclo Jan/2023 e a partir do dia 26, já faz parte do próximo ciclo Fev/2024.

Outra coisa, quanto tentei mudar as datas para deixar no ciclo correto, todo ano os dias 26 a 31/12, ficam com erro, ele não consegue reconhecer que faz parte do ciclo de Jan do próximo ano.

Fiz várias variações no seu código mas não consegui resolver esta questão dos último dias de Dezembro.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

  // Adicionar coluna de "Ciclo"
    AddCycleColumn = Table.AddColumn(AddMonthNameColumn, "Ciclo", each 
        let
            Date = [Data],
            Year = Date.Year(Date),
            Month = Date.Month(Date),
            Day = Date.Day(Date),
            CycleMonth = if Day < 26 then Month else Month + 1,
            CycleYear = if CycleMonth = 13 then Year + 1 else Year,
            CycleMonthName = Date.ToText(#date(CycleYear, if CycleMonth = 13 then 1 else CycleMonth, 1), "MMM/yyyy")
        in
            CycleMonthName
    )
in
    AddCycleColumn

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...