CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-superset-ui--plugin-chart-pivot-table

Superset Chart - Pivot Table provides comprehensive pivot table chart plugin for Apache Superset with interactive data visualization and summarization capabilities.

Pending
Overview
Eval results
Files

query-building.mddocs/

Query Building

Data query construction for pivot table requirements, handling groupby columns/rows, metrics, and filtering with support for temporal data and custom ordering.

Capabilities

buildQuery Function

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 specifications

PivotTableQueryFormData Interface

Form 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>;
}

Query Context

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>;
}

QueryFormColumn Types

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;
}

QueryFormOrderBy

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;
}

Query Building Process

The buildQuery function follows this process:

  1. Column Deduplication: Combines groupbyColumns and groupbyRows, removing duplicates
  2. Temporal Column Processing: Applies time grain to temporal columns when specified
  3. Base Query Construction: Uses buildQueryContext to create the base query structure
  4. Ordering Configuration: Sets up ordering based on series_limit_metric or first metric
  5. Query Object Assembly: Combines columns, ordering, and additional parameters

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 ordering

Install with Tessl CLI

npx tessl i tessl/npm-superset-ui--plugin-chart-pivot-table

docs

chart-component.md

configuration-types.md

index.md

pivot-table-engine.md

plugin-registration.md

props-transformation.md

query-building.md

tile.json