0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Microsoft PurviewのLineageを外部に出力する(その2)

Last updated at Posted at 2022-11-02

この記事でやること

この記事ではMicrosoft PurviewのLineageをREST APIでJSON形式で取得しGraphvizを使って可視化します。
REST APIの実行はPythonを使っています。

Lineageの取得と表示

前回の記事で取得したLineageをそのまま使っていきます。
今回は各ノードを繋げていきます。

前回はguidEntityMapに着目しましたが、今回はrelationsに着目します。
image.png

relationsには各ノードの前後関係がfromEntityIdとtoEntityIdという形でGUIDで格納されています。

{
    "fromEntityId": "1e8307e9-24af-445b-a141-a4aa5ada48b4",
    "toEntityId": "1edd526e-95bf-4c99-84b7-d249e28abc3f",
    "relationshipId": "995e1e25-bfa1-4608-9fff-9733a38993a4",
    "source": "DataFactory"
},
{
    "fromEntityId": "1edd526e-95bf-4c99-84b7-d249e28abc3f",
    "toEntityId": "8e4efe1e-842a-42e6-a553-9f9d72d1b2d3",
    "relationshipId": "9c82f915-9c30-4532-9b9e-48d99c62e7d7",
    "source": "DataFactory"
},

Lineageの表示(その2)

以下のコードでfromEntityIdとtoEntityId使って各ノードを繋げます。

lineage02 = Digraph(format="svg")
lineage02.attr('graph', rankdir="LR", compound="true")
lineage02.attr("node", fontname="Segoe UI")

for guid in response["guidEntityMap"]:
    lineage02.node(
        guid,
        shape="box",
        label=f'''
{guid}
{response["guidEntityMap"][guid]["attributes"]["name"]}
{response["guidEntityMap"][guid]["typeName"]}
        '''
    )

# relationの表示
for relation in response["relations"]:
    lineage02.edge(relation["fromEntityId"], relation["toEntityId"])

lineage02.render("lineage/02.gv")
SVG("lineage/02.gv.svg")

relationsを使って各ノードを繋げることができました。
見栄えは良くないですが、ノードの前後など再現できました。
image.png

PurviewでのLineage表示。
image.png

次回

次回はカラムの情報を加えていきたいと思います。(予定)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?