Analyzing Report Telemetry
INTRODUCED IN: Business Central 2020 release wave 1
Note
Azure Active Directory is now Microsoft Entra ID. Learn more
Report telemetry gathers data about which reports are run on the environment. It provides information about whether the report succeeded, failed, or was canceled. For each report, it tells you how long it ran, how many SQL statements it executed, and how many rows it consumed.
You use this data to gather statistics on report usage, find failures in reports, or to help identify slow-running reports.
Tip
The time spent to run a report consists of two parts: generating the dataset and rendering the report (applying the layout). In report telemetry, you get two durations: serverExecutionTime and totalTime. The former is roughly the time it takes for the server to generate the dataset. To calculate the rendering time, simply subtract serverExecutionTime from totalTime: renderingTime = totalTime - serverExecutionTime.
Successful report generation
Occurs when a report dataset generates without any errors.
General dimensions
The following table explains the general dimensions of this trace.
Dimension | Description or value |
---|---|
operation_Name | Success report generation Note: The use of the operation_Name column was deprecated in version 16.1. In future versions, data won't be stored in this column. So in version 16.1 and later, use the custom dimension column eventId column custom in Kusto queries instead of operation_Name . |
message | Version 16.1 and later: Report rendered: {report ID} - {report name} Before version 16.1: The report {report ID} '{report name}' rendered successfully |
severityLevel | 1 |
user_Id | The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users. |
Custom dimensions
Dimension | Description or value |
---|---|
aadTenantId | Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common. |
alObjectId | Specifies the ID of the report object that was run. |
alObjectName | Specifies the name of the report object that was run. |
alObjectType | Report. |
alStackTrace | The stack trace in AL. |
clientType | Specifies the type of client that executed the SQL Statement, such as Background or Web. For a list of the client types, see ClientType Option Type. |
companyName | Specifies the display name of the Business Central company for which the report was run. |
component | Dynamics 365 Business Central Server. |
componentVersion | Specifies the version number of the component that emits telemetry (see the component dimension.) |
deprecatedKeys | Specifies a comma-separated list of all the keys that have been deprecated. The keys in this list are still supported but will eventually be removed in the next major release. We recommend that update any queries that use these keys to use the new key name. |
documentFormat | Specifies the format of the report outputs as a result of the report action. See documentFormat. This dimension was added in version 20.0. |
environmentName | Specifies the name of the tenant environment. See Managing Environments. |
environmentType | Specifies the environment type for the tenant, such as Production, Sandbox, Trial. See Environment Types |
eventId | RT0006 This dimension was introduced in Business Central 2020 release wave 1, version 16.1. |
extensionId | Specifies the appID of the extension that the report object belongs to. |
extensionName | Specifies the name of the extension that the report object belongs to. |
extensionVersion | Specifies the version of the extension that the report object belongs to. |
extensionPublisher | Specifies the publisher of the extension that the report object belongs to. |
numberOfRows | Specifies the number of rows/records generated for the report dataset. |
reportAction | Specifies the action that was done on the report. See reportAction. This dimension was added in version 20.0. |
reportingEngine | Specifies the reporting engine used to generate the report, such as ProcessingOnly, Rdlc, or Word. This dimension was added in version 17.3 |
result | Success |
serverExecutionTime | Specifies the amount of time it took the service to complete the request[1]. The time has the format hh:mm:ss.sssssss. |
sqlDatabaseAccessIntent | Specifies the database access intent used to read data for the report, such as ReadOnly, or ReadWrite. This dimension was added in version 19.1. |
sqlExecutes | Specifies the number of SQL statements that the report executed[1]. |
sqlRowsRead | Specifies the number of table rows that were read by the SQL statements[1]. |
telemetrySchemaVersion | Specifies the version of the Business Central telemetry schema. |
totalTime | Specifies the amount of time it took for the system to generate the dataset and render the report[1]. The time has the format hh:mm:ss.sssssss. |
1From telemetrySchemaVersion 0.6 and onwards, this value also includes the CompanyOpen operation.
reportAction
The reportAction dimension shows actions taken to generate a report. The action can be taken from the report request page, for example, from the Send To menu, or from AL code.
Value | Description |
---|---|
None | There were no results from the request page, for example, the user canceled. |
The user selected to print the report. | |
Preview | The user selected to preview the report from the request page. |
Save | The report was saved to a file by a call to the SaveAs method in AL code. |
Schedule | The user selected to schedule the report from the request page. |
Download | The user downloaded the report as a file from the request page. |
Parameters | Parameters and filters were collected from the request page without rendering the output. |
documentFormat
The documentFormat dimension shows the output of the generated report as a result of the report action. The action can be taken from the report request page, for example, from the Send To menu, or from AL code.
Value | Description |
---|---|
None | There was no output, for example, the user canceled. |
The output was a .pdf file type. | |
Xml | The outout was a .xml file type. |
Word | The output was a .docx file type. |
Html | The output was a .html file type. |
Excel | The output was a .xlsx file type that included the layout and dataset. |
ExcelDataset | The output was a .xlsx file type that contained the dataset only. |
Custom | The output was an custom file type. |
ProcessingOnly | The action was for processing report without any kind of layout. |
layoutType
The layoutType shows the layout type that was used to generate the report in the current action. The action can be taken from the report request page, for example, from the Send To menu, or from AL code.
Value | Description |
---|---|
None | There was no layout specified. |
Rdlc | The layout was a .rdlc file type. |
Word | The layout was a .docx file type. |
Excel | The layout was a .xlsx file type. |
Custom | The layout was an custom file type. |
ProcessingOnly | The action was for processing report without any kind of layout. |
Sample KQL code (successful report generation - usage)
This KQL code can help you get started analyzing which reports users run:
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions has 'RT0006'
| where customDimensions.eventId == 'RT0006'
// | where operation_Name == "Success report generation" // use this instead of eventId clause for versions 16.0 or earlier
| where customDimensions.result == "Success"
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionVersion = customDimensions.extensionVersion
, extensionPublisher = customDimensions.extensionPublisher
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// what did the user do
, documentFormat = customDimensions.documentFormat // documentFormat dimension added in version 20.0
, LayoutAppId = customDimensions.layoutAppId // layout dimensions added in version 20.0
, LayoutName = customDimensions.layoutName // layout dimensions added in version 20.0
, LayoutType = customDimensions.layoutType // layout dimensions added in version 20.0
, reportAction = customDimensions.reportAction // reportAction dimension added in version 20.0
, reportingEngine = customDimensions.reportingEngine // reportingEngine dimension was added in version 17.3
// which user ran the report
, usertelemetryId = case(
toint( substring(customDimensions.componentVersion,0,2)) >= 20, user_Id // user telemetry id was introduced in the platform in version 20.0
, 'N/A'
)
If you want to summarize the data, keep the columns you want to group by in the project part of the KQL query above, and add a summarize command:
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions has 'RT0006'
| where customDimensions.eventId == 'RT0006'
// | where operation_Name == "Success report generation" // use this instead of eventId clause for versions 16.0 or earlier
| where customDimensions.result == "Success"
| project timestamp
, alObjectName = customDimensions.alObjectName
, LayoutType = customDimensions.layoutType
, reportAction = customDimensions.reportAction
// calculate report count by ReportName, ReportAction (save/preview/download/...), and LayoutType (Word/Excel/RDLC/...)
| summarize ReportCount=count()
by ReportName = tostring(customDimensions.alObjectName)
, ReportAction = tostring(customDimensions.reportAction)
, LayoutType = tostring(customDimensions.layoutType)
Sample KQL code (successful report generation - all dimensions)
This KQL code can help you get started analyzing report rendering:
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions has 'RT0006'
| where customDimensions.eventId == 'RT0006'
// | where operation_Name == "Success report generation" // use this instead of eventId clause for versions 16.0 or earlier
| where customDimensions.result == "Success"
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionVersion = customDimensions.extensionVersion
, extensionPublisher = customDimensions.extensionPublisher
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// what did the user do
, documentFormat = customDimensions.documentFormat // documentFormat dimension added in version 20.0
, LayoutAppId = customDimensions.layoutAppId // layout dimensions added in version 20.0
, LayoutName = customDimensions.layoutName // layout dimensions added in version 20.0
, LayoutType = customDimensions.layoutType // layout dimensions added in version 20.0
, reportAction = customDimensions.reportAction // reportAction dimension added in version 20.0
, reportingEngine = customDimensions.reportingEngine // reportingEngine dimension was added in version 17.3
// which user ran the report
, usertelemetryId = case(
toint( substring(customDimensions.componentVersion,0,2)) >= 20, user_Id // user telemetry ID was introduced in the platform in version 20.0
, 'N/A'
)
// performance data
, numberOfRows = customDimensions.numberOfRows
// , serverExecutionTime = customDimensions.serverExecutionTime // the datatype for executionTime is timespan
, serverExecutionTimeInMS = toreal(totimespan(customDimensions.serverExecutionTime))/10000 // this shows how to convert timespan to milliseconds
, sqlDatabaseAccessIntent = customDimensions.sqlDatabaseAccessIntent // sqlDatabaseAccessIntent dimension added in version 19.1
, sqlExecutes = customDimensions.sqlExecutes
, sqlRowsRead = customDimensions.sqlRowsRead
// , totalTime = customDimensions.totalTime // the datatype for totalTime is timespan
, totalTimeInMS = toreal(totimespan(customDimensions.totalTime))/10000 // this shows how to convert timespan to milliseconds
| extend renderTimeInMS = totalTimeInMS - serverExecutionTimeInMS
Failed report generation
This operation occurs when the report dataset couldn't be generated because of an error.
General dimensions
The following table explains the general dimensions of the Failed report generation operation.
Dimension | Description or value |
---|---|
message | Version 16.1 and later: Report rendering failed: {report ID} - {report name} Before version 16.1: The report {report ID} '{report name}' couldn't be rendered |
operation_Name | Failed report generation Note: The use of the operation_Name column was deprecated in version 16.1. In future versions, data won't be stored in this column. So in version 16.1 and later, use the custom dimension column eventID column custom in Kusto queries instead of operation_Name . |
severityLevel | 3 |
user_Id | The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users. |
Custom dimensions
Dimension | Description or value |
---|---|
aadTenantId | Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common. |
alObjectId | Specifies the ID of the report object that was run. |
alObjectName | Specifies the name of the report object that was run. |
alObjectType | Report. |
alStackTrace | The stack trace in AL. |
cancelReason[2] | Specifies why the report was canceled. |
clientType | Specifies the type of client that executed the SQL Statement, such as Background or Web. For a list of the client types, see ClientType Option Type. |
companyName | Specifies the display name of the Business Central company for which the report was run. |
component | Dynamics 365 Business Central Server. |
componentVersion | Specifies the version number of the component that emits telemetry (see the component dimension.) |
deprecatedKeys | Specifies a comma-separated list of all the keys that have been deprecated. The keys in this list are still supported but will eventually be removed in the next major release. We recommend that update any queries that use these keys to use the new key name. |
documentFormat | Specifies the format of the report outputs as a result of the report action. See documentFormat. This dimension was added in version 20.0. |
environmentName | Specifies the name of the tenant environment. See Managing Environments. |
environmentType | Specifies the environment type for the tenant, such as Production, Sandbox, Trial. See Environment Types |
eventId | RT0006 This dimension was introduced in Business Central 2020 release wave 1, version 16.1. |
extensionId | Specifies the appID of the extension that the report object belongs to. |
extensionName | Specifies the name of the extension that the report object belongs to. |
extensionVersion | Specifies the version of the extension that the report object belongs to. |
numberOfRows | Specifies the number of rows/records generated for the report dataset. |
reportAction | Specifies the action that was done on the report. See reportAction. This dimension was added in version 20.0. |
reportingEngine | Specifies the reporting engine used to generate the report, such as ProcessingOnly, Rdlc, or Word. This dimension was added in version 17.3 |
result | Specifies the title of the exception that was thrown, such as NavNCLDialogException. |
serverExecutionTime | Specifies the amount of time used by service on the request. The time has the format hh:mm:ss.sssssss. |
sqlExecutes | Specifies the number of SQL statements that the report executed. |
sqlRowsRead | Specifies the number of table rows that were read by the SQL statements. |
telemetrySchemaVersion | Specifies the version of the Business Central telemetry schema. |
totalTime | Specifies the amount of time used to generate the dataset and render the report before it failed. The time has the format hh:mm:ss.sssssss. |
2 Available in Business Central 2020 release wave 2 and later only.
Analyzing report generation failures
When a report fails to generate, the result
column in the CustomDimensions for the event RT0006 will include the title of the exception that was thrown by the service or the AL code.
Sample KQL code (failed report generation)
This KQL code can help you get started analyzing report failures:
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions has 'RT0006'
| where customDimensions.eventId == 'RT0006'
// | where operation_Name == "Success report generation" // use this instead of eventId clause for versions 16.0 or earlier
| where customDimensions.result <> "Success"
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionVersion = customDimensions.extensionVersion
, extensionPublisher = customDimensions.extensionPublisher
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// what did the user do
, documentFormat = customDimensions.documentFormat // documentFormat dimension added in version 20.0
, LayoutAppId = customDimensions.layoutAppId // layout dimensions added in version 20.0
, LayoutName = customDimensions.layoutName // layout dimensions added in version 20.0
, LayoutType = customDimensions.layoutType // layout dimensions added in version 20.0
, reportAction = customDimensions.reportAction // reportAction dimension added in version 20.0
, reportingEngine = customDimensions.reportingEngine // reportingEngine dimension was added in version 17.3
// which user ran the report
, usertelemetryId = case(
toint( substring(customDimensions.componentVersion,0,2)) >= 20, user_Id // user telemetry id was introduced in the platform in version 20.0
, 'N/A'
)
// what happened
, alStackTrace = customDimensions.alStackTrace
, failureReason = customDimensions.result
Cancellation report generation
This operation occurs when the report dataset generation was canceled. There are various conditions that can cancel a report. The Cancellation report generation operation emits different trace messages for each condition.
General dimensions
The following table explains the general dimensions of the Cancellation report generation operation.
Dimension | Description or value |
---|---|
operation_Name | Cancellation report generation Note: The use of the operation_Name column was deprecated in version 16.1. In future versions, data won't be stored in this column. So in version 16.1 and later, use the custom dimension column eventID column custom in Kusto queries instead of operation_Name . |
message | Specifies the reason why the report was canceled. See Analyzing cancellation messages section for details. |
severityLevel | 2 |
user_Id | The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users. |
Custom dimensions
Dimension | Description or value |
---|---|
aadTenantId | Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common. |
alObjectId | Specifies the ID of the report object that was run. |
alObjectName | Specifies the name of the report object that was run. |
alObjectType | Report. |
alStackTrace | The stack trace in AL. |
clientType | Specifies the type of client that executed the SQL Statement, such as Background or Web. For a list of the client types, see ClientType Option Type. |
companyName | Specifies the display name of the Business Central company for which the report was run. |
component | Dynamics 365 Business Central Server. |
componentVersion | Specifies the version number of the component that emits telemetry (see the component dimension.) |
deprecatedKeys | Specifies a comma-separated list of all the keys that have been deprecated. The keys in this list are still supported but will eventually be removed in the next major release. We recommend that update any queries that use these keys to use the new key name. |
environmentName | Specifies the name of the tenant environment. See Managing Environments. |
environmentType | Specifies the environment type for the tenant, such as Production, Sandbox, Trial. See Environment Types |
eventId | RT0007 This dimension was introduced in Business Central 2020 release wave 1, version 16.1. |
extensionId | Specifies the appID of the extension that the report object belongs to. |
extensionName | Specifies the name of the extension that the report object belongs to. |
extensionVersion | Specifies the version of the extension that the report object belongs to. |
telemetrySchemaVersion | Specifies the version of the Business Central telemetry schema. |
Sample KQL code (cancelled report generation)
This KQL code can help you get started analyzing report that were cancelled by users or the platform.
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions has 'RT0007'
| where customDimensions.eventId == 'RT0007'
// | where operation_Name == "Success report generation" // use this instead of eventId clause for versions 16.0 or earlier
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionVersion = customDimensions.extensionVersion
, extensionPublisher = customDimensions.extensionPublisher
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// what did the user do
, documentFormat = customDimensions.documentFormat // documentFormat dimension added in version 20.0
, LayoutAppId = customDimensions.layoutAppId // layout dimensions added in version 20.0
, LayoutName = customDimensions.layoutName // layout dimensions added in version 20.0
, LayoutType = customDimensions.layoutType // layout dimensions added in version 20.0
, reportAction = customDimensions.reportAction // reportAction dimension added in version 20.0
, reportingEngine = customDimensions.reportingEngine // reportingEngine dimension was added in version 17.3
// which user ran the report
, usertelemetryId = case(
toint( substring(customDimensions.componentVersion,0,2)) >= 20, user_Id // user telemetry ID was introduced in the platform in version 20.0
, 'N/A'
)
// why was the report cancelled
, cancelReason = tostring( customDimensions.cancelReason )
//
, cancelReasonLong = case(
message has "The number of processed rows exceeded", "MaxRowsExceeded"
, message has "The action took longer to complete", "MaxTimeExceeded"
, message has "Received a cancellation request from the user", "UserCancelled"
, "Unknown reason"
)
Analyzing report cancellations
The cancellation messages indicate events that caused the report to be canceled. The telemetry can help identify slow-running reports - reports that take longer than expected to run and generate a large number of rows.
Note
The service evaluates cancellation events in a specific order, and the evaluation is done every five seconds. For more information, see Report Generation and Cancellation Flow.
Cancellation event received. Requesting cancellation of the action.
This message occurs when the session canceled a report as it was being generated.
Received a cancellation request from the user. Requesting cancellation of the action.
This message occurs when a user canceled a report in the client as it was being generated.
The action took longer to complete ({0}) than the specified threshold ({1}). Requesting cancellation of the action.
The service is configured to cancel reports if they take longer to generate than a set amount of time. With Business Central online, you can't change the threshold. With Business Central on-premises, you change the threshold by setting the Max Execution Timeout parameter on the Business Central Server instance. There's no timeout for on-premises by default. For more information, see Configuring Business Central Server.
The rendering of the word report has been cancelled because it took longer than the specified threshold ({0})"
This message occurs when a report that based on a Word layout takes longer to generate than the specified threshold. The event is only relevant for Business Central online. There's no timeout for on-premises.
The number of processed rows exceeded ({0} rows) the maximum number of rows ({1} rows). Requesting cancellation of the action.
The service is configured to cancel reports if they generate more than a set number of rows. With Business Central online, you can't change this threshold. With Business Central on-premises, you change the threshold by setting the Max Rows parameter on the Business Central Server instance. There's no limit on rows for on-premises by default. For more information, see Configuring Business Central Server.
Report cancelled but a commit occurred
This operation occurs when the report dataset generation was canceled but a COMMIT operation occurred before the cancellation. This pattern isn't recommended. Reconsider the report design.
General dimensions
The following table explains the general dimensions of the Report cancelled but a commit occurred operation.
Dimension | Description or value |
---|---|
message | The report <ID> '<Name>' is being canceled, but a COMMIT() has been performed. This can lead to data inconsistency if the report is not idempotent |
severityLevel | 2 |
user_Id | The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users. |
Custom dimensions
Dimension | Description or value |
---|---|
aadTenantId | Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common. |
alObjectId | Specifies the ID of the report object that was run. |
alObjectName | Specifies the name of the report object that was run. |
alObjectType | Report. |
alStackTrace | The stack trace in AL. |
cancelReason | The reason why the report was cancelled |
clientType | Specifies the type of client that executed the SQL Statement, such as Background or Web. For a list of the client types, see ClientType Option Type. |
companyName | Specifies the display name of the Business Central company for which the report was run. |
component | Dynamics 365 Business Central Server. |
componentVersion | Specifies the version number of the component that emits telemetry (see the component dimension.) |
deprecatedKeys | Specifies a comma-separated list of all the keys that have been deprecated. The keys in this list are still supported but will eventually be removed in the next major release. We recommend that update any queries that use these keys to use the new key name. |
environmentName | Specifies the name of the tenant environment. See Managing Environments. |
environmentType | Specifies the environment type for the tenant, such as Production, Sandbox, Trial. See Environment Types |
eventId | RT0011 This dimension was introduced in Business Central 2020 release wave 1, version 16.1. |
extensionId | Specifies the appID of the extension that the report object belongs to. |
extensionName | Specifies the name of the extension that the report object belongs to. |
extensionPublisher | Specifies the name of the extension publisher that the report object belongs to. |
extensionVersion | Specifies the version of the extension that the report object belongs to. |
telemetrySchemaVersion | Specifies the version of the Business Central telemetry schema. |
Sample KQL code (cancelled report generation where commit occurred)
This KQL code can help you get started analyzing report that were cancelled by users or the platform but where a database commit occurred.
traces
| where timestamp > ago(60d) // adjust as needed
| where customDimensions.eventId == 'RT0011'
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionVersion = customDimensions.extensionVersion
, extensionPublisher = customDimensions.extensionPublisher
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// what did the user do
, documentFormat = customDimensions.documentFormat // documentFormat dimension added in version 20.0
, LayoutAppId = customDimensions.layoutAppId // layout dimensions added in version 20.0
, LayoutName = customDimensions.layoutName // layout dimensions added in version 20.0
, LayoutType = customDimensions.layoutType // layout dimensions added in version 20.0
, reportAction = customDimensions.reportAction // reportAction dimension added in version 20.0
, reportingEngine = customDimensions.reportingEngine // reportingEngine dimension was added in version 17.3
// which user ran the report
, usertelemetryId = case(
toint( substring(customDimensions.componentVersion,0,2)) >= 20, user_Id // user telemetry ID was introduced in the platform in version 20.0
, 'N/A'
)
// why was the report cancelled
, cancelReason = tostring( customDimensions.cancelReason )
, alStackTrace = customDimensions.alStackTrace
Related information
Report performance
Troubleshooting report errors
Monitoring and Analyzing Telemetry