Principle:Apache Druid Visualization Module Selection
| Knowledge Sources | |
|---|---|
| Domains | Visual_Exploration, Data_Visualization |
| Last Updated | 2026-02-10 00:00 GMT |
Overview
A pluggable visualization system that provides a registry of chart and table modules for rendering query results in the Explore view.
Description
Visualization Module Selection implements a module registry pattern where visualization components are self-registering plugins. Each module defines:
- Unique ID: Identifier for serialization and lookup
- Icon and title: For the module picker UI
- Parameters: Typed parameter definitions (measures, dimensions, time bucket, etc.)
- Component: React component that renders the visualization
Available modules:
- time-chart: Time series line/area charts with D3 rendering
- bar-chart: Grouped/stacked bar charts
- pie-chart: Pie/donut charts
- grouping-table: GROUP BY result tables with nested grouping
- record-table: Raw record display without aggregation
- multi-axis-chart: Multiple Y-axis chart for comparing different measures
The module system is extensible — new modules can be registered without modifying the core explore framework.
Usage
Use this principle when selecting which visualization to apply to a datasource. The module picker presents all registered modules and stores the selection in ExploreState.
Theoretical Basis
Module selection follows a self-registering plugin registry pattern:
Registry:
Map<moduleId, ModuleDefinition>
ModuleDefinition = {
id: string,
icon: IconName,
title: string,
parameters: Record<string, ParameterDefinition>,
component: (props: ModuleComponentProps) => JSX.Element
}
Registration:
ModuleRepository.registerModule(timeChartModule)
ModuleRepository.registerModule(barChartModule)
...
Lookup:
ModuleRepository.getModule(moduleId) → ModuleDefinition
ModuleRepository.getAllModuleEntries() → ModuleDefinition[]