We've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now
I am currently facing an issue in Power BI while trying to build a dynamic data completeness table from a wide table structure. My goal is to display each field as a row, along with its value, a completeness indicator (blank or not), and a completion rate. This table must be dynamic and respond to a drill-through filter (e.g., filtered by a unique identifier).
⚠️ Important context: I am working in DirectQuery mode, so transformations in Power Query (such as unpivoting) are limited or not preferred due to performance constraints.
Source table (FactData):
👉 With a global completion indicator:
3 out of 4 fields filled → 75%
Objective
Looking for a robust approach to:
Now, I’m wondering if it’s possible to create a general measure to calculate a completion rate. The idea would be for this measure to automatically detect which columns are being used and which are empty, in order to calculate an overall completion percentage, instead of checking each column individually and using a fixed calculation. I’m looking for something quick and dynamic; otherwise, would it be necessary to use configuration tables or a similar approach to make it more flexible and maintainable?
Hi @akim_no ,
The earlier approach was based on a Static values (such as Yes/No). However, to make the solution more flexible, here’s a dynamic approach to calculate the completion rate.
Based on your reference table, I created an unpivoted table named "Post_ETL", where all fields are transformed into rows.
In this structure, the "Value" column can contain multiple types of entries and is no longer limited to specific values like Yes or No.
Measure to calculate completion count
How the measure works:
Measure to calculate completion rate%
For the completion rate:
This calculation provides the overall completion rate, considering only non-blank entries and dynamically adjusting based on the data and applied filters.
Hope this helps!
Hi @akim_no , when you are transforming your data using Dataflowgen 2 , the power query editor , you can add a conditional coloumn, the condition:
if Value contains "Yes" then 1
if Value contains "No" then 1
else 0
In your Power BI Report write a measure:
This is also suited for slicer selection and card visuals:
Hope this works.
Right, @InsightsByV this approach makes a lot of sense.
Performing the transformation at the source (e.g., using Dataflow Gen2) would definitely help reduce refresh overhead and improve overall report performance.
If we try to handle this within Power BI in DirectQuery mode, it would require creating a disconnected table and additional DAX logic such as Datatable and Switch , which can become difficult to maintain as the number of fields grows.
So pushing this logic upstream is a much more scalable and cleaner approach.
Hi @akim_no ,
As you are in DirectQuery mode, I believe pushing the desired transformation at source level. I have come across similar issues where transformations were required. For which, we created DataFlow Gen2 in Fabric and used that table in Power BI.
This will keep your model light as well.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.
| User | Count |
|---|---|
| 54 | |
| 39 | |
| 32 | |
| 17 | |
| 15 |
| User | Count |
|---|---|
| 64 | |
| 63 | |
| 37 | |
| 36 | |
| 22 |