Skip to main content
A physical data source is real data sitting in a table from the KODE backend. A virtual data source is a saved SQL query — a view — layered on top of physical tables.
Virtual sources are flexible and editable, but they compute on demand. Use virtual tables where on-demand computation helps, especially real-time reshaping.
Both kinds appear in the same list and can feed a chart. The distinction is where the data lives versus where it is computed. See Data source types. The Data Sources page shows each source’s type (Physical or Virtual) and database engine side by side.
Data Sources page listing sources with Type column values Virtual or Physical and Database Type values such as CLICKHOUSE, POSTGRES, and BIG_QUERY

Data Sources list with Physical and Virtual types

Physical tables store rows; virtual tables compute them

  • A physical source is a materialized table. The rows already exist. They are direct pulls from the KODE backend. Point Time Series Real-Time is the canonical example: every reading is a stored row.
  • A virtual source is a view: a SQL expression that runs against one or more physical tables when queried. Nothing is stored; the rows are derived each time. Point Time Series Last Value is a virtual view that returns the most recent reading per sensor. See Key data sources.
Physical tables are the warehouse shelves. Virtual tables are standing instructions for assembling a custom order from those shelves on request. Because a virtual table re-derives its rows on every query, cost scales with how much work the query does. Light reshaping (like last value per point) is cheap. Heavy, high-dimension aggregation is not.

Choose physical or virtual

When you hit a calculated column or metric ceiling — for example, no window functions or aggregations of aggregations — put that logic in a virtual table SQL view. See Calculated fields and Database types.
  • Virtual tables are quick to create and edit, but they recompute every time and can become slow on large datasets.
  • Editing a virtual source’s SQL is organization-wide. It affects every dashboard in your organization that uses it. It does not change other organizations. Validate before saving.
  • Virtual tables can be built on ClickHouse and PostgreSQL, but not BigQuery.
  • A “Not Optimized” status on a virtual source is a common hidden cause of slow dashboards. See Dashboard performance.
Building BI can suggest filters to tighten a virtual source. Review suggestions before you save. They affect every dashboard in your organization that uses the source.
Edit RTU Details dialog showing Optimize your Virtual Datasource suggestions with a filter template and source table names

Optimization suggestions on a virtual data source

Next steps

Optimize virtual sources

Fix virtual table performance in Data Sources.

Key data sources

See the most common physical and virtual Point Time Series pair.
Last modified on August 18, 2026