Null engine

When writing to a Null table, data is ignored. When reading from a Null Data Source, the response is empty.

You can use the Null engine to create a Materialized View from a Null table that transforms the data as it's sent to the Null Data Source so the Target Data Source receives the transformed data and the original is discarded.

Example: for masking some PII data.

event.datasource
SCHEMA >
    `action` LowCardinality(String) `json:$.action`,
    `timestamp` DateTime64(3) `json:$.timestamp`,
    `version` LowCardinality(String) `json:$.version`,
    `userEmail` String `json:$.userEmail` DEFAULT '',
    `workspaceId` String `json:$.workspaceId` DEFAULT '',
    `payload` String `json:$.payload`

ENGINE Null
mask_events_mat.pipe
DESCRIPTION >
    Mask events for mat view

NODE maskEvents
SQL >
    SELECT
        action, timestamp, version, cityHash64(userEmail) as userEmailMasked, workspaceId, payload
    FROM event

TYPE Materialized
DATASOURCE event_masked
event_masked.datasource
SCHEMA >
    `action` LowCardinality(String),
    `timestamp` DateTime64(3),
    `version` LowCardinality(String),
    `userEmailMasked` UInt64,
    `workspaceId` String ,
    `payload` String

ENGINE MergeTree
ENGINE_PARTITION_KEY toYear(timestamp)
ENGINE_SORTING_KEY action, workspaceId, timestamp
Updated