Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
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
Solved! Go to Solution.
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
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
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.