Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
I can read data from a REST API with this URL: finance/agreements/
The resulting set returns an ID for each agreement. I can then use that ID to find additions specific to that agreement. This example shows only additions for ID 21: finance/agreements/21/additions
Is there a way to consume all of the additions using a single Power Query? I'm assuming that I will need to loop thru all of the agreements, capture the ID's, then download the additions as separate API calls.
Thank you for reading.
Solved! Go to Solution.
Yes. You can make your first web call, expand that if needed to get an [ID] column, make it type text if needed, and then add a custom column with another Web.Contents( ) with most of the url hardcoded, but dynamically use the [ID] column.
=Web.Contents("... finance/agreements/" & [ID] & "/additions")
You can then expand the resulting column of Tables to combine all the data.
Pat
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Thank you for the feedback @mahoneypat . I took your paging example on another ticket, and used it to solve this issue. My code is below. You rock!
source = Json.Document(Web.Contents(url & "/finance/agreements/count", [ Headers = DefaultRequestHeaders ])),
count = (source[count]),
pages = List.Numbers(0,count/PageSize, PageSize),
#"Converted to Table" = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
#"Added Custom" = Table.AddColumn( #"Changed Type", "Custom", each Json.Document(Web.Contents(url & "/finance/agreements?fields=id&pageSize=" & Number.ToText(PageSize) & "&page="&[Column1], [ Headers = DefaultRequestHeaders ]))),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Expanded ID" = Table.ExpandRecordColumn(#"Expanded Custom", "Custom", {"id"}, {"id"}),
#"Added Custom2" = Table.AddColumn( #"Expanded ID" , "Custom2", each Json.Document(Web.Contents(url & "/finance/agreements/"&Number.ToText([id])&"/additions?pageSize=" & Number.ToText(PageSize), [ Headers = DefaultRequestHeaders ]))),
#"Expanded Custom2" = Table.ExpandListColumn(#"Added Custom2", "Custom2"),
Yes. You can make your first web call, expand that if needed to get an [ID] column, make it type text if needed, and then add a custom column with another Web.Contents( ) with most of the url hardcoded, but dynamically use the [ID] column.
=Web.Contents("... finance/agreements/" & [ID] & "/additions")
You can then expand the resulting column of Tables to combine all the data.
Pat
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.