Forum Discussion
Adicionar linhas entre data inicio e data fim (loop while)
- Anonymous5 years ago
Hi v-stephen-msft ,
thanks for your suggestion, but it's not like what I expected.Deixo meu agradecimento também ao Gil Raviv, do datachant que compartilhou comigo algumas possibilidades que certamente usarei no futuro.
Bom, eu cheguei a solução que esperava no dia que postei a pergunta, só não havia conseguido passar para compartilhar a solução. De forma resumida, fiz um loop com list.generate() onde incrementava dois valores dependendo da condição, algo mais parecido com um loop aninhado. Hora incrementava a data (loop interno) hora incrementava a linha (loop externo).Desta forma a iteração funciona corretamente, mas é indispensável a utilização da tabela em buffer para conjuntos grandes.
Última observação, a função list.generate() possúi um terceiro argumento opcional que permite especificar o que será retornado, podemdo assim omitir a coluna i (identificador da linha) e a coluna fim que não possuem mais utilidade.
Hi v-stephen-msft ,
thanks for your suggestion, but it's not like what I expected.
Deixo meu agradecimento também ao Gil Raviv, do datachant que compartilhou comigo algumas possibilidades que certamente usarei no futuro.
Bom, eu cheguei a solução que esperava no dia que postei a pergunta, só não havia conseguido passar para compartilhar a solução. De forma resumida, fiz um loop com list.generate() onde incrementava dois valores dependendo da condição, algo mais parecido com um loop aninhado. Hora incrementava a data (loop interno) hora incrementava a linha (loop externo).
Desta forma a iteração funciona corretamente, mas é indispensável a utilização da tabela em buffer para conjuntos grandes.
Última observação, a função list.generate() possúi um terceiro argumento opcional que permite especificar o que será retornado, podemdo assim omitir a coluna i (identificador da linha) e a coluna fim que não possuem mais utilidade.
Bom dia, eu tentei essa solução que você sugeriu, porém não tive sucesso.
let
Fonte = Python.Execute("import pandas as pd#(lf)#(lf)#(lf)lista = { ""Id"":[1,2,2,3],#(lf) ""Colaborador"":[""João"",""José"",""Mario"",""Vicente""],#(lf) ""Data Inicio"":[""20/03/2023"",""29/03/2023"",""01/04/2023"",""15/04/2023""],#(lf) ""Data Fim"":[""10/04/2023"", ""15/04/2023"",""15/04/2023"",""15/05/2023""]#(lf)#(lf)}#(lf)#(lf)df = pd.DataFrame(lista)#(lf)#(lf)print(df)"),
df1 = Fonte{[Name="df"]}[Value],
#"Tipo Alterado" = Table.TransformColumnTypes(df1,{{"Data Inicio", type date}, {"Data Fim", type date}}),
Tab = Table.Buffer(#"Tipo Alterado"),
#"Numero Linhas" = Table.RowCount(tab),
#"Adição Datas" =
List.Generate(
()=> [i=0,Id = tab{i}[Id], Colaborador = tab{i}[Colaboador], dtini=tab{i}[Data Inicio],dtfim=tab{i}[Data Fim]],
each i < #"Numero Linhas",
each
if [Data Inicio] < [Data Fim]
then [i=[i], Id = [Id], Colaborador = [Colaboador], dtini=Date.AddDays([Data Inicio],1),dtfim=[Data Fim]]
else [i=[i]+1,Id = tab{i}[Id], Colaborador = tab{i}[Colaboador], dtini=tab{i}[Data Inicio],dtfim=tab{i}[Data Fim]]
)
in
#"Adição Datas"
tentei fazer desta forma, porém recebo um erro