Ir para conteúdo
  • 0

Formatação no Power Query - aparecer ano/nr da semana


Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos
Postado (editado)

Prezados

Estou com um caso onde preciso formatar a informação de Ano/Semana do Ano.

Esta semana do ano é obtida para atender nossa área comercial, onde a partir da Semana do Ano for 48 ou maior, considerar a semana 1 do ano seguinte e se for inferior à semana 48, somar a semana+1.

Assim, a semana 1 de um ano, para a área comercial já é a semana 2 e assim por diante.

Ele até dá certo quando o número da semana é até 12 ou acima de 48.

Segue arquivo txt com o calendário.

Poderiam me auxiliar nesta solução?

Desde já agradeço a atenção.

Muitíssimo obrigado

Calendario.txt

Editado por Marcelo_Matesco
inserir o agradecimento

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado

Da uma olhada e vê se este codigo atende:

 

let
    // Definir o início e fim do período
    StartDate = #date(2021, 12, 26),
    EndDate = #date(2025, 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 "Semana Comercial"
    AddWeekComlColumn = Table.AddColumn(AddMonthNameColumn, "Semana_Coml", each 
        let
            Data = [Data],
            Ano = Date.Year(Data),
            Semana = Date.WeekOfYear(Data),
            SemanaComercial = if Semana >= 48 then Semana - 47 else Semana + 1,
            AnoComercial = if Semana >= 48 then Ano + 1 else Ano,
            SemanaComlFormatada = Text.From(AnoComercial) & "-S" & Text.PadStart(Text.From(SemanaComercial), 2, "0")
        in
            SemanaComlFormatada
    ),

    // Alterar tipos de dados
    TipoAlterado = Table.TransformColumnTypes(AddWeekComlColumn,{{"Data", type date}, {"Dia da Semana", type text}, {"Nome do Mês", type text}, {"Semana_Coml", type text}, {"Ano", Int64.Type}, {"Mês", Int64.Type}, {"Dia", Int64.Type}}),
    
    // Adicionar coluna de "Semana do Ano"
    SemanaAno = Table.AddColumn(TipoAlterado, "Semana do Ano", each Date.WeekOfYear([Data]), Int64.Type)
in
    SemanaAno

image.png.f4f27da2d6c758f47863723ec19b64bb.png

  • Thanks 1
  • 0
  • Alunos
Postado

@Alex Pereira

Fiz apenas uma pequena mudança, pois do jeito que estava, por exemplo, a semana 49 de 2023, estava como 2024-S02, semana 50 -> 2024-S03, eu precisava que a partir da 49, ficasse tudo 2024-S01.

 // Adicionar coluna de "Semana Comercial"
    AddWeekComlColumn = Table.AddColumn(AddCycleColumn, "Semana_Coml", each 
        let
            Data = [Data],
            Ano = Date.Year(Data),
            Semana = Date.WeekOfYear(Data),
            SemanaComercial = if Semana <= 47 then Semana + 1 else 1,
            AnoComercial = if Semana >= 48 then Ano + 1 else Ano,
            SemanaComlFormatada = Text.From(AnoComercial) & "-S" & Text.PadStart(Text.From(SemanaComercial), 2, "0")
        in
            SemanaComlFormatada

 

Agradeço imensamente, sem o seu auxílio não teria resolvido este meu problema.

Muito obrigado. Ótima semana

  • Like 1

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...