Dataverse Metadata Tracker in Power BI transforms your data documentation workflow. It automatically extracts and visualizes table structures, column definitions, and relationships from Dataverse, eliminating manual documentation efforts and ensuring always-current metadata insights.

This solution not only improves data governance and transparency but also empowers your team with comprehensive understanding of your data architecture.

What is Dataverse Metadata Tracker?

The Dataverse Metadata Tracker serves as a comprehensive solution that taps into your data's structural information, capturing table definitions, column properties, and relationship mappings to provide a complete visual blueprint of your entire Dataverse data model.

Why Access Dataverse Metadata?

Accessing Dataverse metadata lets you create auto-updating documentation, enforce governance through schema change visibility, and enhance data modeling by spotting inconsistencies and optimization opportunities across your environment.

1. Get Dataverse EnvironmentURL and SolutionId

2. Create GetSolutions Function in Power BI

(EnvironmentId as text, SolutionId as text) => 
let
    Source = Json.Document(
        Web.Contents(
            "https://" & 
            EnvironmentId & //Dataverse Environment ID
            "/api/data/v9.0/solutioncomponents?$select=objectid&$filter=_solutionid_value eq " & 
            SolutionId & //Solution ID
            " and componenttype eq 1"
        )
    )
in
    Source

3. Create GetEntityDefinitions Function in Power BI

(EnvironmentId as text, SolutionId as text) => 
let
    Source = Json.Document(
        Web.Contents(
            "https://" & 
            EnvironmentId & //Dataverse Environment ID
            "/api/data/v9.0/solutioncomponents?$select=objectid&$filter=_solutionid_value eq " & 
            SolutionId & //Solution ID
            " and componenttype eq 1"
        )
    )
in
    Source

4. Combine it in Power Query

let
    Source = Table.FromList(
        GetSolutions(EnvironmentId, SolutionId)[value],
        Splitter.SplitByNothing(),
        null,
        null,
        ExtraValues.Error
    ),
    #"Expanded Column" = Table.ExpandRecordColumn(Source, "Column1", {"objectid", "solutioncomponentid"}, { "ObjectId", "SolutionComponentId"}),
    GetEntityDefinitions = Table.AddColumn(#"Expanded Column", "EntityDefinition", each GetEntityDefinitions([ObjectId])),
    #"Removed Errors" = Table.RemoveRowsWithErrors(GetEntityDefinitions, {"EntityDefinition"}),
    #"Expanded EntityDefinition" = Table.ExpandRecordColumn(#"Removed Errors", "EntityDefinition", {"MetadataId", "LogicalName", "TableType", "Description", "DisplayName", "Attributes"}, {"MetadataId", "TableLogicalName", "TableType", "Description", "DisplayName", "Attributes"}),
    #"Expanded Description" = Table.RenameColumns(
        Table.TransformColumns(
            #"Expanded EntityDefinition",
            {
                {"Description", each _[LocalizedLabels]{0}[Label], type text}
            }
        ),
            {{"Description", "TableDescription"}}
        ),
    #"Expanded DisplayName" = Table.RenameColumns(
            Table.TransformColumns(
                #"Expanded Description",
                {{"DisplayName", each _[LocalizedLabels]{0}[Label], type text}}
            ),
            {{"DisplayName", "TableName"}}
        ),
    #"Expanded Attributes" = Table.RenameColumns(
          Table.TransformColumns(
                Table.ExpandRecordColumn(                
                    Table.ExpandListColumn(            
                        #"Expanded DisplayName",
                        "Attributes"
                    ),
                    "Attributes",
                    {"AttributeType", "LogicalName", "Description", "DisplayName"},
                    {"AttributeType", "ColumnLogicalName", "Description", "DisplayName"}
                ),
                {  
                    {"Description", each _[LocalizedLabels]{0}[Label], type text},
                    {"DisplayName",  each _[LocalizedLabels]{0}[Label], type text}
                }
            ),
            {{"Description","ColumnDescription"}, {"DisplayName","ColumnDisplayName"}}
        ),
    #"Removed Errors1" = Table.RemoveRowsWithErrors(#"Expanded Attributes", {"ColumnDisplayName"})
in
    #"Removed Errors1"

Voilá!

Dataverse Metadata Tracker transforms your documentation process by automatically capturing and visualizing the complete structure of your data environment.

It eliminates manual metadata management, ensures accuracy, and delivers comprehensive insights into your data architecture in real time. This approach streamlines governance, enhances model transparency, and empowers your team to build more robust solutions while maintaining perfect alignment between documentation and implementation.

#15 Quick Win - Dataverse Metadata in Power BI.pdf

#15 Quick Win - Dataverse Metadata in Power BI.pdf

1.29 MBPDF File

Keep reading

No posts found