この記事でやること
この記事ではMicrosoft PurviewのLineageをREST APIでJSON形式で取得しGraphvizを使って可視化します。
REST APIの実行はPythonを使っています。
Lineageの取得と表示
前回の記事で取得したLineageをそのまま使っていきます。
今回は各ノードを繋げていきます。
前回はguidEntityMapに着目しましたが、今回はrelationsに着目します。
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を使って各ノードを繋げることができました。
見栄えは良くないですが、ノードの前後など再現できました。
次回
次回はカラムの情報を加えていきたいと思います。(予定)