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

Don'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.

Reply
Badrul_IO
New Member

How to deal with NULL being returned from an API end point?

I have the M code below where I read data from an API endpoint. However there are cases where this endpoint will not return any values so result = null.

 

How can I deal with this null so that I end up with an empty table that has the right column headers (ideal solution) or just something that doesn't crash?

 

let
apiUrl = "https://xxx/registration/users",
token = AccessToken,
options = [Headers=[#"Authorization"="Bearer " & token ]],
result = Json.Document(Web.Contents(apiUrl , options)),
#"Converted to Table" = Table.FromList(result, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"userStatus", "role", "count", "date"}, {"Column1.userStatus", "Column1.role", "Column1.count", "Column1.date"}),
RenameColumns = Table.RenameColumns( #"Expanded Column1", List.Zip(
{
Table.ColumnNames( #"Expanded Column1"),
List.Transform(Table.ColumnNames( #"Expanded Column1"), each Text.AfterDelimiter( _, ".") )
} ) )
in
RenameColumns
1 ACCEPTED SOLUTION
Badrul_IO
New Member

Ok I think I've managed to solve my issue:

 

let
apiUrl = "https://xxx/registration/users",
token = AccessToken,
options = [Headers=[#"Authorization"="Bearer " & token ]],
r = Json.Document(Web.Contents(apiUrl , options)),
result = if r= null then #table(
{ "Column1"}, // defines column names
{} // returns no rows
) else Table.FromList(r, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(result, "Column1", {"userStatus", "role", "count", "date"}, {"Column1.userStatus", "Column1.role", "Column1.count", "Column1.date"}),
RenameColumns = Table.RenameColumns( #"Expanded Column1", List.Zip(
{
Table.ColumnNames( #"Expanded Column1"),
List.Transform(Table.ColumnNames( #"Expanded Column1"), each Text.AfterDelimiter( _, ".") )
} ) )
in
RenameColumns

View solution in original post

1 REPLY 1
Badrul_IO
New Member

Ok I think I've managed to solve my issue:

 

let
apiUrl = "https://xxx/registration/users",
token = AccessToken,
options = [Headers=[#"Authorization"="Bearer " & token ]],
r = Json.Document(Web.Contents(apiUrl , options)),
result = if r= null then #table(
{ "Column1"}, // defines column names
{} // returns no rows
) else Table.FromList(r, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(result, "Column1", {"userStatus", "role", "count", "date"}, {"Column1.userStatus", "Column1.role", "Column1.count", "Column1.date"}),
RenameColumns = Table.RenameColumns( #"Expanded Column1", List.Zip(
{
Table.ColumnNames( #"Expanded Column1"),
List.Transform(Table.ColumnNames( #"Expanded Column1"), each Text.AfterDelimiter( _, ".") )
} ) )
in
RenameColumns

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

Find out what's new and trending in the Fabric community.