Ir para conteúdo
  • 0

Linguagem M Avançado: Tabela de Períodos - Script


Luiz Cruz
Ir para solução Solucionado por Luiz Cruz ,

Pergunta

  • Alunos

Boa noite a todos!

Gostaria de saber, se algum colega, teria o Script do vídeo Linguagem M Avançado: Tabelas de períodos variáveis no Power Bi | Power Query, brilhantemente apresentao pelo colega Marcio Santos, que pudesse compartilhar.

Já deixo meu prévio agradecimento!
Abs
 

Tabela de Períodos.png

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 2
  • Alunos

Veja assim


let
    //Criando minha funcao encapsulada
    fnGerarPeriodos = (Periodo as text, DataInicial as date, DataFinal as date, Ordem as number)=>
        let
            QtdDias = Duration.Days(DataFinal-DataInicial)+1,
            Datas = List.Dates(DataInicial, QtdDias, #duration(1,0,0,0)),
            Cabecalho = type table[Data=date, Periodo=text, Ordem=number],
            Lista = List.Transform(
                Datas,
                each
                {
                    _,
                    Periodo,
                    Ordem
                }
            ),
            Tabela = #table(Cabecalho, Lista)
        in
            Tabela
,
    //Hoje e Ontem
    DtHoje = DateTime.Date(DateTime.LocalNow()),
    DtOntem = Date.AddDays(DtHoje, -1),

    //Semana Atual
    InicioSemana = Date.StartOfWeek(DtHoje),
    FimSemana = Date.EndOfWeek(DtHoje),

    //Semana Passada - 7 dias
    InicioSemanaPassada = Date.AddDays(InicioSemana, -7),
    FimSemanaPassada = Date.AddDays(FimSemana, -7),

    //Duas Semanas Antes - 15 dias
    InicioDuasSemanaPassada = Date.AddDays(InicioSemanaPassada, -7),
    FimDuasSemanaPassada = Date.AddDays(FimSemanaPassada, -7),

    //Mes Atual
    InicioMes = Date.StartOfMonth(DtHoje),
    FimMes = Date.EndOfMonth(DtHoje),

    //Mes Anterior
    InicioMesAnterior = Date.AddMonths(Date.StartOfMonth(DtHoje), -1),
    FimMesAnterior = Date.EndOfMonth(InicioMesAnterior),

    //Este Ano
    InicioANo = Date.StartOfYear(DtHoje),
    FimAno = Date.EndOfYear(DtHoje),

    Intervalos = 
    {
        {"Hoje",                DtHoje, DtHoje, 1 },
        {"Ontem",               DtOntem, DtOntem , 2},
        {"Esta semana",         InicioSemana, FimSemana, 3 },
        {"Últimos 7 dias",      Date.AddDays(DtHoje, -6), DtHoje, 4 },
        {"Semana passada",      InicioSemanaPassada, FimSemanaPassada, 5 },
        {"Últimos 15 dias",     Date.AddDays(DtHoje, -14), DtHoje, 6 },
        {"Incio Mês até ontem", InicioMes, DtOntem, 7},
        {"Este mês",            InicioMes, FimMes, 8 },
        {"Últimos 30 dias",     Date.AddDays(DtHoje, -29), DtHoje, 9 },
        {"Mês passado",         InicioMesAnterior, FimMesAnterior, 10 },
        {"Este ano",            InicioANo, FimAno, 11 },
        {"Ano passado",         Date.AddYears(InicioANo, -1), Date.AddYears(FimAno, -1), 12}
    }
//Aplicando a função de periodos a partir da lista movel de datas
    ,Períodos =List.Transform(
        Intervalos,
        each
        fnGerarPeriodos(_{0},_{1},_{2},_{3})
    ),
    Tabela = Table.Combine(Períodos)
in
    Tabela

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
8 horas atrás, Davi Rodolfo disse:

Veja assim


let
    //Criando minha funcao encapsulada
    fnGerarPeriodos = (Periodo as text, DataInicial as date, DataFinal as date, Ordem as number)=>
        let
            QtdDias = Duration.Days(DataFinal-DataInicial)+1,
            Datas = List.Dates(DataInicial, QtdDias, #duration(1,0,0,0)),
            Cabecalho = type table[Data=date, Periodo=text, Ordem=number],
            Lista = List.Transform(
                Datas,
                each
                {
                    _,
                    Periodo,
                    Ordem
                }
            ),
            Tabela = #table(Cabecalho, Lista)
        in
            Tabela
,
    //Hoje e Ontem
    DtHoje = DateTime.Date(DateTime.LocalNow()),
    DtOntem = Date.AddDays(DtHoje, -1),

    //Semana Atual
    InicioSemana = Date.StartOfWeek(DtHoje),
    FimSemana = Date.EndOfWeek(DtHoje),

    //Semana Passada - 7 dias
    InicioSemanaPassada = Date.AddDays(InicioSemana, -7),
    FimSemanaPassada = Date.AddDays(FimSemana, -7),

    //Duas Semanas Antes - 15 dias
    InicioDuasSemanaPassada = Date.AddDays(InicioSemanaPassada, -7),
    FimDuasSemanaPassada = Date.AddDays(FimSemanaPassada, -7),

    //Mes Atual
    InicioMes = Date.StartOfMonth(DtHoje),
    FimMes = Date.EndOfMonth(DtHoje),

    //Mes Anterior
    InicioMesAnterior = Date.AddMonths(Date.StartOfMonth(DtHoje), -1),
    FimMesAnterior = Date.EndOfMonth(InicioMesAnterior),

    //Este Ano
    InicioANo = Date.StartOfYear(DtHoje),
    FimAno = Date.EndOfYear(DtHoje),

    Intervalos = 
    {
        {"Hoje",                DtHoje, DtHoje, 1 },
        {"Ontem",               DtOntem, DtOntem , 2},
        {"Esta semana",         InicioSemana, FimSemana, 3 },
        {"Últimos 7 dias",      Date.AddDays(DtHoje, -6), DtHoje, 4 },
        {"Semana passada",      InicioSemanaPassada, FimSemanaPassada, 5 },
        {"Últimos 15 dias",     Date.AddDays(DtHoje, -14), DtHoje, 6 },
        {"Incio Mês até ontem", InicioMes, DtOntem, 7},
        {"Este mês",            InicioMes, FimMes, 8 },
        {"Últimos 30 dias",     Date.AddDays(DtHoje, -29), DtHoje, 9 },
        {"Mês passado",         InicioMesAnterior, FimMesAnterior, 10 },
        {"Este ano",            InicioANo, FimAno, 11 },
        {"Ano passado",         Date.AddYears(InicioANo, -1), Date.AddYears(FimAno, -1), 12}
    }
//Aplicando a função de periodos a partir da lista movel de datas
    ,Períodos =List.Transform(
        Intervalos,
        each
        fnGerarPeriodos(_{0},_{1},_{2},_{3})
    ),
    Tabela = Table.Combine(Períodos)
in
    Tabela

 

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...