Skip to main content

Dimensions

Create, organize, and connect dimension tables in Farseer. Learn about hierarchies, connections, self-referencing, and how dimensions power your model.

Updated today

What Are Dimension Tables?

Dimension tables are the foundational building blocks of every Farseer model. They organize your data into meaningful categories — products, regions, departments, accounts, clients, or any other structure relevant to your business.

In database terms, a dimension table is like a lookup table: it stores data once, eliminating redundancy. In Farseer, dimensions serve two critical roles:

  • Data structure: They determine how variables store and aggregate data

  • Relationships: When linked together, they form hierarchies that enable drill-down analysis (e.g., SKU → Brand → Supplier)

To display any data on a Sheet, you first need dimensions — they are the backbone of every model.

dim1

Dimension Table UI

Create a Dimension Table

dim2

Creating a New Dimension Table

To create a new dimension table:

  1. Open the navigation sidebar

  2. Right-click Dimensions

  3. Select New Dimension Table

The new table becomes immediately available across sheets, dashboards, and all modeling components.

You can also create folders in the Dimensions section to organize multiple tables — especially useful as your workspace grows. All tables and folders can be reordered by dragging them.

Create a Dimension Member

dim3

The "New Member" Button

To add a member to a dimension table:

  1. Select the dimension table

  2. Click New Member in the top-right corner, or type directly into an empty row

Each member acts as a primary key — it must be unique within the table. Duplicate names are not allowed.

dim4

You can also type into blank cells to create a new member

Table Connections (Hierarchies)

Connections are what give Farseer its analytical power. By connecting dimension tables, you create hierarchies that enable automatic aggregation and drill-down.

Example: Connecting SKU → Brand → Supplier means that any variable attached to SKU can automatically aggregate data at the Brand or Supplier level.

To add a connection:

  1. Open a dimension table

  2. Click Add Column in the top-right

  3. Select Table Connection and choose the target table

Connected columns appear in blue to indicate they are linked to another table. You can assign each member to a member from the connected table — creating the parent-child mapping.

Key rules for connections:

  • Relationships should be N:1 or 1:1 (many-to-one or one-to-one)

  • Never create loops — dimension chains must be one-directional (e.g., SKU → Brand → Supplier, not SKU → Brand → SKU)

  • Chains from different branches must not intersect — this disrupts aggregation logic

Custom Property Columns

dim7

Adding Columns

Beyond connections, you can add custom columns for metadata that doesn't affect model logic:

  • Text: Free-form labels or notes

  • Number: Numeric values like weights or scores

  • Date: Specific dates

  • File: Attach documents directly to a member

dim8

Dimension Table Connections

Self-Referencing Tables

When your data forms a hierarchy within a single category, you can create a self-referencing table instead of maintaining multiple separate tables. This creates parent-child relationships within one table.

Example: A "Departments" table where each department has a parent department, forming an organizational chart.

Self-Referencing Table Example

Search & Sort

At the top of each dimension table:

  • Search: Find members by Name, Description, or Connection. Match Case can be toggled for case-sensitive search.

  • Sort: Sort by Name or Description (ascending/descending). The sort order you set here becomes the default everywhere — sheets, dashboards, filters, and all other parts of the model.

dim6

Searching and Filtering

Editing a Dimension Member

Right-click any member and select Edit Dimension Member to access:

  • Name: The unique identifier

  • Description: Optional context shown across the model

  • Formula: Create compound/calculated members using or(), and(), not() functions

  • Active: Toggle visibility — inactive members are excluded from all calculations and views

  • Connected / Reverse Connected: View all relationships this member has

Dimension Table Settings

Default Member

Used during data import. If an imported row has no value for this dimension (NULL or empty), Farseer assigns it to the default member. Without a default member configured, the import will fail for rows with missing values.

Autogenerate Dimension Names

When enabled, newly created members (via templates or bulk registration) automatically receive unique names to prevent duplicates.

Why Dimensions Matter

  • Single source of truth: Data is stored once, reducing duplication and errors

  • Automatic aggregation: Connected dimensions enable drill-down analysis at any level

  • Model-wide impact: Changes to dimension structure automatically propagate to all sheets, dashboards, and calculations

Did this answer your question?