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.
Dimension Table UI
Create a Dimension Table
Creating a New Dimension Table
To create a new dimension table:
Open the navigation sidebar
Right-click Dimensions
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
The "New Member" Button
To add a member to a dimension table:
Select the dimension table
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.
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:
Open a dimension table
Click Add Column in the top-right
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
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
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.
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()functionsActive: 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








