What this sheet teaches. Who a chosen anchor account exchanges money with, on either side. The Account Network sheet visualizes the directed graph of money movements flowing in and out of that anchor, distinguishing inbound counterparties (those sending money INTO your anchor) from outbound counterparties (those your anchor sends money TO).
Two Sankey diagrams dominate the top half of the sheet — Inbound — counterparties → anchor on the left and Outbound — anchor → counterparties on the right. Each ribbon's thickness represents the total dollar amount flowing along that edge. Below the Sankeys sits an Account Network — Touching Edges table listing every transfer leg connecting the anchor to a counterparty, ordered by amount descending. An Anchor account dropdown at the top left lets you pick which account to examine; a Min hop amount ($) slider filters noise edges below a dollar threshold.
The sheet uses the same underlying matview as the Money Trail sheet (inv_money_trail_edges) but presents it from the anchor account's point of view rather than from a chain's point of view. Every row on this sheet is one transfer leg; both Sankeys and the table all narrow when you pick an anchor and adjust the slider.
All three visuals (inbound Sankey, outbound Sankey, Account Network — Touching Edges table) read from the same inv_money_trail_edges matview, a recursive walk over the transfer_parent_id linkages in the base transactions table. Each row is one leg of a multi-leg transfer, capturing:
root_transfer_id — the topmost transfer in the parent chain (the original money movement)transfer_id — the transfer this leg belongs todepth — how many hops this leg is from the root (0 = root itself)source_account_id, source_account_name, source_account_type — the account the money flows FROMtarget_account_id, target_account_name, target_account_type — the account the money flows TOhop_amount — the leg amount in dollarsposted_at — when the leg postedrail_name — which transfer rail carried this leg (ACH, wire, internal, etc.)The matview filters WHERE status = 'Posted' and amount_money > 0 (targets only; negative amounts are sources by sign convention). The SQL joins each transfer's source leg (negative amount) to each target leg (positive amount) to emit one row per directed edge.
The two Sankeys are directionally filtered:
target_display = anchor (the anchor is the receiving end). Ribbon source = counterparty, ribbon target = your anchor.source_display = anchor (your anchor is the sending end). Ribbon source = your anchor, ribbon target = counterparty.The Account Network — Touching Edges table reads the bidirectional dataset (no direction filter) and displays every leg touching the anchor, adding a counterparty_display column (target when source is the anchor; source when target is the anchor) so the table's walk-the-flow drill can move to the other side.
The Anchor account dropdown parameter (pInvANetworkAnchor) narrows all three datasets via (source_display = anchor OR target_display = anchor) (bidirectional) or directional-specific predicates (inbound/outbound). The Min hop amount ($) parameter filters hop_amount >= <<$pInvANetworkMinAmount>> at the database.
One Sankey is visually dense; the other is sparse or empty. This is normal — most accounts have asymmetric flow (a customer receives deposits but sends only refunds, or a liquidity buffer account sweeps money out but rarely receives). The Sankey diagram simply reflects the directionality of money at that anchor.
Most of the Inbound ribbon thickness comes from a single source; most of the Outbound thickness flows to a single target. In most institutions, this is expected — settlement accounts concentrate flow, operational accounts have a few key partners. Use the Min hop amount ($) slider to suppress small noise edges and see the bulk movement.
Left-click any node in either Sankey to pivot the anchor to that counterparty. The sheet re-renders in place, showing that counterparty's inbound and outbound network. This is your path-following tool — follow a suspicious money trail through the graph one hop at a time.
You picked an anchor and the Sankeys render empty or nearly empty. This usually means:
You notice the same counterparty appears as both a ribbon source and target (money flowing both ways with the anchor). This is expected — many banking relationships are mutual (you send ACH, they send ACH back; you wire out, they wire in). The two Sankeys keep this clean: inbound shows their sends to you; outbound shows your sends to them.
A clean empty sheet means one of the following:
inv_money_trail_edges matview carries only Posted transactions (Pending legs don't render). If your anchor has only Pending or Failed legs, the sheet stays empty — use the Daily Statement sheet to see the Pending state for that account.inv_money_trail_edges row. The matview is STALE when its latest_date lags the base transactions / daily_balances rows' latest_date shown side-by-side on that table — the base tables moved forward but the matview wasn't refreshed since the last ETL load, so the dashboard is showing yesterday's state. A NULL latest_date just means a matview with no date dimension, not staleness.If the matview row count shows zero on the App Info sheet, the SQL is dry — no transfers in the entire system. That's an ops alert, not an empty-state signal.
First time here? See the Vocabulary for matview, rail, chain and the other project-specific terms.