Superset Chart - Pivot Table provides comprehensive pivot table chart plugin for Apache Superset with interactive data visualization and summarization capabilities.
—
Data query construction for pivot table requirements, handling groupby columns/rows, metrics, and filtering with support for temporal data and custom ordering.
Main function that constructs the database query for pivot table data requirements.
/**
* Builds query context for pivot table data retrieval
* @param formData - Form data containing pivot table configuration
* @returns QueryContext with query specifications for database
*/
export default function buildQuery(formData: PivotTableQueryFormData): QueryContext;Usage Example:
import buildQuery from "@superset-ui/plugin-chart-pivot-table/src/plugin/buildQuery";
const formData = {
groupbyRows: ['region', 'category'],
groupbyColumns: ['year'],
metrics: ['sales', 'profit'],
time_grain_sqla: 'P1M',
temporal_columns_lookup: { year: true }
};
const queryContext = buildQuery(formData);
// Returns QueryContext with appropriate query specificationsForm data interface that extends QueryFormData with pivot table specific options.
export interface PivotTableQueryFormData extends QueryFormData, PivotTableStylesProps, PivotTableCustomizeProps {
/** Columns for grouping rows */
groupbyColumns?: QueryFormColumn[];
/** Columns for grouping columns */
groupbyRows?: QueryFormColumn[];
/** Time grain for temporal columns */
time_grain_sqla?: string;
/** Lookup for temporal columns */
temporal_columns_lookup?: Record<string, boolean>;
}Return type that contains the complete query specification for data retrieval.
interface QueryContext {
queries: QueryObject[];
}
interface QueryObject {
/** Columns to include in the query */
columns: QueryFormColumn[];
/** Ordering specification */
orderby?: QueryFormOrderBy[];
/** Additional query parameters */
extras?: Record<string, any>;
}Column specification types for the query building process.
export type QueryFormColumn = string | AdhocColumn;
interface AdhocColumn {
/** Time grain for temporal columns */
timeGrain?: string;
/** Column type classification */
columnType: 'BASE_AXIS' | string;
/** SQL expression for the column */
sqlExpression: string;
/** Display label for the column */
label: string;
/** Expression type */
expressionType: 'SQL' | string;
}Ordering specification for query results.
export type QueryFormOrderBy = [QueryFormMetric | string, boolean];
export type QueryFormMetric = string | AdhocMetric;
interface AdhocMetric {
/** Metric definition */
aggregate: string;
column: QueryFormColumn;
label: string;
}The buildQuery function follows this process:
Advanced Usage:
// Query with temporal columns and custom ordering
const complexFormData = {
groupbyRows: ['region'],
groupbyColumns: ['created_date'],
metrics: ['count', 'avg_sales'],
time_grain_sqla: 'P1M',
temporal_columns_lookup: { created_date: true },
series_limit_metric: 'count',
order_desc: true
};
const queryContext = buildQuery(complexFormData);
// Results in query with monthly date grouping and count-based orderingInstall with Tessl CLI
npx tessl i tessl/npm-superset-ui--plugin-chart-pivot-table