Skip to main content
Version: Preview

Doris

Experimental
Creates:
AssetsLineage

Configure in the UI

This plugin can be configured directly in the Marmot UI with a step-by-step wizard.

View Guide

The Doris plugin discovers databases, tables, views and async materialized views from Apache Doris clusters. It connects to a frontend over the MySQL protocol and reads the table model (DUPLICATE, UNIQUE, AGGREGATE), partitioning, distribution and column aggregation types from the DDL. Tables and views are named <database>.<table>, so the same table name in two databases stays apart.

Views and materialized views carry their defining query, with VIEW_OF lineage from the tables they read. Foreign keys declared with ALTER TABLE ... ADD CONSTRAINT become FOREIGN_KEY lineage. Row counts and data sizes come from information_schema.TABLES, which Doris fills from the backends' periodic tablet report, so a freshly loaded table can show zero rows for a minute or two.

Required Permissions

CREATE USER 'marmot_reader'@'%' IDENTIFIED BY 'your-password';
GRANT SELECT_PRIV, SHOW_VIEW_PRIV ON internal.*.* TO 'marmot_reader'@'%';

SHOW_VIEW_PRIV lets SHOW CREATE VIEW run; without it views are catalogued without their query or lineage.

Example Configuration


host: "doris-fe.internal"
port: 9030
user: "marmot_reader"
password: "${DORIS_PASSWORD}"
databases:
- "shop"
- "analytics"
tags:
- "doris"
- "warehouse"

Configuration

The following configuration options are available:

PropertyTypeRequiredDescription
catalogstringfalseDoris catalog to discover (default internal)
databases[]stringfalseDatabases to discover (every database except exclude_databases when empty)
exclude_databases[]stringfalseDatabases to skip when databases is empty (default information_schema, mysql, __internal_schema)
external_links[]ExternalLinkfalseExternal links to show on all assets
filterFilterfalseFilter discovered assets by name (regex)
hoststringtrueDoris frontend hostname or IP address
include_columnsboolfalseWhether to include column information in table metadata
include_materialized_viewsboolfalseWhether to discover async materialized views
include_statisticsboolfalseWhether to include row counts, data sizes and column counts
include_viewsboolfalseWhether to discover views
passwordstringfalsePassword for authentication
portintfalseDoris frontend MySQL protocol port (default 9030)
tagsTagsConfigfalseTags to apply to discovered assets
tlsstringfalseTLS configuration (false, true, skip-verify, preferred)
userstringtrueUsername for authentication

Available Metadata

The following metadata fields are available:

FieldTypeDescription
aggregation_typestringAggregation of a value column on an AGGREGATE table (SUM, MAX, REPLACE, HLL_UNION, BITMAP_UNION)
auto_bucketboolWhether Doris picks the bucket count
bucketsintNumber of buckets per partition
catalogstringDoris catalog the object lives in
column_namestringColumn name
commentstringTable or view comment
createdstringCreation timestamp
data_typestringDeclared type as Doris prints it (decimalv3(9, 2), array<int>)
databasestringDatabase name
ddlstringSHOW CREATE output
default_expressionstringDefault value
descriptionstringColumn comment
distribution_columns[]stringColumns the data is hashed on
distribution_typestringBucketing (HASH, RANDOM)
doris_versionstringDoris build the frontend reports
enginestringStorage engine (Doris, View, MATERIALIZED_VIEW, or the external system)
hoststringDoris frontend hostname
is_keyboolWhether the column is part of the table key
is_nullableboolWhether null values are allowed
is_primary_keyboolKey column of a UNIQUE or AGGREGATE table
is_sorting_keyboolKey column of a DUPLICATE table
job_namestringRefresh job of a materialized view
key_columns[]stringColumns that make up the key
key_modelstringTable model (DUPLICATE, UNIQUE, AGGREGATE, none)
materializedboolWhether the view is an async materialized view
mv_partition_infostringHow a materialized view is partitioned
object_typestringObject type (table, view, materialized_view, external_table)
partition_columns[]stringColumns or expressions the table is partitioned by
partition_countintNumber of partitions
partition_typestringPartitioning (RANGE, LIST, none)
portintDoris frontend MySQL protocol port
refresh_infostringBuild and refresh settings of a materialized view
refresh_statestringOutcome of the last materialized view refresh
replicationstringReplication allocation or replica count
statestringState of a materialized view (NORMAL, SCHEMA_CHANGE)
storage_mediumstringStorage medium (hdd, ssd)
table_countintTables in the database
table_namestringObject name without the database
updatedstringLast update timestamp
view_countintViews and materialized views in the database