List of all demos

Vue Pivot Table with Elasticsearch

Use our pivot grid component with Elasticsearch data source in Vue.js.


    <template>
      <Pivot
        height="600"
        toolbar
        v-bind:report="report"
        v-bind:shareReportConnection="{
          url: 'https://olap.flexmonster.com:9500',
        }"
        v-bind:beforetoolbarcreated="customizeToolbar"
      />
    </template>
    
    <script>
    import Pivot from "vue-flexmonster/vue3";
    import "flexmonster/flexmonster.css";
    
    export default {
      name: "PivotComponent",
      components: {
        Pivot,
      },
      data() {
        return {
          report: {
            dataSource: {
              type: "elasticsearch",
              node: "https://olap.flexmonster.com:9200",
              index: "australian_weather",
              mapping: {
                "Date": {
                  caption: "Date",
                  format: "yyyy",
                  interval: "1y",
                },
                "Location": {
                  caption: "Location",
                },
                "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",
                },
                "State.keyword": {
                  caption: "State",
                },
                "Location.keyword": {
                  caption: "Location",
                },
              },
            },
            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",
                  grandTotalCaption: "Min Temp",
                  format: "-10ws2q1oviodoa",
                },
                {
                  uniqueName: "Max Temperature",
                  aggregation: "max",
                  grandTotalCaption: "Max Temp",
                  format: "-10mkdp0yjbxs4e",
                },
                {
                  uniqueName: "Wind Speed",
                  aggregation: "average",
                  grandTotalCaption: "Wind Speed",
                  format: "-12d55123ugyhur",
                },
              ],
            },
            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: "-12d55123ugyhur",
                currencySymbol: " km/h",
                positiveCurrencyFormat: "1$",
                negativeCurrencyFormat: "-1$",
              },
              {
                name: "-10ws2q1oviodoa",
                currencySymbol: " °C",
                positiveCurrencyFormat: "1$",
                negativeCurrencyFormat: "-1$",
              },
              {
                name: "-10mkdp0yjbxs4e",
                currencySymbol: " °C",
                positiveCurrencyFormat: "1$",
                negativeCurrencyFormat: "-1$",
              },
            ],
          },
        };
      },
      methods: {
        customizeToolbar(toolbar) {
          toolbar.showShareReportTab = true;
        },
      },
    };
    </script>
    

    Smoothly connect your Vue pivot grid to Elasticsearch to get the aggregated data.

    We made it possible to see insights based on gigabytes of data just in a matter of seconds. And there is no need to load all the raw data into the pivot table to build the data cube – Flexmonster sends a sequence of queries to get the summarized data from Elasticsearch.

    For further details, check out how Elasticserach works with Flexmonster.