Código M Language para Editor Avançado do Power Query
Nas últimas semanas quem utiliza a API da OMIE no Power BI pode ter encontrado alguns problemas na atualização das consultas.
Se você começou a sofre com erros nas atualizações no Power BI Online (Serviços), aqui tem um caminho para resolver o problema nas conexões.
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 = (Pagina as number) =>
let
body =
"{
""call"":""PesquisarCidades"",
""app_key"":""38333295000"",
""app_secret"":""4cea520a0e2a2ecdc267b75d3424a0ed"",
""param"":[
{
""pagina"":"&Text.From(Pagina)&",
""registros_por_pagina"":50
}
]
}"
,
Consulta =
Json.Document(
Web.Contents(
"https://app.omie.com.br",
[
RelativePath="api/v1/geral/cidades/",
Headers=[#"Content-Type"="application/json"],
Content=Text.ToBinary(body)
]
)
),
ListaCidades = Consulta[lista_cidades],
#"Converted to Table" = Table.FromList(ListaCidades, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded {0}" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"cCod", "cNome", "cUF", "nCodIBGE", "nCodSIAFI"}, {"cCod", "cNome", "cUF", "nCodIBGE", "nCodSIAFI"})
in
#"Expanded {0}"
in
Request
Vale lembrar que este código é referente ao vídeo onde mostrei como conectar na API da OMIE:
Seguindo a lógica do código anterior e deixando a consulta automática.
Neste caso, precisamos criar apenas uma tabela no Power BI para cada consulta na OMIE.
Não é necessário criar uma função e depois chamá-la na tabela com páginas.
let
Request = (Pagina as number) =>
let
body =
"{
""call"":""PesquisarCidades"",
""app_key"":""38333295000"",
""app_secret"":""4cea520a0e2a2ecdc267b75d3424a0ed"",
""param"":[
{
""pagina"":"&Text.From(Pagina)&",
""registros_por_pagina"":50
}
]
}"
,
Consulta =
Json.Document(
Web.Contents(
"https://app.omie.com.br",
[
RelativePath="api/v1/geral/cidades/",
Headers=[#"Content-Type"="application/json"],
Content=Text.ToBinary(body)
]
)
)
in
Consulta,
Tabela = Table.FromRecords({[Pagina=1]}),
AlterarTipo = Table.TransformColumnTypes(Tabela,{{"Pagina", Int64.Type}}),
InvocarFuncao01 = Table.AddColumn(AlterarTipo, "Tabela", each Request([Pagina])),
Tabela1 = InvocarFuncao01{0}[Tabela],
Paginas = Tabela1[total_de_paginas],
ListaPaginas = Table.FromList( List.Generate( () => 1, each _ <= Paginas , each _ +1 ), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
InvocarFuncao02 = Table.AddColumn(ListaPaginas, "Tabela", each Request([Column1])),
#"Removed Columns" = Table.RemoveColumns(InvocarFuncao02,{"Column1"}),
#"Expanded {0}" = Table.ExpandRecordColumn(#"Removed Columns", "Tabela", {"lista_cidades"}, {"lista_cidades"}),
#"Expanded {0}1" = Table.ExpandListColumn(#"Expanded {0}", "lista_cidades"),
#"Expanded {0}2" = Table.ExpandRecordColumn(#"Expanded {0}1", "lista_cidades", {"cCod", "cNome", "cUF", "nCodIBGE", "nCodSIAFI"}, {"cCod", "cNome", "cUF", "nCodIBGE", "nCodSIAFI"})
in
#"Expanded {0}2"
Vídeo explicando como montei a paginação automática: