Forum Discussion
Cursor Datos paginados de Web API
Hola @eyeballkid ,
Sí, definitivamente haciendo progresos aquí.
Compruebe el formato de pegar imagen de myList{0}.
Si se trata de un registro, el código siguiente podría funcionar:
let
myList = List.Generate( ()=>
[Result = Query4("https://api.brighttalk.com/v1/channel/10737/webcasts"), Counter = 0],
each [Counter] < 5,
each [Result = Query4(Table.LastN([Result][link], 1)[#"Attribute:href"]), Counter = [Counter]+1],
each [Result])
in
myList
Hola @ImkeF ,
Los datos de myList {0} tiene este aspecto:
Perdona mi ignorancia, ya que soy un poco nuevo en las estructuras de datos de Power Query. ¿La estructura es esencialmente una tabla con dos filas (registros) en ella y la columna Tabla y, a continuación, contiene una estructura de datos Table dentro de ella?
He intentado el código de enmienda que todavía error, pero dio este mensaje :
- ImkeF6 years agoCommunity Champion
Sí, debo haber estado durmiendo un poco aquí.
let myList = List.Generate( ()=> [Result = Query4("https://api.brighttalk.com/v1/channel/10737/webcasts"), Counter = 0], each [Counter] < 5, each [Result = Query4(Table.LastN([Result]{[Name = "link"]}[Table], 1)[#"Attribute:href"]), Counter = [Counter]+1], each [Result]) in myList[Resultado] devuelve una tabla
[Nombre " "enlace"] toma la fila de esa tabla en la que Nombre á "enlace" : Se trata de un registro.
[Tabla] toma el valor del campo Tabla del registro. Allí se encuentra la mesa que nos interesa.
- Anonymous6 years agoNot applicable
Hola @ImkeF ,
¡Ah, ya veo! ¡No me di cuenta de que podías anidar referencias de esa manera!
Por lo tanto, un poco más de progreso creo, todavía error, pero con este mensaje de la fila 2 en adelante:
- ImkeF6 years agoCommunity Champion
Hola @eyeballkid ,
un día, llegaremos 😉
let myList = List.Generate( ()=> [Result = Query4("https://api.brighttalk.com/v1/channel/10737/webcasts"), Counter = 0], each [Counter] < 5, each [Result = Query4(Table.LastN([Result]{[Name = "link"]}[Table], 1){0}[#"Attribute:href"]), Counter = [Counter]+1], each [Result]) in myList - Anonymous6 years agoNot applicable
Hola @ImkeF ,
¡Creo que ese día ha llegado! Tenemos éxito!!!
Ahora obtengo un conjunto de resultados de tablas como se esperaba:
¿Puedo hacer una pregunta más, por favor? Ultimatley necesito reemplazar la variable Counter con una prueba de si se devuelve una fila de vínculo (el último conjunto de datos paginado no tendrá una fila de vínculo). ¿Cómo sería mejor hacer eso?
Muchas gracias por toda su ayuda con este 😁
- ImkeF6 years agoCommunity Champion
Hola @eyeballkid ,
puede utilizar el método de "fuerza bruta" que utilizó antes (intente ... de lo contrario). De lo contrario, tendrías que dividir tus declaraciones: https://www.thebiccountant.com/2020/05/15/miss-last-page-paging-power-bi-power-query/
Simplemente elimine la instrucción counter, que era solo para fines de depuración.
- Anonymous5 years agoNot applicable
Hola @ImkeF,
Cualquier oportunidad que también pueda ayudarme, problema muy similar a este hilo, pero tengo que profundizar unos pasos para obtener mi 'siguiente' url
Función GetURL:
(url as text) as table => let Source = Json.Document(Web.Contents(url)), results = Source[results], #"Converted to Table" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id", "properties", "createdAt", "updatedAt", "archived"}, {"id", "properties", "createdAt", "updatedAt", "archived"}), #"Expanded properties" = Table.ExpandRecordColumn(#"Expanded Column1", "properties", {"amount", "createdate", "dealstage", "hs_lastmodifieddate", "hs_object_id", "printing_kpi_by"}, {"amount", "createdate", "dealstage", "hs_lastmodifieddate", "hs_object_id", "printing_kpi_by"})//& Number.ToText(after))), in #"Expanded properties"
el resultado si solo solicito la primera URL y no se está profundizando (disculpas por usar una tabla pero tener errores cada vez que intento cargar capturas de pantalla):Nombre Valor Resultados Lista Paginación Registros La siguiente dirección URL se encuentra dentro de los registros de "paginación", se requieren los siguientes pasos para llegar a ella:
let source = Json.Document(Web.Contents("https://api.hubapi.com/crm/v3/objects/deals?limit=100&paginateAssociations=false&archived=false&hapikey=APIKEY&properties=dealstage&after=0")), #"Converted to Table" = Record.ToTable(source), Value = #"Converted to Table"{1}[Value], next = Value[next], #"Converted to Table1" = Record.ToTable(next) in #"Converted to Table1"
Que devuelve la tabla siguiente:Nombre Valor Después 1677291168 Enlace https://api.hubapi.com/crm/v3/objects/deals?archived=false&paginateAssociations=false&limit=100&after=1677291168&properties=dealstage
Este es el código que estoy tratando de ajustar basado en este hilo, sólo estoy inseguro cómo hacer referencia al siguiente enlace correctamentelet myList = List.Generate( ()=> [Result = GetURL("https://api.hubapi.com/crm/v3/objects/deals?limit=100&paginateAssociations=false&archived=false&hapikey=APIKEY&properties=dealstage&after=0"), Counter = 0], each [Counter] < 5, each [Result = GetURL(Table.LastN([Result]{[Name = "link"]}[next], 1){0}[#"Attribute:value"]), Counter = [Counter] +1], each [Result]) in myListDevuelve una lista de 5, la tabla de la fila 1 se extrae correctamente como 'Tabla' el siguiente 4 se muestran como errores.
"Expression.Error: la clave no coincide con ninguna fila de la tabla
Detalles:
Llave de la tecla ?
Nombre-enlaceTabla[Tabla]
Cualquier ayuda sería muy apreciada,
¡Gracias!