Forum Discussion
Bucle de Power BI REST de API
@Pitou
Bueno, en base a la información que nos proporcionó:
let
// Define API request as a reusable function
request = (offset as number, limit as number) =>
Json.Document(
Web.Contents(
"https://sxXXXX/",
[
RelativePath = "timesheet-lines",
Query = [
sort = "id-",
offset = Text.From(offset),
limit = Text.From(limit),
api_key = "8e529cc63e220c2c7a02eb706986bbbd"
]
]
)
),
// Get total number of records
getTotal = request(0, 1)[total], // Assumes the API returns a `total` field in the response
// Set page size and calculate total pages
pageSize = 1000,
totalPages = Number.RoundDown(getTotal / pageSize),
// Generate list of pages
pages = {0..totalPages},
// Fetch data for each page
populatePages = List.Transform(
pages,
each request(_ * pageSize, pageSize)[data] // Assumes `data` contains the records
),
// Combine all pages into a single list
expandPages = List.Combine(populatePages)
in
expandPagesTengo un error, la entrada "total" no está presente en el registro.
Supongo que es de la línea 20
- Syndicate_Admin1 year agoAdministrator
Bueno, sí, no conozco tu API, necesitas saber si tienes registro [total] o no, eso es parte de la respuesta inicial. Si no tienes eso y tienes un campo diferente que te dice cuánto en el registro total tienes, tienes que usar ese.
Alternativamente, haga muchas páginas por adelantado para asegurarse de que no se perderá nada y luego elimine las vacías (esta solución evita la necesidad del campo [total], por lo que puede omitir ese paso)- Syndicate_Admin1 year agoAdministrator
Esto es lo que obtengo sin [total]
Lo siento, pero realmente no entiendo lo que hago.- Syndicate_Admin1 year agoAdministrator
primero obtenga algunos datos de muestra de la solicitud, supongo que las "líneas de hojas de tiempo".
luego cree una lista de 0..100, luego para cada página usando List.Transform(list, each ...) llame a la API usando un desplazamiento diferente y luego verá cuántos registros tendrá.
Lo siento, no conozco su API, por lo que tiene que hacer un trabajo pesado modificando mi enfoque general.