Skip to main content
Microsoft Idea

Power BI

New

Improve readability of PowerBI error emails

Vote (2) Share
Mattias De Smet's profile image

Mattias De Smet on 17 Apr 2024 09:06:48

When a PowerBI semantic model refresh fails, an email is sent to the owner with the subject "Refresh failed" and an unformatted string of JSON with details.


Problem: This is not a clear actionable email and easily puts you on the wrong track trying to identify the problem.

E.g. Refresh failed:

Sales has failed to refresh.

Failure details: The last refresh attempt failed because of an internal service error. This is usually a transient issue. If you try again later and still see this message, contact support.

"error":"code":"DM_GWPipeline_Gateway_MashupDataAccessError","pbi.error":"code":"DM_GWPipeline_Gateway_MashupDataAccessError","parameters":,"details":"code":"DM_ErrorDetailNameCode_UnderlyingErrorCode","detail":"type":1,"value":"-2147467259","code":"DM_ErrorDetailNameCode_UnderlyingErrorMessage","detail":"type":1,"value":" ccon Timeout expired. The timeout period elapsed prior to completion of the operation.,"code":"DM_ErrorDetailNameCode_UnderlyingHResult","detail":"type":1,"value":"-2147467259","code":"Microsoft.Data.Mashup.HostingError.Reason","detail":"type":1,"value":"Timeout","exceptionCulprit":1Table: Invoice Line.


As you can see on the variety of colours used all the different clues there are, but they don't help. As a user I can see:

  • ok , the dataset refresh failed, due to an internal service error... probably nothing I can do about, but let's dig deeper
  • dataaccesserror, value -2147467259... where can I find this value? Do I recognize it from data in my data model?
  • oh, underlying error, weird looking ccon tags, probably to difficult for me to understand. Something about timeout elapsed, but what timeout, where, what was happening?
  • at the very end, the most important hint, which is so easily overlooked "Table Invoice Line", ok this is where something went wrong


Solution(s):

It would be more clear if either:

1/ the JSON was formatted, so the structure of the error message becomes more "interpretable". (JSON below is redacted for the submittion to work)

Failure details: The last refresh attempt failed because of an internal service error. This is usually a transient issue. If you try again later and still see this message, contact support. 

Table: Invoice Line.

"error":

"code":"DM_GWPipeline_Gateway_MashupDataAccessError",

"pbi.error":

"code": "DM_GWPipeline_Gateway_MashupDataAccessError",

"parameters"::,

"details": :

"code":"DM_ErrorDetailNameCode_UnderlyingErrorCode",

"detail":

"type":1,

"value":"-2147467259"

"code":"DM_ErrorDetailNameCode_UnderlyingErrorMessage",

"detail":

"type":1,

"value":"Timeout expired. The timeout period elapsed prior to completion of the operation."

,....

2/ the JSON was rendered as a clear error message (with a "see details" for the geek that wants to see the actual JSON result) in a format like:

Semantic Model "Sales Process" refresh failed:

Table "Invoice Line" failed with error:

Timeout expired. The timeout period elapsed prior to completion of the operation. (Code: -2147467259 - https://aka.ms/2147467259)


Nice-to-have: It would be even more helpful if (for admins) the value of the timeout period is shown and the statement of the operation can be shown, to allow faster troubleshooting, but I can understand this can expose internal logic and pose a risk.