Cross Source Refs

Reference any source, anywhere.

A formula in one source can read a column in another.

Quarterly Revenue

source · A
QuarterTotal
Q1$47,700
Q2$56,700
Q3$64,600
Q4$75,300

Q4 row publishes downstream

Forecast Plan

source · B
Q1_target = [Quarterly Revenue!Total] * 1.18
QuarterTarget
Q1 next$88,854
Q2 next$99,000

The syntax

Square brackets, one pipe.

A reference reads like a sentence. Open the brackets, name the source, name the column.

[Quarterly Revenue!Total]

that is the whole grammar

// Plain reference, single value.
forecast = [Quarterly Revenue!Total] * 1.18
// Aggregate across the column.
year_total = SUM([Quarterly Revenue!Total])

The shape

A small grammar, that holds it all.

Spaces are fine. Casing is fine. The bracket carries the source. The pipe carries the join.

  • Pull a single cell, an entire column, or an aggregate. The engine treats them as one expression.
  • A change upstream propagates downstream in the same beat. No build step. No publish.
  • The bracket also reads inside any function. SUM, AVG, IF, ROUND all accept cross source values.

The graph

Sources hold, hands.

A workspace settles into a few sources and a web of references between them.

RevenuePipelineForecast

Topology

Three sources, one truth.

Two upstream sources feed one downstream. Edit either upstream. The downstream redraws cleanly.

forecast = [Revenue!Total] * 1.18
cap = [Plan!Ceiling]
health = [Churn!Mean]

Stack

Three lines, three feeds.

A formula bar stacks references in plain text. Comments are welcome. Diff history is per source.

// engine guard

[A!x] → [B!y]

[B!y] → [A!x]

cycle caught · #ERROR

Cycle guard

Loops fail loudly.

The engine watches the graph during evaluation. The first cycle short circuits. The rest of the sheet keeps running.

Why

One workspace, one truth.

depth, with cycle guard

1

source, many references

0s

wait, on propagation

A pipeline rebuilds the whole report on every change. Cross source references rebuild only the cells that depend on the change. The page stays calm.

In short

Questions, answered.

How do I write the reference?+

Wrap the source name and column with a pipe between them, like [Quarterly Revenue!Total]. Spaces are fine.

Will it loop forever?+

No. The engine watches the dependency graph and short circuits a cycle the moment it sees one.

Do aggregates work across sources?+

Yes. SUM([Quarterly Revenue!Total]) totals the column from the other source.

Will charts see the updated value?+

Yes. A change upstream propagates through every reference and every chart in one pass.

Wire your sources. Read across the page.