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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Límite de 500 filas al obtener datos de la API de REST de Dataverse

Hola a todos,

Estoy accediendo a la conexión de API en una tabla de Dataverse (autorización realizada a través de una cuenta de organización) envolviendo la URL del punto final de la API web en una función Web.Contents simple. P. ej..:

let

    Source = Web.Contents(https://xxx-prod-xxx.api.crm11.dynamics.com/api/data/v9.2/audits)

in

    Source

Desafortunadamente, el resultado está limitado a 500 filas. He probado las sugerencias de paginación y bucle en línea, pero ninguna parece proporcionar una solución viable. Las soluciones fallan en puntos que no entiendo porque no tengo conocimientos con JSON o con la ejecución de llamadas API en general.

Por ejemplo:

example.png

let
    Source = Json.Document(Web.Contents(https://xxx-prod-uksa.api.crm11.dynamics.com/api/data/v9.2/audits)),
    BaseUrl = https://xxx-prod-uksa.api.crm11.dynamics.com,
    EntitiesPerPage = 50,

    GetJson = (Url) =>
        let RawData = Web.Contents(Url),
            Json = Json.Document(RawData)
        in  Json,
    
    GetTotalEntities = () =>
        let Json = GetJson(BaseUrl),
            Total = Json[total]
        in  Total,

    GetPage = (Index) =>
        let Skip  = "skip=" & Text.From(Index * EntitiesPerPage),
            Url   = BaseUrl & "&" & Skip,
            Json  = GetJson(Url),
            Value = Json[data]
        in  Value,

    GetUrl = (Index) =>
        let Skip  = "skip=" & Text.From(Index * EntitiesPerPage),
            Url   = BaseUrl & "&" & Skip
        in  Url,
  
    EntityCount = List.Max({ EntitiesPerPage, GetTotalEntities() }),
    PageCount   = Number.RoundUp(EntityCount / EntitiesPerPage),
    PageIndices = { 0 .. PageCount - 1 },
   
 URLs  = List.Transform(PageIndices, each GetUrl(_)),
Pages       = List.Transform(PageIndices, each GetPage(_)),
    Entities    = List.Union(Pages),
    #"Converted to Table" = Table.FromList(Entities, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
    #"Converted to Table"

No estoy equipado para saber si el error se debe a que el código M anterior no es viable para Dataverse o si cometí un error en alguna parte.

¿Alguien podría aconsejar?

Mi URL base: https://xxx-prod-uksa.api.crm11.dynamics.com/

Mi URL completa: https://xxx-prod-uksa.api.crm11.dynamics.com/api/data/v9.2/audits

Referencias:

https://stackoverflow.com/questions/65631024/json-query-in-power-bi-only-returning-first-1000-rows-h...

https://datachant.com/2016/06/27/cursor-based-pagination-power-query/

https://community.powerbi.com/t5/Service/Json-file-will-load-only-500-rows/m-p/2252958/highlight/tru...

https://medium.com/@marktiedemann/how-to-do-pagination-in-power-query-430460c17c78

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

¿Alguna novedad para esta pregunta?

Helpful resources

Announcements
July 2024 Power BI Update

Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

Top Solution Authors