Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

July 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more

Reply
UNAZIR
Regular Visitor

Format JSON into table PowerBI

I want to show data from influxDB on PowerBI through HTTP API end point.
following is the JSON i get from Influx while hitting the url.

   {
            "results": [
                {
                    "statement_id": 0,
                    "series": [
                        {
                            "name": "cpu",
                            "columns": [
                                "time",
                                "value"
                            ],
                            "values": [
                                [
                                    "2018-09-13T11:03:57.1175792Z",
                                    0.64
                                ],
                                [
                                    "2018-09-13T11:09:58.2259457Z",
                                    100
                                ]
                            ]
                        }
                    ]
                }
            ]
        }

when i try to create table from it in PowerBI. it shows all columns in a row

PS: i cant change the JSON

Capture.JPG

 Need Help

1 ACCEPTED SOLUTION
v-yulgu-msft
Microsoft Employee
Microsoft Employee

Hi @UNAZIR,

 

Please refer to below Power Query.

let
    Source = Json.Document(File.Contents("C:\Users\xxxx\Desktop\generated.json")),
    #"Converted to Table" = Record.ToTable(Source),
    #"Expanded Value" = Table.ExpandListColumn(#"Converted to Table", "Value"),
    #"Expanded Value2" = Table.ExpandRecordColumn(#"Expanded Value", "Value", {"statement_id", "series"}, {"Value.statement_id", "Value.series"}),
    #"Expanded Value.series" = Table.ExpandListColumn(#"Expanded Value2", "Value.series"),
    #"Expanded Value.series1" = Table.ExpandRecordColumn(#"Expanded Value.series", "Value.series", {"name", "columns", "values"}, {"Value.series.name", "Value.series.columns", "Value.series.values"}),
    #"Expanded Value.series.columns" = Table.ExpandListColumn(#"Expanded Value.series1", "Value.series.columns"),
    #"Expanded Value.series.values" = Table.ExpandListColumn(#"Expanded Value.series.columns", "Value.series.values"),
    #"Expanded Value.series.values1" = Table.ExpandListColumn(#"Expanded Value.series.values", "Value.series.values"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Value.series.values1",{"Value.series.name", "Value.statement_id", "Name"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Removed Columns", "Value.series.columns", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Value.series.columns.1", "Value.series.columns.2"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Split Column by Delimiter",{"Value.series.columns.2"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns1", "Value.custom", each if [Value.series.columns.1]="time" and Value.Is([Value.series.values],Int64.Type) then null else if [Value.series.columns.1]="value" and not Value.Is([Value.series.values],Int64.Type) then null else [Value.series.values]),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Value.custom] <> null),
    #"Removed Columns2" = Table.RemoveColumns(#"Filtered Rows",{"Value.series.values"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns2", {"Value.series.columns.1"}, {{"all data", each Table.AddIndexColumn(_, "Index",1,1),type table}}),
    #"Expanded all data" = Table.ExpandTableColumn(#"Grouped Rows", "all data", {"Value.custom", "Index"}, {"all data.Value.custom", "all data.Index"}),
    #"Pivoted Column" = Table.Pivot(#"Expanded all data", List.Distinct(#"Expanded all data"[Value.series.columns.1]), "Value.series.columns.1", "all data.Value.custom"),
    #"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"all data.Index", "Index"}})
in
    #"Renamed Columns"

This the result.

1.PNG

 

Best regards,

Yuliana Gu

Community Support Team _ Yuliana Gu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

3 REPLIES 3
v-yulgu-msft
Microsoft Employee
Microsoft Employee

Hi @UNAZIR,

 

Please refer to below Power Query.

let
    Source = Json.Document(File.Contents("C:\Users\xxxx\Desktop\generated.json")),
    #"Converted to Table" = Record.ToTable(Source),
    #"Expanded Value" = Table.ExpandListColumn(#"Converted to Table", "Value"),
    #"Expanded Value2" = Table.ExpandRecordColumn(#"Expanded Value", "Value", {"statement_id", "series"}, {"Value.statement_id", "Value.series"}),
    #"Expanded Value.series" = Table.ExpandListColumn(#"Expanded Value2", "Value.series"),
    #"Expanded Value.series1" = Table.ExpandRecordColumn(#"Expanded Value.series", "Value.series", {"name", "columns", "values"}, {"Value.series.name", "Value.series.columns", "Value.series.values"}),
    #"Expanded Value.series.columns" = Table.ExpandListColumn(#"Expanded Value.series1", "Value.series.columns"),
    #"Expanded Value.series.values" = Table.ExpandListColumn(#"Expanded Value.series.columns", "Value.series.values"),
    #"Expanded Value.series.values1" = Table.ExpandListColumn(#"Expanded Value.series.values", "Value.series.values"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Value.series.values1",{"Value.series.name", "Value.statement_id", "Name"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Removed Columns", "Value.series.columns", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Value.series.columns.1", "Value.series.columns.2"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Split Column by Delimiter",{"Value.series.columns.2"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns1", "Value.custom", each if [Value.series.columns.1]="time" and Value.Is([Value.series.values],Int64.Type) then null else if [Value.series.columns.1]="value" and not Value.Is([Value.series.values],Int64.Type) then null else [Value.series.values]),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Value.custom] <> null),
    #"Removed Columns2" = Table.RemoveColumns(#"Filtered Rows",{"Value.series.values"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns2", {"Value.series.columns.1"}, {{"all data", each Table.AddIndexColumn(_, "Index",1,1),type table}}),
    #"Expanded all data" = Table.ExpandTableColumn(#"Grouped Rows", "all data", {"Value.custom", "Index"}, {"all data.Value.custom", "all data.Index"}),
    #"Pivoted Column" = Table.Pivot(#"Expanded all data", List.Distinct(#"Expanded all data"[Value.series.columns.1]), "Value.series.columns.1", "all data.Value.custom"),
    #"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"all data.Index", "Index"}})
in
    #"Renamed Columns"

This the result.

1.PNG

 

Best regards,

Yuliana Gu

Community Support Team _ Yuliana Gu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Greg_Deckler
Community Champion
Community Champion

Can you post your query from Advanced Editor?



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

I did not write the query myself i just followed some steps to get this result.
This is the query i got in result.

let
    Source = Json.Document(Web.Contents("http://localhost:8086/query?db=ssi-influx&q=select ""time"",""value"" from ""cpu""")),
    #"Converted to Table2" = Record.ToTable(Source),
    #"Expanded Value" = Table.ExpandListColumn(#"Converted to Table2", "Value"),
    #"Expanded Value2" = Table.ExpandRecordColumn(#"Expanded Value", "Value", {"statement_id", "series"}, {"Value.statement_id", "Value.series"}),
    #"Expanded Value.series" = Table.ExpandListColumn(#"Expanded Value2", "Value.series"),
    #"Expanded Value.series1" = Table.ExpandRecordColumn(#"Expanded Value.series", "Value.series", {"name", "columns", "values"}, {"Value.series.name", "Value.series.columns", "Value.series.values"}),
    #"Expanded Value.series.columns" = Table.ExpandListColumn(#"Expanded Value.series1", "Value.series.columns"),
    #"Expanded Value.series.values" = Table.ExpandListColumn(#"Expanded Value.series.columns", "Value.series.values"),
    #"Expanded Value.series.values1" = Table.ExpandListColumn(#"Expanded Value.series.values", "Value.series.values"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Value.series.values1",{"Value.series.name", "Value.statement_id", "Name"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Removed Columns", "Value.series.columns", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Value.series.columns.1", "Value.series.columns.2"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Split Column by Delimiter",{"Value.series.columns.2"}),
    #"Reversed Rows" = Table.ReverseRows(#"Removed Columns1"),
    #"Pivoted Column1" = Table.Pivot(#"Reversed Rows", List.Distinct(#"Reversed Rows"[Value.series.columns]), "Value.series.columns", "Value.series.values", List.Count),
    #"Pivoted Column" = Table.Pivot(#"Pivoted Column1", List.Distinct(#"Pivoted Column1"[Value.series.columns]), "Value.series.columns", "Value.series.values"),
    time = #"Pivoted Column"{0}[time]
in
    time

Helpful resources

Announcements
FabCon and SQLCon Barcelona 2026

FabCon & SQLCon – Barcelona 2026

Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.

60 days of Data Days Carousel

Data Days 2026

Join Fabric Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.