Forum Discussion

h4tt3n's avatar
h4tt3n
Helper V
5 years ago

GraphQL query in Power BI?

Hello,

I am trying to connect to a GraphQL api through Power BI and could use some advice. In the Postman API tool I have written a working query, like this:

The query is above, and part of the response is below. The URL is a https web address with a single subscription-key parameter.

How do I implement this in Power Query?

Cheers, and thanks in advance, Mike

8 Replies

  • i found a tool that is really helpful from me:  "PowerBI Query Generator for GitHub GraphQL API v4" :

     https://jsfiddle.net/rockyintel/1sqm7dpf/

    i entered my graphQL query 

    and got the following Power Query M formula which works ! in my query i am using x-api-key as the key name.

    this is the output from the generator tool:

    let
    Source = Web.Contents(
    "https://myURL",
    [
    Headers=[
    #"Method"="POST",
    #"Content-Type"="application/json",
    #"x-api-key"="putMyKeyHere"
    ],
    Content=Text.ToBinary("{""query"": ""{ list{ items{  id name } } }""}")
    ]
    ),
    #"JSON" = Json.Document(Source),
    data = JSON[data]
    in
    data

    • watoncarlos's avatar
      watoncarlos
      New Member

      Hello, i need the same, but i am a begginner. you can explain me how to connect Graph Ql to Power BI??

  • Hi. You can try this. Assuming the response is a json. Imagine this is your URL: "https://swapi.dev/api/people/?search=Skywalker" and the body is a simple json with two params.

    Then the code might be like this:

    let
    Json_body = Json.FromValue("{ ""first_param"": ""AAAAA"",  ""second_param"": ""BBBBBB""}",),
    Source = Json.Document(Web.Contents("https://swapi.dev/api/", [
        RelativePath="people/",
        Query=[search="Skywalker"],
        Headers=[#"Content-Type"="application/json"], 
        Content=Json_body
    ]))
    in
    Source

    Hope it helps.

  • Anonymous's avatar
    Anonymous
    Not applicable

    For me the following code works: 

    Source = Web.Contents(
    "http://localhost/HOPEXGraphQL/api/ITPM",
    [
    Headers=[
    #"Method"="POST",
    #"Content-Type"="application/json",
    #"Authorization"="Bearer " & gottoken,
    #"X-Hopex-Context" = "{""EnvironmentId"":""M6LC(Gp3VzSP"",""RepositoryId"":""ihd7)1IVRXR9"",""ProfileId"":""757wuc(SGjpJ""}"
    ],
    // Notice the quote escaping here
    Content=Text.ToBinary("{""query"":""query{ application{ id name applicationType businessProcess{ id name} applicationOwner_PersonSystem{ id name } sentApplicationFlow_ApplicationParticipant{ id name } receivedApplicationFlow_ApplicationParticipant{ id name }} }""}")
    ]
    ),
    #"JSON" = Json.Document(Source),
    data = JSON[data]

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hello,

      Would like to ask if you are still using Power BI and GraphQL? Does it still work after 2 years with the new verision of Hopex V5. We are trying to do the same thing that you are doing and coincidentally we are using Hopex GraphQL as well. Still did not manage to make it work. Would really appreciate it if you would send the code you are using to connect them.

      Thank you!

  • Anonymous's avatar
    Anonymous
    Not applicable

    Have you guys ever tried pagination in this code. Need help for using pagination for retrieving all pages.

  • Solução funcional 2024:

    let

    Source = Web.Contents(

    "URL",

    [

    Headers=[

    #"Method"="POST",

    #"Content-Type"="application/json",

    #"Authorization"= "Bearer xxxxxxxx"

    ],

    Content=Text.ToBinary("{""query"": ""{ cards(pipe_id:xxxxxx){ edges{  node{ id title uuid url phases_history { phase { name created_at } } } } } }""}")

    ]

    ),

    #"JSON" = Json.Document(Source)