title: “Views” weight: 10 type: docs aliases:

  • /concepts/views.html

Views

A view is a logical table that encapsulates business logic and domain-specific semantics. While most compute engines support views natively, each engine stores view metadata in proprietary formats, creating interoperability challenges across different platforms. Paimon views abstracting engine-specific query dialects and establishing unified metadata standards. View metadata could enable centralized view management that facilitates cross-engine sharing and reduces maintenance complexity in heterogeneous computing environments.

Catalog support

View metadata is persisted only when the catalog implementation supports it:

  • Hive metastore catalog – view metadata is stored together with table metadata inside the metastore warehouse.
  • REST catalog – view metadata is kept in the REST backend and exposed through the catalog API.

File-system catalogs do not currently support views because they lack persistent metadata storage.

Representation structure

FieldTypeDescription
querystringCanonical SQL SELECT statement that defines the view.
dialectstringSQL dialect identifier (for example, spark or flink).

Multiple representations can be stored for the same version so that different engines can access the view using their native dialect.

Operations

Create or replace view

Use CREATE VIEW or CREATE OR REPLACE VIEW to register a view. Paimon assigns a UUID, writes the first metadata file, and records version 1.

CREATE VIEW sales_view AS
SELECT region, SUM(amount) AS total_amount
FROM sales
GROUP BY region;

Alter view dialect via procedure

Paimon provides the sys.alter_view_dialect procedure so that engines can manage multiple SQL representations for the same view version.

Flink example

-- Add a Flink dialect
CALL [catalog.]sys.alter_view_dialect('view_identifier', 'add', 'flink', 'SELECT ...');

-- Update the stored Flink dialect
CALL [catalog.]sys.alter_view_dialect('view_identifier', 'update', 'flink', 'SELECT ...');

-- Drop the Flink dialect representation
CALL [catalog.]sys.alter_view_dialect('view_identifier', 'drop', 'flink');

Spark example

-- Add a Spark dialect
CALL sys.alter_view_dialect('view_identifier', 'add', 'spark', 'SELECT ...');

-- Update the Spark dialect
CALL sys.alter_view_dialect('view_identifier', 'update', 'spark', 'SELECT ...');

-- Drop the Spark dialect
CALL sys.alter_view_dialect('view_identifier', 'drop', 'spark');

Drop view

DROP VIEW view_name;

See also

  • [Spark SQL DDL – Views]({{< ref “spark/sql-ddl#view” >}})
  • [REST Catalog Overview]({{< ref “concepts/rest/overview” >}})
  • [REST Catalog View API]({{< ref “concepts/rest/rest-api” >}})