Forum Discussion
Paginación de una API de REST en Power Query mediante M
- 5 years ago
Allí, @jwillis07
Puede consultar estos documentos y comprobar si pueden ayudarle:
https://docs.microsoft.com/en-us/power-query/handlingpaging
https://stackoverflow.com/questions/66888658/paging-rest-api-results-in-power-query
https://stackoverflow.com/questions/46904641/how-to-get-paginated-data-from-api-in-power-bi
Saludos
Equipo de apoyo a la comunidad _Robert Qin
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Allí, @jwillis07
Puede consultar estos documentos y comprobar si pueden ayudarle:
https://docs.microsoft.com/en-us/power-query/handlingpaging
https://stackoverflow.com/questions/66888658/paging-rest-api-results-in-power-query
https://stackoverflow.com/questions/46904641/how-to-get-paginated-data-from-api-in-power-bi
Saludos
Equipo de apoyo a la comunidad _Robert Qin
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Propósito: cargue los datos paginados de la API, que cargan solo 50 filas por página. Esta api tiene 2 parámetros de URL:
un. limit: Número de filas que se van a cargar por página
b. skip: Omite el número de filas desde el principio. 0 - omitir ninguno; 50 - Omita 50 y comience la página desde la fila 51.
y un token de autorización (portador).
Pasos:
1. Invoque la API base con encabezados (opcional), haciendo clic en las opciones del menú, Obtener datos -> Web ->Avanzado
Si la llamada se realiza correctamente, PowerBI abrirá el Editor de Power Query y cargará los resultados en una tabla
2. En el panel de consulta izquierdo, haga clic en el nombre de la consulta
3. Haga clic en Editor avanzado en el menú superior.
4. Seleccione todo y copie el contenido en el portapapeles/Bloc de notas.
5. Haga clic en Cancelar para salir del cuadro de diálogo del editor.
6. Elimine esta consulta haciendo clic con el botón derecho en el nombre de la consulta y haciendo clic en la opción Eliminar .
7. Para crear una nueva consulta, haga clic con el botón derecho en cualquier lugar del panel izquierdo (Consulta) para abrir el menú contextual y seleccione Nueva consulta > consulta en blanco
8. Haga clic en Editor avanzado en el menú superior.
9. Seleccione todo y borre el código de plantilla predeterminado.
10. Pega el contenido copiado en el Paso #4. Dependiendo de la transformación, las entradas pueden tener un aspecto similar al siguiente.
11. Haga esto como una función, que se puede invocar varias veces para manejar la paginación, agregando el parámetro de función. Agregue una línea al principio como se muestra a continuación.
Tenga en cuenta.
a. el parámetro de la primera línea
b. Compruebe el área resaltada de la url. Límite del parámetro Url = 50. En mi caso, el parámetro url indica que la API tiene que obtener 50 filas por página/llamada. El parámetro de URL y los límites pueden ser diferentes
c. El parámetro de desplazamiento de función se agrega al parámetro url skip para omitir el número de filas desde el inicio de los datos completos. Usamos Number.ToText para convertir el número en texto para concatular con la cadena url.
12. Asigne un nombre a la función añadiéndola a la entrada. Manipularemos la salida de la función (que se muestra a continuación como puntos de puntos) en los pasos siguientes
13. Dado que la función está lista ahora, el siguiente paso es
un. Llame a esta función en un bucle para obtener todos los datos, página por página.
b. Determinar cuándo detener el bucle cuando se recuperan todos los datos
c. Combine todos los resultados en una tabla.
Para obtener el número total de filas que se van a capturar
Para obtener el total de filas en el conjunto de datos de la API, podemos llamar y almacenar el resultado de la llamada a la API base y luego usar su atributo total .
aquí allRows es la variable donde estoy almacenando el resultado de la llamada a la API base.
Bucle hasta que se recuperen todas las filas
List.Generate nos ayudará a hacer un bucle y llamar a la función tantas veces como sea necesario. En mi caso, el límite de páginas es 50 y, por lo tanto, el bucle se configura en incrementos de 50 hasta que se obtienen todas las filas, lo que está determinado por el atributo allRows[total].
apiCallResults crea una lista de tablas, como resultado de nuestras múltiples llamadas realizadas por el bucle List.Generate .
Para combinar todos los resultados en una tabla
Table.Combine(tabla1, tabla2 ..) nos ayudará a fusionar todas las tablas de resultados. Por lo tanto, vamos a combinar la tabla a nuestra salida.
Como tenemos todo aquí, reemplazamos las líneas con puntos con este bloque de entrada como se muestra a continuación.
14. Este es el ensamblaje final
Referencias:
https://learn.microsoft.com/en-us/powerquery-m/web-contents
https://stackoverflow.com/questions/46904641/how-to-get-paginated-data-from-api-in-power-bi
https://gorilla.bi/power-query/list-generate-api-calls/
https://learn.microsoft.com/en-us/powerquery-m/table-combine