Código M Language para Editor Avançado do Power Query
Continuando a série de vídeos sobre as consultas de API na OMIE, hoje será sobre como estruturar a consulta Orçamento Caixa.
Esta consulta retorna os valores Orçados X Realizados.
Para estruturar esta consulta, é preciso criar os períodos (Mês e Ano) conforme documentação.
O código abaixo está com os dados da OMIE, portanto o retorno do JSON será de acordo com o app_key e app_secret informados.
let
Request = (Ano as number, Mes as number) =>
let
body =
"{
""call"":""ListarOrcamentos"",
""app_key"":""38333295000"",
""app_secret"":""4cea520a0e2a2ecdc267b75d3424a0ed"",
""param"":[
{
""nAno"":"&Text.From(Ano)&",
""nMes"":"&Text.From(Mes)&"
}
]
}"
,
Consulta =
Json.Document(
Web.Contents(
"https://app.omie.com.br",
[
RelativePath="api/v1/financas/caixa/",
Headers=[#"Content-Type"="application/json"],
Content=Text.ToBinary(body)
]
)
)
in
Consulta,
DateMin = #date(2018,01,01),
AnoMax = Date.Year(DateTime.LocalNow()) + 1,
DateMax = #date(AnoMax,12,31),
Duration = Duration.Days( DateMax - DateMin ) + 1,
ListDates = List.Dates(DateMin, Duration, #duration(1,0,0,0)),
#"Converted to Table" = Table.FromList(ListDates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type2" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type datetime}}),
#"Inserted Month" = Table.AddColumn(#"Changed Type2", "Mes", each Date.Month([Column1]), Int64.Type),
#"Inserted Year" = Table.AddColumn(#"Inserted Month", "Ano", each Date.Year([Column1]), Int64.Type),
#"Renamed Columns" = Table.RenameColumns(#"Inserted Year",{{"Column1", "Data"}}),
#"Removed Duplicates" = Table.Distinct(#"Renamed Columns", {"Mes", "Ano"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Duplicates", each ([Ano] = 2021) and ([Mês] = 1 or [Mês] = 2 or [Mês] = 3 or [Mês] = 4)),
#"Invoked Custom Function" = Table.AddColumn(#"Removed Duplicates", "Finan_Orcado_Realizado", each Request([Ano], [Mes])),
#"Expanded {0}" = Table.ExpandRecordColumn(#"Invoked Custom Function", "Finan_Orcado_Realizado", {"ListaOrcamentos"}, {"ListaOrcamentos"}),
#"Expanded {0}1" = Table.ExpandListColumn(#"Expanded {0}", "ListaOrcamentos"),
#"Expanded {0}2" = Table.ExpandRecordColumn(#"Expanded {0}1", "ListaOrcamentos", {"cCodCateg", "cDesCateg", "nValorPrevisto", "nValorRealilzado"}, {"cCodCateg", "cDesCateg", "nValorPrevisto", "nValorRealilzado"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded {0}2",{{"Data", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "LinhaZerada", each [nValorPrevisto] = 0 and [nValorRealilzado] = 0),
#"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([LinhaZerada] = false)),
#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1",{"LinhaZerada", "Mes", "Ano"})
in
#"Removed Columns1"
O código acima eu expliquei no vídeo postado no YouTube:
Caso queira conhecer outras consultas da OMIE, você pode conferir aqui.
Neste link, tem o script de uma consulta paginada e com incremento de páginas conforme o aumento de registros.