Within Power BI, you can describe key performance indicators, as well as columns and tables. The latter usually makes a lot of sense if you offer appropriate self-service options to explain to the respective department or user what kind of data they are actually seeing and using. Calculated columns, on the other hand, follow a logic that is usually only known to the product owner or developers. It makes sense to also include this information in documentation. But to be Merkel, that’s usually only used last :-)
Key performance indicators are usually the most important part of the visualization for the end user. Even if the name usually seems quite simple, such as the total sales, they can also contain corresponding logic. For example, the question of whether cancellation bookings are excluded or included in the calculation. Therefore, it is important to make this information available to the end user.
In this blog post, I would like to show you how to create the descriptions, make them available in a table, and visualize them. The latter must, of course, always meet the requirements. But regardless, I would like to give you some ideas here. The relevant functions:
[Function] | [Description] |
INFO.VIEW.COLUMNS | Returns a list of all columns in the current model. Can use in calculations, including calculated tables. |
INFO.VIEW.MEASURES | Returns a list of all measures in the current model. Can use in calculations, including calculated tables. |
INFO.VIEW.RELATIONSHIPS | Returns a list of all relationships in the current model. Can use in calculations, including calculated tables. |
INFO.VIEW.TABLES | Returns a list of all tables in the current model. Can use in calculations, including calculated tables. |
Source: https://learn.microsoft.com/en-us/dax/info-functions-dax
These functions provide information about the queried elements and can be transferred directly into a table. They also provide information about relationships between tables. While no descriptions can be stored here, they can provide users with information about how tables relate to each other, for example, whether the date represents orders or deliveries.
Within my model, I created two simple measures.

To add a description, you need to switch to the relationship view, then you can create the key figure and add a description. You can also use the co-pilot here; for this, it must be activated and the workspace must be connected to a corresponding capacity.

Of course, no business user or report creator would look for a description that applies to the corresponding key figure.
To convert the descriptions into a table, the following steps are necessary:

To do this, a new table must be created with the following command:
M Desc = INFO.VIEW.MEASURES()
As a result, some information about the key figure is entered into a new table. This includes the entered description and the DAX command for calculating the key figure.

The measures of integrated semantic models are also displayed, as are the measures and calculations when using composite models.
Of course, if new measures are added, the table must be updated manually.
To display this information for the user, a table can be used, but I see this as a problem, as the user would first have to search for the metric used for a visualization. One option would be to use tooltips, but these usually contain other information. However, there is also the Info button Visualizations, which can also display corresponding subreports. Unfortunately, filters cannot be passed to these via the button, so you have to create a report for each visualization and filter it accordingly.

The Info button can now be implemented and the report can be embedded here. Users can now access information about the key figures used via the button.

In my opinion, this is a better way to describe measures and display information. This way, the descriptions can be used in all reports that use the respective semantic model.