Angular Pivot Table with Elasticsearch

Flexmonster provides a seamless connection of your Angular pivot table to Elasticsearch.


    import { Component } from "@angular/core";
    import { FlexmonsterPivotModule } from "ngx-flexmonster";
    
    @Component({
      selector: "pivot-table-demo",
      imports: [FlexmonsterPivotModule],
      templateUrl: "./pivot-table-demo.component.html"
    })
    export class PivotTableDemo {
      public report: Object = {
        dataSource: {
          type: "elasticsearch",
          node: "https://olap.flexmonster.com:9200",
          index: "australian_weather",
          mapping: {
            "Date": {
              caption: "Date",
              format: "yyyy",
              interval: "1y"
            },
            "Min Temperature": {
              caption: "Min Temp"
            },
            "Max Temperature": {
              caption: "Max Temp"
            },
            "Rainfall": {
              caption: "Rainfall"
            },
            "Evaporation": {
              caption: "Evaporation"
            },
            "Sunshine": {
              caption: "Sunshine"
            },
            "Wind Speed": {
              caption: "Wind Speed"
            },
            "Rain Today": {
              caption: "Rain Today"
            },
            "Rain Tomorrow": {
              caption: "Rain Tomorrow"
            },
            "Location.keyword": {
              caption: "Location"
            },
            "State.keyword": {
              caption: "State"
            }
          }
        },
        slice: {
          rows: [
            {
              uniqueName: "State.keyword"
            },
            {
              uniqueName: "Location.keyword"
            }
          ],
          columns: [
            {
              uniqueName: "Date",
              filter: {
                query: {
                  after: "2008-12-31"
                }
              }
            },
            {
              uniqueName: "[Measures]"
            }
          ],
          measures: [
            {
              uniqueName: "Min Temperature",
              aggregation: "min",
              format: "temperature"
            },
            {
              uniqueName: "Max Temperature",
              aggregation: "max",
              format: "temperature"
            },
            {
              uniqueName: "Wind Speed",
              aggregation: "average",
              format: "windSpeed"
            }
          ]
        },
        options: {
          grid: {
            showTotals: "off",
            showGrandTotals: "off"
          },
          showAggregationLabels: false
        },
        conditions: [
          {
            formula: "#value > 42",
            measure: "Max Temperature",
            aggregation: "max",
            format: {
              backgroundColor: "#FFB74D",
              color: "#000000",
              fontFamily: "Arial",
              fontSize: "12px"
            }
          },
          {
            formula: "#value < 0",
            measure: "Min Temperature",
            aggregation: "min",
            format: {
              backgroundColor: "#81D4FA",
              color: "#000000",
              fontFamily: "Arial",
              fontSize: "12px"
            }
          }
        ],
        formats: [
          {
            name: "",
            decimalPlaces: 1
          },
          {
            name: "temperature",
            currencySymbol: " °C",
            positiveCurrencyFormat: "1$",
            negativeCurrencyFormat: "-1$"
          },
          {
            name: "windSpeed",
            currencySymbol: " km/h",
            positiveCurrencyFormat: "1$",
            negativeCurrencyFormat: "-1$"
          }
        ]
      };
    
      customizeToolbar(toolbar: Flexmonster.Toolbar) {
        toolbar.showShareReportTab = true;
      }
    }
    
    <fm-pivot
      [height]="600"
      [toolbar]="true"
      [report]="report"
      (beforetoolbarcreated)="customizeToolbar($event)"
      [shareReportConnection]="{url: 'https://olap.flexmonster.com:9500'}"
    />
    

    Data visualization and web reporting with Angular and Elasticsearch have never been so fast: upload billions of rows of aggregated data and visualize them in one click.

    Save time and load only the data you need: use the abilities of our Angular dynamic pivot table to expand the members you are interested in.

    Get straight to using this data source with our Angular data grid: see our Elasticsearch connection guide.