March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
I hope that someone can help me.
I have an Excel sheet with a list of names golf players and their license numbers.
There's a website where I can get their game data but I have to search by license number and by game, I cannot do a query that gives me all the players data and all the games in just one go.
So. basically, I would have to create a query for each player and for each game to be able to show their results in a table.
Is there anyway that I can automate this in Power Query?
As an example
I have a list like this
Name | Licencse |
Albert | XS0001 |
Mary | XH0035 |
James | XJ9882 |
And then, I have an url that goes like this
https://www.golfpage.com/search/license=XS001&game=23453
This webpage will provide the data for that particular game (game id 23453) in JSON format.
The result would be somethin like
{"code":0,"data":{"docs":[{"clubCode":"X","federatedCode":"123333","license":"XS0001","firstName":"ALBERT","surname":"SMTIH","fullName":"ALBERT SMITH","gender":"M","hcpExact":17.2,"private":{},"extra":{"photo":null,"email":"a*******@*****.com"},"__licenseInUse":false,"__isFederatedActive":true,"__isValidForActionPlay":true,"_id":"4hf3457e7433a4"}],"totalDocs":1,"offset":0,"limit":50,"totalPages":1,"page":1,"pagingCounter":1,"hasPrevPage":false,"hasNextPage":false,"prevPage":null,"nextPage":null}}
I do have to transform the data to get to the value I want and crear a table like this
Name | Licencse | HPC |
Albert | XS0001 | 17,2 |
Mary | XH0035 | 22,6 |
James | XJ9882 | 15,9 |
Is there anyway that I can do what I want
Solved! Go to Solution.
@parry2k has a good answer related to this: Calling multiple APIs based on a column
Here's a simplified example I've created using a dummy API service:
let
Source = #table({"ID"}, {{1}, {3}, {6}}),
BaseURL = "https://jsonplaceholder.typicode.com/comments?postId=",
ID_Result = Table.AddColumn(
Source,
"API_Result",
each Json.Document(Web.Contents(BaseURL & Number.ToText([ID]))),
type list
),
Extract_Field = Table.AddColumn(
ID_Result,
"FirstEmail",
each List.First([API_Result])[email],
type text
)
in
Extract_Field
@parry2k has a good answer related to this: Calling multiple APIs based on a column
Here's a simplified example I've created using a dummy API service:
let
Source = #table({"ID"}, {{1}, {3}, {6}}),
BaseURL = "https://jsonplaceholder.typicode.com/comments?postId=",
ID_Result = Table.AddColumn(
Source,
"API_Result",
each Json.Document(Web.Contents(BaseURL & Number.ToText([ID]))),
type list
),
Extract_Field = Table.AddColumn(
ID_Result,
"FirstEmail",
each List.First([API_Result])[email],
type text
)
in
Extract_Field
I have to say that it has been a bit challenging because, unlike your example, my JSON was a bit more complicated than your example, and it had to be expanded three times.
I finally got it to work (with the help of the Power Query interface in the end) and your code was a great guideline to achieve what I needed.
Thank you
I will try to adapt your code to what I need. It looks like it is what I'm asking for.
I'll see if I can make it work because I'm quite new at this.
Thank you.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.
User | Count |
---|---|
21 | |
16 | |
13 | |
13 | |
9 |
User | Count |
---|---|
36 | |
31 | |
20 | |
19 | |
17 |