Forum Discussion
Anonymous
3 years agoNot applicable
JSON column type in Power BI Dataflow
I am using the following code to pull in data from an API in a Power BI Dataflow Json.Document(Web.Contents("https://"&APIEnvironment&"/path/" & "?limit=100", [ Headers=[Authorization="Bearer " &...
- 3 years ago
No. I am not aware of any way to return embedded lists, records, etc. in a loaded dataflow.
This simple table:let Source = #table( {"ID", "Name", "City"}, { {123, "Alice", {1.10}}, {456, "Bob", {100.150}} } ) in Sourcehas a nested list in the third column. When that is loaded in a dataflow nothing comes through into Power BI's Power Query. it is just a blank field.
You will need to do the expansion in the dataflow, or connect to the JSON directy from Power BI's Power Query if you want to expand it there.
Neomarty
2 years agoNew Member
I faced the same issue and struggled to have the pulled back field as a JSON type. Eventually, I ended up converting the JSON into text type (jsontext variable below) using the code below. The text can then be parsed and transformed into JSON using Power Query GUI.
let
Source = Query(),
jsontext = Text.FromBinary(Json.FromValue(Source)),
#"Convert to table" = Table.FromValue(jsontext),
#"Changed column type" = Table.TransformColumnTypes(#"Convert to table", {{"Value", type text}})
in
#"Changed column type"
Function code:
let
Source = () as list =>
let
Token = "token"
body = Text.ToBinary("{""limit"":1000000}"),
actualUrl = "url",
options = [RelativePath="relative_path" ,
Headers =[#"Content-type"="application/json",Authorization="Bearer "&""& Token &""],
Content= body
],
result = Web.Contents(actualUrl, options),
#"Imported JSON" = Json.Document(result, 65001)
in
#"Imported JSON"
in
Source