Celiq
v0.12Open app โ†—
Docs/Physical Layer/Physical Layer

Physical Layer

How Celiq connects logical dataset definitions to the physical tables in your warehouse โ€” and keeps them in sync across environments.

LuminaryWeaverUpdated June 2026 ยท 5 min read
โœฆ
In this section
Part of Celiq's semantic layer platform. Connect your warehouse, model your data once, query it everywhere.
๐Ÿ’ก
Tip
What it is: The Physical Layer is the bridge between your warehouse tables and Celiq's semantic model. It lets you define datasets once and map them to different physical tables in different environments.
When to use it: When setting up multi-environment workflows (Prod/Dev/Staging), onboarding a new warehouse, or managing schema changes across deployments.
Where to find it: Lumen โ†’ Physical Layer (Luminary role required to manage; Weavers can view).
Who can use it: Luminary (manage), Weaver (view).

The Physical Layer sits between your warehouse and your semantic model. It answers one question: "When a node references the orders dataset in the Production environment, which physical table does Celiq actually query?"

Architecture overview

Celiq's data model has three tiers:

Semantic Layer  โ†’  Physical Layer  โ†’  Warehouse
(Nodes / CML)      (Datasets / Deployments / Mappings)   (Snowflake / BigQuery / Postgres / โ€ฆ)
TierWhat lives hereWho manages it
Semantic LayerNodes, domains, metrics, dimensions, CMLWeaver
Physical LayerDatasets, deployments, mappingsLuminary
WarehouseActual tables, schemas, databasesData engineering team

The Physical Layer is intentionally separate from the semantic layer. A Weaver can change how revenue is calculated without touching which table backs it. A Luminary can point a deployment at a new warehouse without rewriting any CML.

Three core concepts

Datasets

A dataset is a logical table definition โ€” a named schema of columns (names and types) that represents a table you want to use in the semantic model.

Think of a dataset as a contract: "Wherever we run this model, there will be a table with these columns." The dataset doesn't live in any one warehouse โ€” it's the abstract definition that mappings then wire to physical tables.

Learn more about Datasets โ†’

Deployments

A deployment is a target environment โ€” Production, Development, Staging, or any other environment you define. Each deployment has its own set of physical table mappings.

Every workspace has at least one deployment marked as default. Discover, Mosaics, and Orion always query through the default deployment unless you explicitly switch.

Learn more about Deployments โ†’

Dataset Mappings

A dataset mapping connects a dataset to a physical table in a specific deployment. Each mapping specifies:

  • Which deployment this applies to
  • Which connection (warehouse) to use
  • The exact physical table name (e.g. public.orders, analytics.fact_orders)

Celiq validates each mapping by introspecting the warehouse and comparing the physical table's columns against the dataset's column definitions. It computes a compatibility score (0โ€“100%) so you can see immediately if schema drift has occurred.

Learn more about Dataset Mappings โ†’

A complete example

Suppose you have an orders dataset with columns: id, customer_id, created_at, revenue.

DeploymentConnectionPhysical tableCompatibility
ProductionSnowflake (prod)PUBLIC.ORDERS100%
DevelopmentDuckDB (dev)dev.orders100%
StagingPostgres (staging)analytics.orders_staging92% (2 columns missing)

The semantic model node references orders โ€” not any specific physical table. At query time, Celiq resolves the mapping for the active deployment and generates SQL against the correct table.

Relationship to the semantic model

Nodes in CML reference datasets by name. Example:

cml
node: orders
  dataset: orders        # references the logical dataset, not a table
  dimensions:
    - name: created_at
      type: time
  measures:
    - name: total_revenue
      type: sum
      sql: revenue

When Discover runs a query, it resolves:

  1. Which deployment is active
  2. Which physical table the orders dataset maps to in that deployment
  3. Which connection to use

This resolution happens at query time โ€” not at model-save time โ€” so you can change a mapping without touching any CML.

What happens when mappings are missing

If a dataset has no mapping for the active deployment, Celiq falls back to the dataset's primary_connection_id (the connection used when the dataset was first created) and queries the original table directly.

If no fallback is available, queries against nodes using that dataset will fail with a DATASET_NOT_MAPPED error in Discover.