Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
CarlosWagner
Frequent Visitor

API Json REST - com tabela de registros infinitos

Estou com um problema ao requisitar um endereço URL

E Estou seguindos os passos:

1º Criei uma tabela com os endereços;

 

 

 

 

startIndex =    1    & count =    100

startIndex =    101    & count =    200

startIndex =    201    & count =    300    .   .   .   .

 

 

 

 

2º tranformei esta tabela em endereço URL

3º Combinei em binário

 

Resultado.

 

 

 

 

 

 

deixei
    Fonte = Table.FromRows (Json.Document (Binary.Decompress (Binary.FromText ("tdxBa103EEDh / 5J1sK + kmZEUCIXusisl0EWaRRobUmj9gv0cmn / fQFY5t8uenVcWZ / Puh6TRu3cvPl2vn1 / d3j5cvnz48 + Huazuyrbr5 / Hi5frp / frr5 + Nfl + e56uX759ufl75s / Hl / FEcft4 / 3T9fbXt7 / 89vObI356un54vL55uLv / 53X7 / fk4en28PD9cX + dxvHj / 8n9fI48fVmmHs8y3 // vjOlJOQ0 + Xejp6utTT0TOknoGeIfUM9ITUE + gJqSfQk1JPoietnwP0lNRT6Cmpp9AzpZ6Jnin1TPQsqWehZ0k9Cz1b6tno2VLP / o / vqfVB5UrWJ / Vgk4aEkxI0JtAJzYJCoxSaRYVGKzQLC41aaBYXGr3QLDA0iqFZZGg0Q7PQ0KiGZrGh0Q3NgkOjHJpFh0Y7NAsPjXpoFh8a / dAsQDQKolmEaDREsxDRqIhmMaLREd1yRKcjuuWITkd0yxGdjuiWI/+ + Zntqw52naUxv3pCOm5YhJR0zLEZOOmJYjJh0xLUdMOmJZjlh0xLIcseiIZTli0RHLcsSiI5bliEVHLMsRi45YliMWHbEsRyw6YlmOWHTEshyx6IhlOWLREctyxKIjluWIRUcsyxGLjliWIxYdsSxHrNO7EdrDEaeXI7SnI iIZTli0RHLcsSiI7bliE1HbMsRm47YliM2HbEtR2w6YluO2HTEthyx6YhtOWLTEdtyxKYjtuWITUdsyxGbjtiWIzYdsS1HbDpiW47YdMS2HLHpiG05YtMR23LEpiO25YhNR2zLEfv0BtV3R7z / Fw ==", BinaryEncoding.Base64), Compression.Deflate)), vamos _T = ((DigiTar texto anulável) meta [Serialized.Text = Verdadeiro]) na Tabela tipo [# "Coluna 1"= _t ]), = _t]), = _t]),Texto = verdadeiro]) na Tabela tipo [# "Coluna 1" = _t]), = _t]), = _t]),Texto = verdadeiro]) na Tabela tipo [# "Coluna 1" = _t]), = _t]), = _t]),
    # "Tipo Alterado" = Table.TransformColumnTypes (Fonte, {{"Coluna 1", digite texto}}),
    # "Personalização Adicionada" = Table.AddColumn (# "Tipo Alterado", "Personalizar", cada Json.Document (Web.Contents ([Coluna 1]))),
    # "Personalizar Expandido" = Table.ExpandRecordColumn (# "Personalização Adicionada", "Personalizar", {"data"}, {"Personalizar.data"}),
    # "Personalizar.data Expandido" = Table.ExpandListColumn (# "Personalizar Expandido", "Personalizar.data"),
    # "Personalizar.data Expandido1" = Table.ExpandRecordColumn (# "Personalizar.data Expandido", "Personalizar.data", {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto" , "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", " Doc "," Serie "," TipoDoc "," DtEmissao "," CodGrupo "," DescGrupo "," CodTabPreco "," Vendedor "}, {" id "," Filial "," Item "," Produto "," DescProduto "," TipoProduto ","UM "," Quantidade "," VlrPrecoVenda "," VlrUnitario "," VlrDesconto "," VlrTotal "," Custo "," TipoSaida "," NPedido "," Cliente "," Loja "," Nome "," Doc " , "Série", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"}) Vendedor "}) Vendedor"})"CodTabPreco", "Vendedor"}) Vendedor "}) Vendedor"})"CodTabPreco", "Vendedor"}) Vendedor "}) Vendedor"})
não
    # "Personalizar.data Expandido1"

 

 

Estou com 02 problemas:

 

1º Como atualizar este serviço no Power BI online?

2º Esta é uma tabela de vendas e atualiza todos os dias, preciso fazer alguma função recursiva para atualizar?

 

 

1 ACCEPTED SOLUTION
lbendlin
Super User
Super User

The documentation seems ok, but as you have noticed it only returns 500  (well, 460) rows.  Can you talk to someone at that company to ask them for an exampe of how they use the API?  I think there are other parameters, or some other part of the process that we are missing.

 

EDIT:  Try this version, this seems to work :

 

 

let
    Source = List.Generate(()=>1, each _ < 5000, each _+500),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Data", each Json.Document(Web.Contents("http://novaindy105186.protheus.cloudtotvs.com.br:4040/rest/RTPWBI04?startindex=" & Text.From([Column1]) & "&count=" & Text.From([Column1]+499)))),
    #"Expanded Data" = Table.ExpandRecordColumn(#"Added Custom", "Data", {"data"}, {"Data.data"}),
    #"Expanded Data.data" = Table.ExpandListColumn(#"Expanded Data", "Data.data"),
    #"Expanded Data.data1" = Table.ExpandRecordColumn(#"Expanded Data.data", "Data.data", {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"}, {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"})
in
    #"Expanded Data.data1"

 

 

In my opinion the "count"  parameter is wrongly named in their API. It should be called "endIndex".

View solution in original post

5 REPLIES 5
CarlosWagner
Frequent Visitor

Muito obrigado lbendlin!

Eu fiz e deu certo, estou apenas com um problema  para atualizar no serviço do Power Bi On line. Mas, vi aqui que posso usar o RelativePath e Query. Estou quase conseguindo, irei conseguir rsrs

novamente, obrigado!

lbendlin
Super User
Super User

The documentation seems ok, but as you have noticed it only returns 500  (well, 460) rows.  Can you talk to someone at that company to ask them for an exampe of how they use the API?  I think there are other parameters, or some other part of the process that we are missing.

 

EDIT:  Try this version, this seems to work :

 

 

let
    Source = List.Generate(()=>1, each _ < 5000, each _+500),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Data", each Json.Document(Web.Contents("http://novaindy105186.protheus.cloudtotvs.com.br:4040/rest/RTPWBI04?startindex=" & Text.From([Column1]) & "&count=" & Text.From([Column1]+499)))),
    #"Expanded Data" = Table.ExpandRecordColumn(#"Added Custom", "Data", {"data"}, {"Data.data"}),
    #"Expanded Data.data" = Table.ExpandListColumn(#"Expanded Data", "Data.data"),
    #"Expanded Data.data1" = Table.ExpandRecordColumn(#"Expanded Data.data", "Data.data", {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"}, {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"})
in
    #"Expanded Data.data1"

 

 

In my opinion the "count"  parameter is wrongly named in their API. It should be called "endIndex".

lbendlin
Super User
Super User

Here is the pedestrian way (without recursion).  Your data is rather large so the recursion would hit memory issues soon. Does the API have a call to find out the maximum ID? Do you have a link to the API documentation? I don't think "startIndex"  is a valid field.

 

 

 

let
    Source = List.Generate(()=>1, each _ < 5000, each _+500),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Data", each Json.Document(Web.Contents("http://novaindy105186.protheus.cloudtotvs.com.br:4040/rest/RTPWBI04?startIndex=" & [Column1] & "&count=500"))),
    #"Expanded Data" = Table.ExpandRecordColumn(#"Added Custom", "Data", {"data"}, {"Data.data"}),
    #"Expanded Data.data" = Table.ExpandListColumn(#"Expanded Data", "Data.data"),
    #"Expanded Data.data1" = Table.ExpandRecordColumn(#"Expanded Data.data", "Data.data", {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"}, {"id", "Filial", "Item", "Produto", "DescProduto", "TipoProduto", "UM", "Quantidade", "VlrPrecoVenda", "VlrUnitario", "VlrDesconto", "VlrTotal", "Custo", "TipoSaida", "NPedido", "Cliente", "Loja", "Nome", "Doc", "Serie", "TipoDoc", "DtEmissao", "CodGrupo", "DescGrupo", "CodTabPreco", "Vendedor"})
in
    #"Expanded Data.data1"

 

 

lbendlin
Super User
Super User

Shouldn't your count always be 100?  You can use a recursive function (if the data isn't too big) and exit once the returned number of records from a call is less than 100.

Eu entendi, obrigado!

Como faço para a atualização funcionar no serviço online?

 

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors