Forum Discussion
Use Network Graph by Powerviz to create entity/shareholder hierarchy with ownership percentage
Hello everyone,
I would like to create the hierarchy of entities and shareholders of a large company using "Network Graph by Powerviz" visualization. My current data model is as follows: shareholder code/entity code/level/% ownership (it reflects direct links when the level is 1, but also indirect links when the level is higher).
I would like to be able to navigate between the different levels (starting from a shareholder to arrive at the entities owned, then from one owned entity access the next level, etc.). Is my model suitable for this visualization?
Thank you in advance for your advice !
Céline
Hi celine_84
Since Network Graph by Powerviz is an external visual and not a native Microsoft visual, the community here cannot fully confirm compatibility. The best approach is to check directly with the vendor’s support and documentation.
You can reach it or from marketplace :
or by the link:
https://powerviz.ai/contact-usIf this post helps, then please consider Accepting it as the solution to help the other members find it more quickly
Hi celine_84 , Thank you for reaching out to the Microsoft Community Forum.
The issue you’re seeing happens because the visual treats each node code as a single unique point. When you add paths, entities like 020163 still appear only once, so their children won’t connect under every branch they belong to. You need to clone node instances for each distinct ownership path while keeping the original code as a label.
In practice, when you unfold ownership paths in Power Query or your database, generate a unique ID per node per path. Use these unique IDs as the node keys in the Network Graph and use the original codes only as labels. This allows the same entity to appear in multiple branches, preserving every ownership route correctly.
You can then filter by the root shareholder to show only the edges and node instances from paths starting with that shareholder. This avoids the split effect you see now, because each ownership path is visually distinct but still labelled with the true entity codes.
16 Replies
- Ritaf1983
Super User
Hi celine_84
Since Network Graph by Powerviz is an external visual and not a native Microsoft visual, the community here cannot fully confirm compatibility. The best approach is to check directly with the vendor’s support and documentation.
You can reach it or from marketplace :
or by the link:
https://powerviz.ai/contact-usIf this post helps, then please consider Accepting it as the solution to help the other members find it more quickly
- v-hashadapu
Community Support
Hi celine_84 , Thank you for reaching out to the Microsoft Fabric Community Forum.
To build a shareholder–entity hierarchy in Network Graph by Powerviz, provide only direct ownership links in a Source -> Target format, with optional % ownership. You should not include indirect rows or a level column, since the visual already reveals deeper levels as you expand nodes. Adding pre-calculated levels can create duplicate edges and clutter the graph.
If you want to calculate or filter by hierarchy depth, use DAX’s parent-child functions (like PATH, PATHITEM, PATHLENGTH). These let you explore ownership paths and levels in the data model, while the graph visual stays clean and interactive. In short, keep the model rich with hierarchy logic but feed the visual only direct relationships.
In practice, keep two layers: your Power BI model can use DAX to enrich the hierarchy (for queries, filters or level-based measures), while the Powerviz Network Graph consumes only the clean Source -> Target table with optional ownership weight. This way, the visual remains clear and interactive, while your model still supports more complex ownership analysis.
Understanding functions for parent-child hierarchies in DAX - DAX | Microsoft Learn
Parent and Child functions (DAX) - DAX | Microsoft Learn
- v-hashadapu
Community Support
Hi celine_84 , hope you are doing great. May we know if your issue is solved or if you are still experiencing difficulties. Please share the details as it will help the community, especially others with similar issues.
- celine_84Frequent Visitor
Hi v-hashadapu, I haven't had time to test your solution yet, but I'll let you know as soon as I have! Thank you
- v-hashadapu
Community Support
Hi celine_84 , Thanks for the update. When you have had time to test it, please do let us know the results and any insights you came across, that will help others in the community.
- celine_84Frequent Visitor
Hi v-hashadapu, the filtering with the PATH functions does not seem to work in my case. From what I have observed, the DAX PATH functions require a strict parent-child hierarchy where each parent can have multiple children but each child can only have one parent. My ownership structure is a graph with multiple branches (one entity can have multiple shareholders), which breaks this rule.
Do you have an alternative to suggest ? Maybe the Network Graph by Powerviz is not appropriate in my case.- lbendlin
Super User
Network graphs and hierarchies are slightly different things. Having said that, one approach to multiparent scenarios is to clone the child nodes like so Parent-Child Hierarchies with multiple parents in Power BI with Power Query
- celine_84Frequent Visitor
Hi v-hashadapu, thank you for your explanations on the differences between hierarchies and network graphs. However, I don't quite understand how to use child node cloning in my case to filter a shareholder and display all of their ownership layers. The tests I have performed so far have not been successful.
- v-hashadapu
Community Support
Hi celine_84 , Thank you for reaching out to the Microsoft Community Forum.
To make a shareholder’s full ownership tree inside Power BI you must precompute paths (clone child nodes). Start from your direct Edges table (Source, Target, Ownership) and run a Power Query routine that expands outward from a chosen start node: find its direct targets, then targets-of-targets, etc., up to a maxDepth. Each discovered edge becomes a row annotated with a PathID and Level so the same entity can appear multiple times (once per distinct path). Loading that table into the model gives you an explicit everything owned by X dataset you can filter and report on.
Make sure to add two protections, limit maxDepth (3–5 for interactivity) so the table doesn’t explode and prevent cycles by rejecting any next node already present in the same PathID. Without cycle detection a loop in ownership will create runaway duplicates and break tests. Create PathID by concatenating the parent path with a small suffix so you can trace which route produced each cloned node.
Wire it as a parameterized function and expose startNode via a Power Query parameter or a disconnected slicer table that a wrapper query reads. Calling the function for a given shareholder returns the unfolded edges for that shareholder; feed that to the Network Graph (Source -> Target) or any table/visual and it will show all direct and indirect holdings.
If you only need interactive exploration and not a precomputed full tree, skip cloning. Keep a simple Source -> Target table and use the network visual’s expand-on-click. Cloning is only necessary when you must filter or report all entities owned (directly+indirectly) by X inside Power BI.
- v-hashadapu
Community Support
Hi celine_84 ,
Hope you're doing okay! May we know if it worked for you, or are you still experiencing difficulties? Let us know — your feedback can really help others in the same situation.
- v-hashadapu
Community Support
Hi celine_84 , Hope you're doing fine. Can you confirm if the problem is solved or still persists? Sharing your details will help others in the community.
- celine_84Frequent Visitor
Hi v-hashadapu,
I added a “path” column to my data model (the change was made in the database), then isolated each parent in a dedicated column and used transposition to transform the columns into rows. The visual uses shareholders and entities as categories, and a segment based on the parent captured from the path allows filtering.
This does not work entirely, because, for example, code 021120, which is the parent of 020163, is not linked to the children of 020163, so this entity appears in another area of the visual.- v-hashadapu
Community Support
Hi celine_84 , Thank you for reaching out to the Microsoft Community Forum.
The issue you’re seeing happens because the visual treats each node code as a single unique point. When you add paths, entities like 020163 still appear only once, so their children won’t connect under every branch they belong to. You need to clone node instances for each distinct ownership path while keeping the original code as a label.
In practice, when you unfold ownership paths in Power Query or your database, generate a unique ID per node per path. Use these unique IDs as the node keys in the Network Graph and use the original codes only as labels. This allows the same entity to appear in multiple branches, preserving every ownership route correctly.
You can then filter by the root shareholder to show only the edges and node instances from paths starting with that shareholder. This avoids the split effect you see now, because each ownership path is visually distinct but still labelled with the true entity codes.