Ir para conteúdo
  • 0

Repetir valor até a próxima data válida


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

Pergunta

  • Alunos

Pessoal, bom dia.
Preciso de uma ajuda e não estou achando a aula que fala disso.

Tenho essa coluna com o valor de salário por pessoa. Preciso que o valor seja repetido até a data da próxima alteração.

Exemplo,

O primeiro valor é 1347,38 em 04/04/2022

Esse valor deve se repetir todos os dias até 01/09/2022 que é a próxima data válida.

E assim por diante.

 

image.png.f8e880cdb93abccd6acc14cce6cc821e.png

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Bom dia veja se isso te atende.

 

let
    Fonte = Table.FromRecords({
        [data=#date(2022, 1, 11), numcard=12981, nome="CRISTIANE", SALARIO=1347.38],
        [data=#date(2022, 1, 13), numcard=12981, nome="CRISTIANE", SALARIO=1891.89],
        [data=#date(2022, 1, 15), numcard=12981, nome="CRISTIANE", SALARIO=1891.89],
        [data=#date(2022, 1, 14), numcard=12981, nome="MARIA", SALARIO=1247.38],
        [data=#date(2022, 1, 16), numcard=12981, nome="MARIA", SALARIO=1347.38]
    }),
    Ordenado = Table.Sort(Fonte, {{"nome", Order.Ascending}, {"data", Order.Ascending}}),
    NomesUnicos = List.Distinct(Ordenado[nome]),
    TabelaExpandida = List.Accumulate(
        NomesUnicos,
        Table.FromRecords({}),
        (tabela, nomeAtual) => 
            let
                Filtrado = Table.SelectRows(Ordenado, each [nome] = nomeAtual),
                MinData = List.Min(Filtrado[data]),
                MaxData = List.Max(Filtrado[data]),
                QtdDias = Duration.Days(MaxData - MinData),
                DatasFiltrado = List.Dates(MinData, QtdDias + 1, #duration(1, 0, 0, 0)),
                Expandido = List.Accumulate(
                    DatasFiltrado,
                    tabela,
                    (tabelaInterna, dataAtual) =>
                        let
                            Linha = Table.SelectRows(Filtrado, each [data] <= dataAtual),
                            UltimaLinha = Table.Last(Linha),
                            ListaDeValores = {dataAtual, UltimaLinha[numcard], UltimaLinha[nome], UltimaLinha[SALARIO]},
                            NovoRegistro = Record.FromList(ListaDeValores, {"data", "numcard", "nome", "SALARIO"}),
                            ListaDeRegistros = Table.ToRecords(tabelaInterna)
                        in
                            Table.FromRecords(ListaDeRegistros & {NovoRegistro})
                )
            in
                Expandido
    )
in
    TabelaExpandida

image.png.71ef6071af2f74b0fd11566e4de9dd7c.png

  • Like 2
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, danilo1185 disse:

Pessoal, bom dia.
Preciso de uma ajuda e não estou achando a aula que fala disso.

Tenho essa coluna com o valor de salário por pessoa. Preciso que o valor seja repetido até a data da próxima alteração.

Exemplo,

O primeiro valor é 1347,38 em 04/04/2022

Esse valor deve se repetir todos os dias até 01/09/2022 que é a próxima data válida.

E assim por diante.

 

image.png.f8e880cdb93abccd6acc14cce6cc821e.png

Olá Danilo, tudo certo?

Qual o motivo de querer repetir esses valores? Tem algum cálculo específico que quer desenvolver? Poderia dar mais detalhes por favor?

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