Forum Discussion
GraphQL Publicar consulta en formato de Power Query
Hola a todos
Estoy intentando convertir la siguiente consulta de publicación de GraphQL a un formato compatible con Power Query:
{
people(first: 100, view: all, filter: {id: {values:"123456789ABC"}}) {
nodes {
id
name
primaryEmail
contacts(first: 100) {
nodes {
label
uri
}
}
}
}
}
Sin el filtro de identificación, puedo hacer que esto funcione. Sin embargo, quiero poder filtrar directamente en un ID (esto será reemplazado por una variable más adelante, llamada PersonID). Por el momento, tengo:
//(PersonID as text) as table =>
let
vUrl = "https://graphql.###.com/",
vHeaders =[
#"Method"="POST",
#"Content-Type"="application/json",
#"Authorization"="Bearer 12345ABC"
],
// Notice the quote escaping here
vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"),
Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]),
Mi idea era conseguir que funcionara de la siguiente manera:
(PersonID as text) as table =>
let
vUrl = "https://graphql.###.com/",
vHeaders =[
#"Method"="POST",
#"Content-Type"="application/json",
#"Authorization"="Bearer 1234ABC"
],
// Notice the quote escaping here
vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:123456789ABC}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"),
Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]),
#"JSON" = Json.Document(Source)
in
#"JSON"
Sin embargo, esto devuelve un error: el argumento 'values' de InputObject 'IDFilter' tiene un valor no válido (123456789ABC). Tipo esperado '[ID!]!'.
Otras variaciones en el filtrado del ID solo me han dado errores HTTP 400.
¡Espero que alguien pueda ayudarme! 🙂
He encontrado la solución. La corrección fue agregar dos barra diagonales inversas alrededor del identificador, como sigue:
//(PersonID as text) as table => let vUrl = "https://graphql.###.com/", vHeaders =[ #"Method"="POST", #"Content-Type"="application/json", #"Authorization"="Bearer 1234ABC" ], // Notice the quote escaping here vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:\""123456789ABC\""}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"), Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]), #"JSON" = Json.Document(Source) in #"JSON"En función de:
(PersonID as text) as table => let vUrl = "https://graphql.###.com/", vHeaders =[ #"Method"="POST", #"Content-Type"="application/json", #"Authorization"="Bearer 1234ABC" ], // Notice the quote escaping here vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:\""" & PersonID & "\""}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"), Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]), #"JSON" = Json.Document(Source) in #"JSON"
4 Replies
- Syndicate_Admin
Administrator
No @prostagma ,
Sé poco sobre la consulta graphQL post. Sólo una especulación:
¿El problema causado por la ausencia de comillas dobles de id value?
(PersonID como texto) como tabla =>
dejar
vUrl = "https://graphql.###.com/",
vHeaders =[
#"Método"="POST",
#"Content-Type"="application/json",
#"Autorización"="Portador 1234ABC"
],
Observe la cita que se escapa aquí
vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:"123456789ABC"}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"),
Origen = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]),
#"JSON" = Json.Document(Origen)
en
#"JSON"Además, aquí hay un documento sobre GraphQL API + PowerBI Integration. Espero que ayude.
Saludos
Icey
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.
- Syndicate_Admin
Administrator
Hola Icey,
Da las gracias por vuestra entrada. Tengo un par de variaciones con comillas, lo que resulta en lo siguiente:
id: {values:""123456789ABC""} > error HTTP 400
id: {values:"123456789ABC"} > Se espera una coma de token
id: {values:'123456789ABC'} > error parse en "'" (error) en [1, 53]
id: {values:123456789ABC} > argumento 'values' en InputObject 'IDFilter' tiene un valor no válido (123456789ABC). Tipo esperado '[ID!]!'.
Como puede ver, nada funcionará 😞
- Syndicate_Admin
Administrator
He encontrado la solución. La corrección fue agregar dos barra diagonales inversas alrededor del identificador, como sigue:
//(PersonID as text) as table => let vUrl = "https://graphql.###.com/", vHeaders =[ #"Method"="POST", #"Content-Type"="application/json", #"Authorization"="Bearer 1234ABC" ], // Notice the quote escaping here vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:\""123456789ABC\""}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"), Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]), #"JSON" = Json.Document(Source) in #"JSON"En función de:
(PersonID as text) as table => let vUrl = "https://graphql.###.com/", vHeaders =[ #"Method"="POST", #"Content-Type"="application/json", #"Authorization"="Bearer 1234ABC" ], // Notice the quote escaping here vContent=Text.ToBinary("{""query"": ""{people(first: 100, view: all, filter: {id: {values:\""" & PersonID & "\""}}) {nodes {id name primaryEmail contacts(first:100){nodes {label uri}}}}}""}"), Source = Web.Contents(vUrl, [Headers=vHeaders, Content=vContent]), #"JSON" = Json.Document(Source) in #"JSON" - Syndicate_Admin
Administrator
Hola, intenté usar el formato pero no logré convertirlo a Power Query. ¿Alguien puede ayudar a traducir la siguiente consulta de GraphQL?
consulta {courseProgress {Nodos {usuario{Correo electrónico}courseIdcourseIdNumporcentajeCompletoisCourseCompletedcompletedOncourseSecondstotalWatchedSecondstotalClipsWatchedfirstViewedClipOnlastViewedClipOnplanIdactualizadoEn}}}