in identity-resolution/notebooks/identity-graph/nepytune/usecase/purchase_path.py [0:0]
def _show_session_stats(data, title):
def sunburst_data(data):
total_sum = sum(
values["sessions_count"]
for _, v in data.items()
for values in v["transient_ids"].values()
)
yield "", "Users", 1.5 * total_sum, "white", ""
for i, (persistentId, v) in enumerate(data.items(), 1):
yield (
"Users",
persistentId[:5],
sum(values["sessions_count"] for values in v["transient_ids"].values()),
i,
(
f"<br>persistentId: {persistentId} </br>"
f"devices count: {len(v['transient_ids'])}"
)
)
for transientId, values in v["transient_ids"].items():
yield (
persistentId[:5],
transientId[:5],
values["sessions_count"],
i,
(
f"<br>transientId: {transientId}"
f"<br>session count: {values['sessions_count']}"
f"<br>total session duration: {values['sessions_duration']}"
)
)
for session in values["sessions"]:
yield (
transientId[:5],
session.events[0].ts,
1,
i,
(
f"<br>session start: {session.events[0].ts}"
f"<br>session end: {session.events[-1].ts}"
f"<br>session duration: {session.events[-1].ts - session.events[0].ts}"
)
)
# aka legend
yield "Users", "User ids", total_sum / 2, "white", ""
yield "User ids", "User devices", total_sum / 2, "white", ""
yield "User devices", "User sessions", total_sum / 2, "white", ""
parents, labels, values, colors, hovers = zip(*[r for r in list(sunburst_data(data))])
fig = go.Figure(
go.Sunburst(
labels=labels,
parents=parents,
values=values,
branchvalues="total",
marker=dict(
colors=colors,
line=dict(width=0.5, color='DarkSlateGrey')
),
hovertext=hovers,
hoverinfo="text",
),
)
fig.update_layout(margin=dict(t=50, l=0, r=0, b=0), title=title)
return fig