31 lines
		
	
	
		
			748 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			748 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import plotly.express as px
 | 
						|
import sys, json
 | 
						|
import pathlib
 | 
						|
 | 
						|
snapshot_data = json.load(sys.stdin)
 | 
						|
 | 
						|
# Possible extensions:
 | 
						|
# 1. parameterize to use block count as value instead of byte size
 | 
						|
# 2. parameterize on different types of px chart types
 | 
						|
# 3. parameterize on output port so we can serve this from infra
 | 
						|
 | 
						|
parents = []
 | 
						|
names = []
 | 
						|
values = []
 | 
						|
 | 
						|
for key in snapshot_data:
 | 
						|
    path = pathlib.Path(key)
 | 
						|
    name = key
 | 
						|
    parent = str(path.parent)
 | 
						|
    if key == '/':
 | 
						|
        parent = ''
 | 
						|
    stats = snapshot_data[key]
 | 
						|
    parents.append(parent)
 | 
						|
    names.append(name)
 | 
						|
    values.append(stats['Size'])
 | 
						|
 | 
						|
data = dict(names=names, parents=parents, values=values)
 | 
						|
fig = px.treemap(data, names='names', parents='parents', values='values')
 | 
						|
fig.show()
 | 
						|
    
 |