Limitación de 10 000 filas de la URL JSON de la API

Un usuario Pregunto ✅

pamboys09

Hola,

Soy nuevo en Power BI y quiero saber si esto es posible.

Estamos extrayendo de un enlace, pero la desventaja es que solo podemos extraer 10,000 filas a la vez.
¿Cómo puedo sacar más de 10.000 filas?

En la URL, solo se requiere que ingrese el Código del token y la Fecha de inicio y la Fecha de finalización requeridas.tes223.png

Gracias

mahoneypat

Si su API tiene la opción de incluir un $skip o $skiptoken en la URL, puede generar una lista de números que aumentan en 10 000 hasta el número de filas que tiene en los datos y luego concatenar el valor de esa fila en el llamada web Luego expanda la columna de Tablas para combinar todos los resultados.

List.Numbers(0,10, 10000) //por ejemplo

Convierta a tabla, luego agregue una columna personalizada con el paso web.contents (incrustando la nueva columna de números para el valor de omisión.

Saludos,

Palmadita

pamboys09

En respuesta a mahoneypat

@mahoneypat
De acuerdo, le preguntaré al proveedor si permite omitir

@PhilipTreacy
Probaré esto si funciona.
A veces, si extraigo por día, el problema es que a veces 1 día de datos es demasiado y, a veces, supera el límite de 10,000. esa es la que me preocupa. Pero me pondré en contacto contigo, lo probaré.

felipetreacy

En respuesta a mahoneypat

Hola @pamboys09

He modificado mi código original para que coincida más con el tuyo, pero aún tendrás que hacer algunas modificaciones.

let
    url= "https://jsonplaceholder.typicode.com/todos/1",

    GetPage = (Page) =>

        let
            Source = Json.Document(Web.Contents(url,
                [
                    Query = [ 
                                StartDate = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), - Page),"yyyy-MM-dd"),
                                EndDate = Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()), - 0),"yyyy-MM-dd")
                            ]
                ]
            ))

        in  Source,
 
    PageIndices = { 1 .. 5 },
    Pages = List.Transform(PageIndices, each GetPage(_))
in
    Pages

Originalmente dijo que tiene que especificar StartDate y EndDate para que estos parámetros se incluyan como parte de la Consulta registro. Agregue el nombre y el valor de su parámetro de token en este registro y la cadena de consulta de entrada se crea para usted, sin perder el tiempo con «» y &

No estoy seguro de la sintaxis exacta que está utilizando para obtener datos de otros días, por ejemplo Fuente = «fuente»& Hoy -1 pero también podría agregar esto en el Consulta registro.

índices de página es la lista que contiene el número de días para los que desea obtener datos. En mi código contiene valores del 1 al 5, cambie el 5 a la cantidad de días que necesite.

Esta consulta obtendrá todas las respuestas del sitio web y las almacenará en Paginas donde puede hacer transformaciones posteriores como convertir la lista en una tabla.

La consulta anterior obtendrá respuestas JSON ficticias del sitio web typicode.com para que pueda tener una idea de cómo se verán sus resultados.

Si necesita más ayuda con esto, solo publique de nuevo y mencione @ para que pueda ver la respuesta.

Salud

phil


Si respondí tu pregunta, marca mi publicación como la solución.
Si mi respuesta ayudó a resolver su problema, felicítelo haciendo clic en Me gusta.

felipetreacy

Hola @pamboys09

Aquí hay un ejemplo de paginación, esta consulta obtiene los títulos de las publicaciones de blog de las primeras 5 páginas del blog de Microsoft Excel

let
    url= "https://www.microsoft.com/en-us/microsoft-365/blog/excel/page/",

    GetPage = (Page) =>

        let PageNum = Text.From(Page),
            Source = Web.BrowserContents(url & PageNum & "https://community.powerbi.com/"),
            HTML_Table = Html.Table(Source, {{"Column1", ".entry-date"}, {"Column2", ".card-title"}, {"Column3", ".my-3 *"}, {"Column4", ".bg-gray-100 .cta"}}, [RowSelector=".col"])

        in  HTML_Table[Column2],
 
    PageIndices = { 1 .. 5 },
    Pages = List.Combine(List.Transform(PageIndices, each GetPage(_)))
in
    Pages

Sé que puedo acceder a las páginas del blog usando /página/x al final de la URL principal. Uso List.Transform para llamar a la función Getpage 5 veces como se especifica en PageIndices.

Exactamente cómo su API trata con la paginación debe establecerse en la documentación de la API. Échale un vistazo y si necesitas más ayuda, vuelve a publicar aquí.

Saludos

phil


Si respondí tu pregunta, marca mi publicación como la solución.
Si mi respuesta ayudó a resolver su problema, felicítelo haciendo clic en Me gusta.

pamboys09

En respuesta a felipetreacy

Desafortunadamente, la Documentación API no tenía nada relacionado con paginas.

El único trabajo que hice es tirar de día.

Fuente = «fuente»& Hoy
Fuente = «fuente»& Hoy -1
Fuente = «fuente»& Hoy -2

y así sucesivamente y luego agregarlo.

Pero no estoy seguro de si hay una manera ordenada o eficiente de hacer esto.

felipetreacy

Hola @pamboys09

La API debería proporcionarle alguna forma de especificar la paginación, generalmente un parámetro de consulta en el que especifica qué página desea, por ejemplo, página = 1, página = 2 o algo similar.

Al usar esto, puede especificar página = 2 para obtener las segundas 10,000 filas.

Luego puede usar un bucle para obtener las filas requeridas.

phil

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *