Microsoft Purview - 使用 REST API 生成自定义世系

本文提供了在Microsoft Purview 数据目录中使用 REST API 创建数据世系条目的步骤。 在 Microsoft Purview 中自动生成的世系不完整或缺失的情况下,可以在 Microsoft Purview 门户中手动 生成世系或使用 REST API 自定义世系。 本文重点介绍如何使用可克服手动世系已知限制并提供更多选项的 REST API。

背景

显示数据集之间的世系的能力是 Purview Microsoft重要的平台功能之一。 数据工厂、Data Share和 Power BI 等系统在移动时捕获数据的世系。 在某些情况下,出于实际可视化和企业报告目的,Microsoft Purview 自动生成的世系不完整或缺失。 在这些方案中,Apache Atlas 挂钩和 REST API 支持自定义世系报告。

使用 REST API 生成自定义世系可以克服以下文章中所述的一些手动世系限制:

本文的其余部分介绍了如何使用 Microsoft Purview REST API 在 Microsoft Purview 上生成和报告自定义世系。

先决条件

应用场景

需要生成自定义世系时,有两种用例:

A. 创建新实体并将其与世系关联

B. 将现有实体或世系链接到另一个现有实体或世系

例如,需要在实体 A & B 之间报告世系,但 A & B 目前不存在。

若要创建实体 A & B,请调用 Microsoft Purview REST API: 实体 - 批量创建或更新 - REST API

POST https://{accountname}.purview.azure.com/datamap/api/atlas/v2/entity/bulk?api-version=2023-09-01
sample_entity_json = '{"entity": {"status": "ACTIVE","version": 0,"name": ENTITY_A"}.......{"entity": ........}}'
#Send POST JSON containing entities to be created
CreateOrUpdateEntitesUrl = 'https://<purview_account_name>.purview.azure.com/datamap/api/atlas/v2/entity/bulk'
EntitiesResponse = requests.post(CreateOrUpdateEntitesUrl, json = json.loads(sample_entity_json) ,headers=headers)
entitiesRes = json.loads(EntitiesResponse.text)

API 响应“201 已创建”指示已成功创建实体,并且其各自的 GUID 包含在输出 JSON 中。

创建实体 A & B 后,请转到步骤 B 以使用相同的 REST API 链接世系链中的实体。

  • 如果要链接的实体数不是时间或资源密集型 (例如,) 少于 20-30 个实体,则可以在 Microsoft Purview 门户中手动连接世系。 按照 手动世系用户指南 ,了解手动创建世系连接的步骤。
  • 如果要建立大量世系连接,则需要自动执行该过程,或者如果无法使用 Microsoft Purview 门户手动世系,请继续执行链接和构建自定义世系的 API 过程。

自定义世系 JSON 有效负载:

使用有效负载执行 POST /entity/bulk实体 - 批量创建或更新 - REST API ,如图所示:

POST https://{accountname}.purview.azure.com/datamap/api/atlas/v2/entity/bulk?api-version=2023-09-01
sample_entity_json = '{
  "entities": [
    {
      "status": "ACTIVE",
      "version": 1,
      "typeName": "Process",
      "attributes": {
        "inputs": [
          {
            "guid": "24558fd8-9cdc-47de-9310-56a58108bab0",
            “guid”: “27163581-9aca-212a-782a-213612639abc”
          }
        ],
        "outputs": [
          {
            "guid": "e33c694a-2c4f-4cae-8c27-06f6f6f60000"
          }
        ],
        "qualifiedName": "cassandra://query",
        "name": "query"
      }
    }
  ]
}'

#In this code snippet, we send the JSON as POST request containing the two GUIDs as input and "output" GUID as output. This creates lineage with 2 directional inputs and 1 directional output.
#Note: using the same API and SDK code you can create lineage with any number of inputs, any number of processes in between, any number of typedefs and any number of outputs.
#The API/SDK method is the most flexible and versatile menthod of creating lineage.
 
CreateLineageEntitesUrl = 'https://<purview_account_name>.purview.azure.com/datamap/api/atlas/v2/entity/bulk'
EntitiesResponse = requests.post(CreateLineageEntitesUrl, json = json.loads(sample_entity_json),headers=headers)
entitiesRes = json.loads(EntitiesResponse.text)

此 JSON 有效负载创建自定义世系。 它适用于已在“输入”JSON 中提供其 GUID 的现有资产。 例如“guid”:“24558fd8-9cdc-47de-9310-56a58108bab0”和“27163581-9aca-212a-782a-213612639abc”是指世系的方向输入和“guid”:“e33c694a-2c4f-4cae-8c27-06f6f6f60000”是指世系的方向输出,这是 Purview 自动扫描的现有资产。 我们刚刚在两个资产之间创建了世系。

注意

如果资产尚不存在,则需要在此步骤之前运行批量实体创建 API,在创建世系关系之前创建这些实体。 步骤 A 介绍了使用 POST /entity/bulk API 和 Python 代码片段的批量实体创建过程。

方案结果

API 响应“201 已创建”指示成功创建世系图链接,并且创建的 GUID 包含在输出 JSON 中。 世系显示在 Microsoft Purview 门户中:

  • 方案 A:基于通过 API 创建的资产的自定义生成世系:

    显示方案 A 的屏幕截图:通过 API 创建的资产中的自定义生成世系。

  • 方案 B:通过 API 链接的预先存在的资产自定义生成的世系。

    注意

    如果世系是从预先存在的实体创建的,则观察预先存在的世系图保持不变,并且会创建并显示新的链接。

    显示方案 B 的屏幕截图:通过 API 链接的预先存在的资产的自定义生成世系。