Easy Pivot Logo
  • Pricing

Manual

OverviewFolder SystemData Sources
Insight
Cross-Table / Pivot TableColumn / Line ChartAxis Style ConfigurationRadial BarPie ChartSunburst ChartTreemapMetric CardRanking BarBullet ChartWaterfall ChartBubble ChartFunnel ChartBoxplotCandlestick ChartHeatmapCircular Progress BarLiquid FillGaugeContrast Bar ChartRadar ChartSankey DiagramTree DiagramRelation DiagramWord CloudSVG MapArea MapAggregate Data Map3D MapDetail TableScatter Plot (Detailed Data)Latitude-Longitude Map (Local)Dynamic Ranking Bar Chart
Drill-down, Roll-upChart Fine-tuning Developer Mode
User and RoleRestful Interfaces

Integration

ChartsChart Detail

Detail Table

Detail Table

Unlike Pivot Tables / Cross Tables, which have row headers and column headers forming a two-dimensional coordinate system to locate a unique (aggregated) value, a Detail Table with the same header conditions can query multiple records. Therefore, aggregation operations (sum/avg/min/max, etc.) are required in cross tables but not in detail tables.

When to Use a Detail Table

  • Some users might wonder, "If a cross table uses all dimensions, the display effect would be the same as the output of a detail table."
  • The results may look the same, but the data processing logic is entirely different, leading to significant query performance differences!
    • Aggregate queries generate aggregate query statements based on the dimensions dragged by the user, execute aggregate calculations on the data source, and return aggregated data. Using a Cross Table solely to display detailed data forces an unnecessary aggregation operation on all dimensions for data that doesn't require aggregation. If the target result set is large, the database will consume substantial memory and CPU resources during aggregation and deduplication, causing unnecessary performance overhead, which becomes a serious issue. Therefore, many users unfamiliar with the system's working principles often complain about performance problems at this stage.

As shown below, when both the detail table and cross table are limited to the dimensions Year and Quarter, the detail table returns a large amount of unaggregated, duplicate data, while the cross table returns a result set aggregated across both dimensions.

Detail Table Pagination Issues

  • The detail table queries the dataset directly on the backend, returning the first 2000 records by default. The frontend then paginates these 2000 records.
  • The number of rows for detailed data can be configured in the chart configuration panel.
  • Data export has no such limit and supports exporting up to 500,000 rows.
  • For page display, it is recommended that users add dimension filters to query the specific detailed data they care about.

Configuring Multi-Level Headers in Detail Tables

Detail table headers are static and support multi-level header configuration. Headers with the same parent are automatically sorted and merged, as shown below.

Row Merging in Detail Tables

If your dataset consists of already aggregated summary data, using the row merging operation in a detail table can achieve an effect similar to merged headers in cross tables.

Note

Dimension cells that need to be merged must have a sort configuration.

Configuring Parent Cells for Merged Cells

Additionally, you can customize the parent column. For example, in the following business scenario, a parent order can be split into 2 child orders, but there is only one shipping cost that needs to be merged. The effect is as follows:

If we compare parent cells according to the requirement that parent cells must be the same, the merge would fail because the child orders are different. To solve this problem, you can modify the configuration:

  • Specify Parent Column: Configure the parent cell for the Total to be the Order No. Then only the user-specified column is compared for merging.
  • Don't Merge: Configuring the column to disable merging prevents any merge processing for that column.

Detail Table Cell Formatting

Example of a cell formatting function:

formatter = function(colDef, value, row) {
    debugger // You can also try adding a breakpoint here to observe the parameter structure
    let {label} = colDef;
    if (label == 'Expense') {
        let color = value > 2 ? 'green' : 'red';
        return `<div style={{height: "100%"}}>
                   <span style={{marginRight: "5px", color: "${color}}"}>
                   <i className="fa fa-circle"></i></span> ${value}
                </div>`
    } else {
        return value;
    }
}

3D Map

3D Map

Scatter Plot (Detailed Data)

Scatter Plot (Detailed Data)

On this page

Detail Table Pagination IssuesConfiguring Multi-Level Headers in Detail TablesRow Merging in Detail TablesConfiguring Parent Cells for Merged CellsDetail Table Cell Formatting
Log InStart Free