Eu não preciso coletar todos os dias, pois o arquivo traz o histórico dos últimos 30 dias, de modo que eu posso ficar até 30 dias sem coletar que consigo recuperar os dias perdidos, como justamente ocorreu agora no período de Carnaval.
No meu caso, eu uso o Excel do Microsoft 365 que consegue criar consultas e puxar dados da Web, e interpretar o arquivo json. Aqui fica na aba “Dados” → “Obter Dados” → “Da Web”. Dali basta colocar o endereço do json e depois ainda tem que configurar algumas poucas etapas na consulta para ele organizar os dados na(s) tabela(s) de interesse.
Quando a gente clica para atualizar os dados ele puxa os dados dos últimos 30 dias (do arquivo json). Daí pra eu começar a armazenar dados mais antigos o que eu precisei fazer foi mesclar duas consultas, uma delas puxando os dados novos, e a outra puxando da própria planilha que continha os dados antes de fazer a atualização…
Mais detalhes
A minha consulta que pega somente os dados dos últimos 30 dias se chama “price_history” e tem o seguinte código:
let
Fonte = Json.Document(Web.Contents("https://explorer.nucoin.com.br/files/blockchain/price_history.json")),
#"Convertido para Tabela" = Record.ToTable(Fonte),
Value = #"Convertido para Tabela"{1}[Value],
#"Convertido para Tabela1" = Record.ToTable(Value),
#"Value Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela1", "Value", {"min", "max", "avg", "totalLiquidity","brlBalance","ncnBalance"}, {"Value.min", "Value.max", "Value.avg", "Value.totalLiquidity","Value.brlBalance","Value.ncnBalance"}),
#"Tipo Alterado" = Table.TransformColumnTypes(#"Value Expandido",{{"Name", type date}, {"Value.min", type number}, {"Value.max", type number}, {"Value.avg", type number}, {"Value.totalLiquidity", type number}}),
#"Colunas Renomeadas" = Table.RenameColumns(#"Tipo Alterado",{{"Name", "price.Date"}, {"Value.min", "price.min"}, {"Value.max", "price.max"}, {"Value.avg", "price.avg"}, {"Value.totalLiquidity", "price.totalLiquidity"}})
in
#"Colunas Renomeadas"
E a minha consulta que armazena o histórico eu chamei de "GrandeHistorico"tem o seguinte código:
let
Fonte = Excel.CurrentWorkbook(){[Name="GrandeHistorico"]}[Content],
#"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"price.Date", type date}, {"price.min", type number}, {"price.max", type number}, {"price.avg", type number}, {"price.totalLiquidity", type number}, {"Value.brlBalance", type number}, {"Value.ncnBalance", type number}}),
#"Outras Colunas Removidas" = Table.SelectColumns(#"Tipo Alterado",{"price.Date", "price.min", "price.max", "price.avg", "price.totalLiquidity", "Value.brlBalance", "Value.ncnBalance"}),
#"Consulta apensada" = Table.Combine({price_history,#"Outras Colunas Removidas"}),
#"Duplicatas Removidas" = Table.Distinct(#"Consulta apensada", {"price.Date"}),
#"Linhas Classificadas" = Table.Sort(#"Duplicatas Removidas",{{"price.Date", Order.Ascending}})
in
#"Linhas Classificadas"
Pra começar a funcionar esta acima
antes precisa ter feito a consulta price_history pelo menos uma vez, duplicar a planilha “price_history” e renomear a cópia para “GrandeHistorico”. Pode ser que tenha um jeito muito mais inteligente de fazer isso, mas nas experimentações que eu fiz foi assim que saiu…
Pra quem gosta de usar o Google Sheets, já rolaram algumas dicas aqui e aqui que podem ajudar a montar.