Akshay Verma
02/28/2024, 8:25 AMSelim Raboudi
02/28/2024, 11:16 AMStephen Snyder
03/05/2024, 3:03 PMAkshay Verma
03/05/2024, 3:23 PMStephen Snyder
03/05/2024, 3:29 PMStephen Snyder
03/05/2024, 3:29 PMfrom dagster import (Definitions,
define_asset_job,
load_assets_from_modules
)
import networkx as nx
'''
in my case I am loading SW-defined assets from modules
'''
defs = Definitions(
#your SW-defined assets+job here
)
graph = defs.get_asset_graph()
G = nx.DiGraph()
for node,links in graph.asset_dep_graph['downstream'].items():
G.add_node(node)
G.add_edges_from([(node,link) for link in links])
# find root nodes with no upstream parents
root_nodes = [node for node in G.nodes() if G.in_degree(node) == 0]
for rt in root_nodes:
G.nodes[rt]['depth'] = 1
descendants = nx.descendants(G,rt)
for desc in descendants:
G.nodes[desc]['depth'] = nx.shortest_path_length(G,rt,desc) + 1
pos = nx.multipartite_layout(G,subset_key='depth')
nx.draw(G,pos=pos, with_labels=True, font_weight='bold')
Stephen Snyder
03/05/2024, 3:30 PMAkshay Verma
03/05/2024, 3:32 PM