Configuring custom lineage for Power BI

When you create a technical lineage for Power BI, some nodes are created in the technical lineage that do not have corresponding assets in Data Catalog. To ensure that you achieve end-to-end lineage, you need to create a custom technical lineage and ensure that all of the nodes shown in the technical lineage are defined in your JSON files.

The following image shows the hierarchy of nodes in the technical lineage Browse tab pane after integrating Power BI via Edge or the CLI lineage harvester. Notice the "Datasets" node. We'll see below that this folder node has no corresponding asset in Data Catalog.

Tip If you hover your pointer over a data object in the Browse tab pane, a tooltip reveals the asset type. The following image shows that the data object named TestAndDemoWorkspace is a Power BI Workspace asset.

In the following image, examine the breadcrumb of the Power BI Column in Data Catalog. Notice that there is no "Datasets" asset to match the corresponding folder node in the technical lineage.

Mapping of the technical lineage nodes and the Power BI assets in Data Catalog

The following table shows how the nodes in the technical lineage map to the Power BI assets. In our example above, we chose to focus on the "Datasets" node. Notice, however, that the same is true of Dashboards, Dataflows, Reports, and Datamarts. All such nodes in the technical lineage represent folders that don't have corresponding assets in Data Catalog.

Technical lineage node

What is it

Refers to Power BI asset

collibra3.onmicrosoft.com

Asset name

Power BI Server

Premium Per User - Reserved

Asset name

Power BI Capacity

TestAndDemoWorkspace

Asset name

Power BI Workspace

Dashboards

Folder name, contains assets of the type “Power BI Dashboard”.

N/A

Dataflows

Folder name, contains assets of the type “Power BI Data Flow”.

N/A

Datamarts

Folder name, contains assets of the type “Power BI Data Mart”.

N/A

Datasets

Folder name, contains assets of the type “Power BI Data Model”.

N/A

Reports

Folder name, contains assets of the type “Power BI Reports”.

N/A
January Sales Report Asset name Power BI Data Model
DetailedSales Asset name Power BI Table
ProductCategory Asset name Power BI Column

How to configure your lineage and metadata JSON files

In your lineage JSON file, you have to associate the "Datasets" node with the type "folder".

      "nodes": [{
        "name": "collibra3.onmicrosoft.com",
        "type": "Power BI Server"
      }, {
        "name": "Premium Per User - Reserved",
        "type": "Power BI Capacity"
      }, {
        "name": "TestAndDemoWorkspace",
        "type": "Power BI Workspace"
      }, {
        "name": "Datasets",
        "type": "folder"
      }, {
        "name": "January Sales Report",
        "type": "Power BI Data Model"
      }],
      "parent": {
        "name": "DetailedSales",
        "type": "Power BI Table"
      },
      "leaf": {
        "name": "ProductCategory",
        "type": "Power BI Column"
      },
      "props": {
          "fullname": "<fullname>",
          "domain_id": "<domain_id>"
      }

In your metadata JSON file, ensure that all relevant asset types are identified, along with their respective UUIDs. Again, here you have to include "folder", even though it is not an asset type. Because Custom technical lineage requires a UUID for each entry in your metadata JSON file, you need to include one for "folder", as well. The UUID that you include, however, is not used, as there is no corresponding asset in Data Catalog.

    "Power BI Column": {
      "uuid": "00000000-0000-0000-0000-100000000008"
    },
    "Power BI Table": {
      "uuid": "00000000-0000-0000-0000-100000000009"
    },
    "Power BI Data Model": {
      "uuid": "00000000-0000-0000-0000-100000000007"
    },
    "folder": {
      "uuid": "00000000-0000-0000-0000-090000000002"
    },
    "Power BI Workspace": {
      "uuid": "00000000-0000-0000-0000-100000000003"
    },
    "Power BI Capacity": {
      "uuid": "00000000-0000-0000-0000-100000000002"
    },
    "Power BI Server": {
      "uuid": "00000000-0000-0000-0000-100000000001"
    }