Pivot Tables

Build saved Tables with contextual axes, measures, relationships, totals, and contributing facts.

A pivot is a Table View, not a separate View type. It compares resources or effective property values across Rows and Columns, then evaluates the configured Cell content in each intersection's context. This is different from the Resources pane's Table mode, which is a resource grid for direct field editing.

The fictional Product Atlas fixture has Aster Mini and Aster Pro under Products / Lumen devices, and Orbit Dock and Orbit Hub under Products / Orbit devices. Markets contains Northland and Westhaven under Europe, and Eastreach under America. Products have List price, Release date, and Included features. In Scale, Aster Pro's default price is 249; its Northland parent-and-child conditions resolve to 219, and its Westhaven condition resolves to 259.

Access And Saving

Project Viewers can read permitted calculated results. Project Analysts can create saved Views and change Views they created; Project Editors and higher can change other saved Views. A visible builder or Save button does not override server permissions.

Layer-only users remain confined to their permitted Layer context. They cannot select All data or gain unrestricted Project authoring by editing a Table draft. The saved-View authoring contract requires Project access; separate Layer data rights are not a general right to save shared Project Views.

Changes to the builder are View drafts. They change the calculation but do not edit product data. Use Save view to persist a named View. The built-in Default Table is not an editable saved record; use Add view to create a named Table from the current draft.

The View's type cannot be changed after creation. Create a Onepager or Timeline separately when you need a different presentation.

Current Capabilities

The current implementation uses the V4 Table engine. Compatible saved V3 definitions are read and normalized, then written as V4 when edited and saved. There is no customer V4 toggle in the current Table module. The manual below describes the controls present in that implementation, not a legacy path-pivot feature list.

CapabilityCurrent behavior
Rows and ColumnsResource selectors, property families, and supported exact property occurrences; up to six nested levels on each side.
Cell contentSelected resource targets, property families, or exact property occurrences.
AggregationList, Count, Distinct count, Exists, numeric reducers, and percentages.
Totals and subtotalsConfigurable row/column totals and per-axis subtotals.
RelationshipsAutomatic ranked paths with per-source pinning, including incoming and outgoing reference steps.
InspectionResource/property navigation, value provenance, and paged contributing facts.
PresentationDensity, group expansion, column widths, property-name display, existence display, and column-label orientation.

Not every storage option has a dedicated builder control. In particular, advanced duplicate/empty-value policies and item limits may arrive through a validated saved configuration; do not look for an unrestricted advanced JSON editor in the Table UI.

Build Your First Table

  1. Open Product Atlas and make the View pane visible. Choose All data, or the intended accessible Layer.
  2. Select Default or an existing Table. Expand Build table using Toggle builder if necessary.
  3. In Rows, use the source picker or drag Lumen devices into the axis area.
  4. Set its selector scope to Children so Aster Mini and Aster Pro become row members. Add Orbit devices / Children in the same level to include Orbit Dock and Orbit Hub.
  5. In Columns, add Europe / Children so Northland and Westhaven become column members. Add America / Children in the same level to include Eastreach.
  6. In Cell content, add List price and keep List as the aggregation.
  7. Set As of date to October 1, 2026, inside Scale.
  8. Choose Add view, select Table, enter Product prices by market, and create it.
  9. After later edits, use Save view. Wait for the write to complete before navigating away.

Expected result: the four products are rows, the three Markets are columns, and every cell shows its context-dependent price with owner identity. In the unchanged fixture, Aster Pro / Northland shows 219, Aster Pro / Westhaven shows 259, and Aster Pro / Eastreach shows 249. A newly created empty Table has no automatic business axes or cell fields.

Selecting Table while creating a View from a Table copies the current Table draft. Selecting a different View type starts that type's default configuration. Use a new name to create a separate saved View rather than assuming Add view overwrites the current one.

Resource Scopes And Nested Axes

Resource selectors support Self, Children, Self or children, Descendants, and Self or descendants. A Class can be an axis source; choose a below-Class scope when you want its Values rather than the Class header itself. In this fixture, Products / Children selects Lumen devices and Orbit devices, not their four product children. Use the device groups / Children for leaf products, or a broader descendant scope when groups should also participate.

Repeated selectors in one level are alternatives. Their expanded memberships are unioned rather than treated as separate nested dimensions. Add a new level for nesting, reorder levels with their handles, and move entries into the intended level. Up to six levels are allowed per side.

Three-Dimension Example

  1. Keep the device groups / Children in row level 1.
  2. Add row level 2 and place Features / Essentials / Children there, giving Wireless sync and Compact chassis as alternatives.
  3. Keep Europe / Children and America / Children in Columns.
  4. Keep List price in Cell content.
  5. As an optional authoring exercise beyond the fixture, add a later Aster Pro price condition for Northland AND Features any Wireless sync with a price of 209 in Scale.

Expected result: the Aster Pro / Wireless sync / Northland leaf intersection has all three resources in context and displays 209. The Compact chassis intersection is evaluated separately and retains the seeded Northland result of 219 when no other override applies. Collapsing a group changes presentation, not the saved conditions.

Rows and Columns contribute explicit context even when they belong to the same Class. Transpose swaps the axes without changing the meaning of each corresponding intersection. The engine does not require every displayed resource combination to have existed together in one precomputed path.

Inactive resource branches are excluded. Linked occurrences preserve their destination context and read-only navigation; linked rows do not automatically expose the original resource's children.

Group By A Property

Add Launch tags as an axis source to group by its effective values, such as Compact, Premium, Launch, Accessory, or Connected in the fixture. A family resolves across its resource-owned occurrences; an Alias dragged in a data-definition context resolves to its bound property family.

Property headers are calculated from effective data, including conditions and the as-of snapshot. A resource with several effective values can participate in several bindings. A missing or unavailable configured field can produce a diagnostic rather than a successful empty calculation.

Global family renames update display labels without disconnecting the saved definition. Selecting a property family is different from selecting an exact occurrence, which refers to one owner's field.

Choose Cell Content

Cell sources are evaluated for the selected axis resources and eligible resources reached through applicable references. Selecting a structural parent does not silently read fields from every unselected child.

  • Property family: include eligible occurrences of the family and retain each property's owner identity.
  • Exact property occurrence: target one specific resource-owned field.
  • Resource selector: display eligible selected targets reached through reference relationships.

Multiple cell sources can be ordered using their handles. Removing a source removes it from the View definition, not from Product Atlas. List output can show an explicit remainder when a configured item limit hides additional items; use contributing facts to investigate rather than treating the visible list as the complete dataset.

Measures, Counts, And Percentages

Use the Cell content Aggregation selector:

AggregationMeaning
ListDisplay collected distinct items with their owners.
CountCount collected occurrences; repeated contributions can count more than once.
Distinct countCount distinct contributor keys under the configured duplicate policy.
ExistsReturn Yes or No for collected content.
Sum, Average, Minimum, MaximumAggregate applicable Number/Currency values.
% row, % column, % totalExpress the numeric measure relative to that row, column, or original-matrix total.

Numeric aggregation does not convert text into numbers or convert currencies. An incompatible source/aggregation combination can be rejected. A percentage with a zero denominator has no numeric percentage rather than inventing a result.

Analyze And Duplicate Identity

The Analyze selector establishes one analytical observation. Automatic mode infers it from the first resource dimension. Select Products with an appropriate scope when one product should be the observation, or use Resource occurrence identity when separate contextual memberships matter.

Canonical resource treats linked occurrences as the same original resource for grain identity. Resource occurrence distinguishes appearances in different locations. The saved cell duplicate policy also matters: changing Analyze is not a universal rewrite of every cell source's duplicate policy. Ordinary newly added displays use source-occurrence distinctness; configurations explicitly using grain distinctness apply the selected grain to measures.

Before publishing a count, inspect contributors. Two different products with equal prices are not necessarily one distinct price contribution, and one product reached along two relationships is not necessarily two independent observations.

Numeric Worked Example

For an isolated total-row example, put Lumen devices / Children in Rows, Eastreach / Self in Columns, and add List price with Sum. Use October 1, 2026, All data, and no additional filter or example overrides. In the unchanged Scale fixture, Aster Mini contributes 149 and Aster Pro contributes 249 in Eastreach. Both axes need eligible sources; leaving one axis empty does not create an implicit total column or row.

Expected result: the Eastreach column's two product cells show 149 and 249. Column totals adds the total row with 398. Average gives 199 for these two one-value contributions. A percentage of grand total gives approximately 37.44% and 62.56% for the corresponding sum contributions.

When a second axis creates several contextual prices for the same product, totals reflect those contributing intersections and the configured duplicate policy; do not assume a product's base price is counted once automatically.

Totals, Sorting, And Relationships

Turn on Row totals to add a total column and Column totals to add a total row. Toggle an axis entry's subtotal control for nested group summaries. Subtotals are useful when that axis has descendant headers; a flat leaf has no child group to summarize. Average totals are weighted by contributing values, not a simple average of displayed group averages. Distinct-count totals deduplicate contributor identities across cells.

Axis sort controls offer label or a selected measure, ascending or descending. Label ordering is natural and case-insensitive. Use Save current sort to this View on a named saved Table to persist it; the Default Table cannot receive that save.

The Relationships section displays automatic paths for cross-Class sources. If several paths are available, inspect the options and select the intended one to pin it. Incoming steps follow references in reverse; outgoing steps follow the authored direction. Pinned paths apply to their assigned source rather than indiscriminately combining every relationship in the project.

In Product Atlas, Included features connects products to Features through references such as Wireless sync and Extended battery. Inspect the offered path for a Features source. Additional alternative paths would require additional authored relationships; the fixture does not include a Suppliers or Components Class. Pin a path when alternatives exist and match the business question. The app ranks automatic candidates; it cannot decide that two different business relationships mean the same thing.

If a pinned path disappears after data-definition changes, review the warning and choose a valid path. Reference cycles stop traversal instead of expanding forever.

Inspect A Result

  1. Click a resource header or displayed field value to open the relevant Details context.
  2. Hover a listed value to inspect its provenance where available.
  3. Use a cell's Explain values action to open Contributing facts.
  4. Inspect snapshots, winning conditions, and relationship steps. Use Load more when the contributor list is paged.
  5. For a linked occurrence, expect read-only Details and use Open original if you need an authorized edit.

Expected result: inspection explains why a number or reference appears. It does not edit the aggregate in place. To change a product value, edit the source in Details, then wait for the calculated result to refresh.

Presentation And Limits

Choose Compact, Normal, or Comfortable density; toggle the builder; collapse or expand groups; and resize leaf columns. Builder visibility and density are browser-tab presentation state, not a shared business filter.

Open the Rows, Columns, or Cell content formatting controls. Columns supports Horizontal, Bottom to top, and Diagonal 45-degree labels. Cell content supports Values with optional property names, or Existence as one aggregate existence indicator per intersection. Existence presentation is not a rewrite of each source's selected reducer.

Current request limits include 12 entries per axis, six nested levels per side, 12 cell displays, and 24 relationship paths with up to six steps each. Evaluation also bounds resources, headers, contexts, values, work, and intersections; the current engine permits at most 100,000 evaluated intersections. These are upper bounds, not a guarantee that every combination below them is inexpensive.

Normal tables load server-calculated windows while keeping complete headers. Totals, subtotals, percentages, and measure sorting require complete-matrix evaluation and can reach a limit sooner. A limit error is not a partial aggregate to rely on. Narrow selectors, levels, filters, or measures and retry.

Troubleshooting

SymptomCheck or action
Empty TableAdd eligible axis sources and Cell content; check scopes, date, Layer, and filters.
Unexpected scalar valueInspect snapshot priority and later matching Conditions.
Count differs from the visible listCheck aggregation, duplicate policy, grain identity, and list remainder.
Wrong related ownerInspect and pin the intended relationship path.
Save is deniedVerify Project Analyst/Editor rights and, for an Analyst, who created the View.
Previous data remains visible during refreshWait for reconciliation; do not treat the last complete result as a committed new calculation.
Old cell source needs replacementReplace legacy path/all-property sources with current selectable sources.

The current Table is an analysis and inspection surface, not a spreadsheet formula engine, universal inline editor, or built-in CSV/export workflow. It does not grant access beyond the current user. Saving a View and changing underlying data are separate operations, with separate Undo coverage.

Last reviewed: 2026-10-01