- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

La paginación de Hubspot no se actualiza en el servicio PBI
Gracias a @WillBatesHydro he conseguido que funcione un poco de código para paginar mis ofertas de Hubspot.
Sin embargo, cuando lo subo en el servicio PowerBI, se produce un error en la actualización ya que es dinámica.
He intentado dividirlo en una ruta relativa como he hecho con otros, pero no funciona.
¿Alguna idea?
Código, con crédito para @WillBatesHydro y otros en este hilo: https://community.fabric.microsoft.com/t5/Power-Query/Hubspot-Private-Apps-Powerquery-pagination/m-p...
dejar
baseuri = "https://api.hubapi.com/crm/v3/objects/deals?limit=100",
headers = [Headers=[#"Content-Type"="application/json", Authorization="API KEY"]],
initReq = Json.Document(Web.Contents( baseuri, headers)),
#"Convertido en tabla" = Record.ToTable(initReq),
initData = initReq[resultados],
Queremos obtener data = {lastNPagesData, thisPageData}, donde cada lista tiene el límite # de Registros,
luego podemos List.Combine() las dos listas en cada iteración para agregar todos los registros. Podemos, entonces,
Crear una tabla a partir de esos registros
gather = (datos como lista, URI) =>
dejar
Obtener un nuevo desplazamiento del URI activo
newOffset = Json.Document(Web.Contents(uri, headers))[paging][next][after],
Compile un nuevo URI con el URI original para que no se anexen offsests
newUri = baseuri & relativepath & "&after=" & newOffset,
Obtener nuevas solicitudes y datos
newReq = Json.Document(Web.Contents(newUri, encabezados)) ,
newdata = newReq[resultados] ,
Agregar esos datos a Rolling Aggregate
data = List.Combine({data, newdata}),
Si no hay una página siguiente de datos, devuélvalo. Si lo hay, vuelva a llamar a @gather para obtener más datos
check = if Table.Contains ( Record.ToTable(newReq) , [Name = "paginación"] ) = true then @gather (data , newUri) else data
en jaque,
Antes de llamar a gather(), queremos ver si es necesario. ¿La primera solicitud devuelve solo una página? Devolución.
outputList = if Table.Contains ( Record.ToTable (initReq) , [Name = "paging"] ) = true then gather( initData , baseuri ) else initData ,
A continuación, coloque los registros en una tabla. Esto expandirá todas las columnas disponibles en el registro.
expand = Table.FromRecords(outputList),
#"Eliminado Otras Columnas" = Table.SelectColumns(expand,{"id", "properties"}),
#"Personalizado expandido" = Table.ExpandRecordColumn(#"Eliminado otras columnas", "propiedades",
Record.FieldNames(#"Eliminado otras columnas"{0}[propiedades]),
Record.FieldNames(#"Eliminado otras columnas"{0}[propiedades]))
en
#"Costumbre ampliada"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Le faltan la parte Query y RelativePath de la llamada Web.Contents.
Web.Contents - PowerQuery M | Microsoft Learn
Son necesarios para evitar el error que obtiene.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Gracias. He usado RelativePath antes en otras llamadas a la API, pero ahí era donde sabíamos los números de página a los que se llamaba.
He modificado el código original de la siguiente manera, pero cualquier idea de qué probar a continuación es bienvenida:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Por favor, lea la documentación de nuevo. El "limit=100" también debe ir en el parámetro Query.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Lamentablemente, no estoy consiguiendo que esto funcione. Supuse que no sería demasiado difícil, pero el servicio simplemente no es refrescante.
Cualquier consejo es bienvenido, ya que estoy dando vueltas en círculos aquí.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Muestre su código actual (desinfectado).
Como probablemente pueda apreciar, es casi imposible ayudar con las consultas de la API sin acceso a dicha API (que es posible que no esté dispuesto a proporcionar por razones comprensibles)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Gracias @lbendlin, sí, no puedo dar la clave API, pero el último código de trabajo está a continuación. Necesito crear una ruta relativa para "?limit=100" y lo he hecho con éxito para otras llamadas a la API, donde conozco los números de página y las funciones listas creadas y generas, etc., pero no puedo ver cómo hacerlo en esto cuando está usando parámetros de desplazamiento
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I need to create a relative path for "?limit=100"
No, esto debe ir a la sección Consulta, no a la sección RelativePath.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Así que ahora tengo el beloe, pero obtengo el mismo error en el servicio que antes (nopuedo programar la actualización para este modelo semántico porque las siguientes fuentes de datos actualmente no admiten la actualización):
dejar
baseuri = "https://api.hubapi.com/crm/v3/objects/deals",
consulta = "?limit=100",
fullUri = baseuri & consulta,
headers = [#"Content-Type" = "application/json", #"Authorization" = "API KEY"],
initData = Json.Document(Web.Contents(fullUri, [Headers = headers]))[results],
gather = (datos como lista, URI como texto, relativepath como texto, encabezados como registro) =>
dejar
newOffset = Json.Document(Web.Contents(uri, [Headers = headers]))[paginación][next][after],
newUri = baseuri & "?" & relativepath & "&after=" & newOffset,
newReq = Json.Document(Web.Contents(newUri,[Headers = headers])),
newdata = newReq[resultados],
allData = List.Combine({data, newdata}),
check = if Table.Contains(Record.ToTable(newReq), [Name = "paging"]) then @gather(allData, newUri, relativepath, headers) else allData
en
comprobar
outputList = if Table.Contains(Record.ToTable(Json.Document(Web.Contents(fullUri, [Headers = headers]))), [Name = "paging"]) then gather(initData, fullUri, "", headers) else initData,
expand = Table.FromRecords(outputList),
#"Personalizado expandido" = Table.ExpandRecordColumn(expandir, "propiedades", Record.FieldNames(expandir{0}[propiedades]), Record.FieldNames(expandir{0}[propiedades])),
#"Ordenado Filas" = Table.Sort(#"Personalizado Expandido",{{"FechaCierre", Order.Descending}})
en
#"Filas ordenadas"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Por favor, lea la documentación de nuevo. El "limit=100" debe ir en el parámetro Query, con la sintaxis correcta.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Lo he leído, muchas veces, y he intentado cambiar las cosas. La última iteración a continuación. Se carga correctamente en el escritorio, pero no se actualiza en el servicio. ¿Alguna idea de qué está causando que esto no se actualice?
Cualquier consejo es bienvenido.
dejar
baseuri = "https://api.hubapi.com/crm/v3/objects/deals",
consulta = "?limit=100",
headers = [#"Content-Type" = "application/json", #"Authorization" = "API Key"],
initData = Json.Document(Web.Contents(baseuri, [Headers = headers & [#"query" = consulta]]))[results],
gather = (datos como lista, URI como texto, relativepath como texto, encabezados como registro) =>
dejar
newOffset = Json.Document(Web.Contents(uri, [Headers = headers & [#"query" = query]]))[paging][next][after],
newUri = baseuri & "?" & relativepath & "&after=" & newOffset,
newReq = Json.Document(Web.Contents(newUri,[Headers = headers & [#"query" = consulta]])),
newdata = newReq[resultados],
allData = List.Combine({data, newdata}),
check = if Table.Contains(Record.ToTable(newReq), [Name = "paging"]) then @gather(allData, newUri, relativepath, headers) else allData
en
comprobar
outputList = if Table.Contains(Record.ToTable(Json.Document(Web.Contents(baseuri, [Headers = headers & [#"query" = query]]))), [Name = "paging"]) then gather(initData, baseuri, "", headers) else initData,
expand = Table.FromRecords(outputList),
#"Personalizado expandido" = Table.ExpandRecordColumn(expandir, "propiedades", Record.FieldNames(expandir{0}[propiedades]), Record.FieldNames(expandir{0}[propiedades])),
#"Ordenado Filas" = Table.Sort(#"Personalizado Expandido",{{"FechaCierre", Order.Descending}})
en
#"Filas ordenadas"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Ah, ya veo. Gracias.
Subí al Servicio y todavía no hay alegría. Eliminó toda la consulta a lo largo del script y aún no se actualiza, por lo que debe ser otra cosa. 😞
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hola @DrewSmith Como solución alternativa, tal vez pueda usar un conector de terceros, puede ahorrarle mucho tiempo en comparación con las otras opciones. He probado windsor.ai, supermetría y funnel.io. Me quedé con windsor porque es mucho más barato, así que solo para que conozcas otras opciones. En caso de que te lo preguntes, para realizar la conexión primero busca el conector de Hubspot en la lista de fuentes de datos:
Después de eso, simplemente otorgue acceso a su cuenta de Hubspot usando sus credenciales, luego, en la página de vista previa y destino , verá una vista previa de sus campos de Hubspot:
Allí sólo tienes que seleccionar los campos que necesitas. Finalmente, simplemente seleccione PBI como destino de sus datos y finalmente copie y pegue la url en PBI --> Obtener datos --> Web --> Pegar la url.

Helpful resources
Join us at the Microsoft Fabric Community Conference
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Power BI Monthly Update - February 2025
Check out the February 2025 Power BI update to learn about new features.

Subject | Author | Posted | |
---|---|---|---|
01-29-2024 11:45 AM | |||
02-20-2024 01:01 AM | |||
06-16-2023 05:28 PM | |||
06-07-2024 07:04 AM | |||
03-20-2024 11:59 PM |
User | Count |
---|---|
1 | |
1 | |
1 | |
1 |