Despite the COVID-19 outbreak, our team continues operating at full speed. We are always here to support and answer all your questions.

Feel free to reach out by filling this quick form.

Fill the form
Get Free Trial
  1. API reference
    1. Introduction
    2. Flexmonster()
  2. Objects
    1. All objects
    2. Report Object
    3. Data Source Object
    4. Mapping Object
    5. Slice Object
    6. Options Object
    7. Filtering
      1. Filter Object
      2. Number Query Object
      3. String Query Object
      4. Date Query Object
      5. Time Query Object
      6. Value Query Object
    8. Format Object
    9. Conditional Format Object
    10. Table Sizes Object
    11. Cell Data Object
    12. Chart Data Object
    13. Toolbar Object
    14. Chart Legend Data Object
  3. Methods
    1. All methods
    2. addCalculatedMeasure
    3. addCondition
    4. alert
    5. clear
    6. clearFilter
    7. clearXMLACache
    8. closeFieldsList
    9. collapseAllData
    10. collapseData
    11. connectTo
    12. customizeAPIRequest
    13. customizeCell
    14. customizeChartElement
    15. customizeContextMenu
    16. dispose
    17. expandAllData
    18. expandData
    19. exportTo
    20. getAllConditions
    21. getAllHierarchies
    22. getAllMeasures
    23. getCell
    24. getColumns
    25. getCondition
    26. getFilter
    27. getFlatSort
    28. getFormat
    29. getMeasures
    30. getMembers
    31. getOptions
    32. getReport
    33. getReportFilters
    34. getRows
    35. getSelectedCell
    36. getSort
    37. getTableSizes
    38. getXMLACatalogs
    39. getXMLACubes
    40. getXMLADataSources
    41. getXMLAProviderName
    42. load
    43. off
    44. on
    45. open
    46. openCalculatedValueEditor
    47. openFieldsList
    48. openFilter
    49. print
    50. refresh
    51. removeAllCalculatedMeasures
    52. removeAllConditions
    53. removeCalculatedMeasure
    54. removeCondition
    55. removeSelection
    56. runQuery
    57. save
    58. setFilter
    59. setFlatSort
    60. setFormat
    61. setOptions
    62. setReport
    63. setSort
    64. setTableSizes
    65. showCharts
    66. showGrid
    67. showGridAndCharts
    68. sortingMethod
    69. sortValues
    70. updateData
  4. Events
    1. All events
    2. afterchartdraw
    3. aftergriddraw
    4. beforegriddraw
    5. beforetoolbarcreated
    6. cellclick
    7. celldoubleclick
    8. chartclick
    9. datachanged
    10. dataerror
    11. datafilecancelled
    12. dataloaded
    13. drillthroughclose
    14. drillthroughopen
    15. exportcomplete
    16. exportstart
    17. fieldslistclose
    18. fieldslistopen
    19. filterclose
    20. filteropen
    21. loadingdata
    22. loadinglocalization
    23. loadingolapstructure
    24. loadingreportfile
    25. localizationerror
    26. localizationloaded
    27. olapstructureerror
    28. olapstructureloaded
    29. openingreportfile
    30. printcomplete
    31. printstart
    32. querycomplete
    33. queryerror
    34. ready
    35. reportchange
    36. reportcomplete
    37. reportfilecancelled
    38. reportfileerror
    39. runningquery
    40. unauthorizederror
    41. update
  5. Custom data source API
    1. All requests
    2. /handshake request
    3. /fields request
    4. /members request
    5. /select request for the pivot table
    6. /select request for the flat table
    7. /select request for the drill-through view
    8. Field Object
    9. Filter Object
    10. Filter Group Object
  6. MongoDB Connector API
    1. All methods
    2. getSchema
    3. getMembers
    4. getSelectResult
  7. Flexmonster Connector for amCharts
    1. All methods
    2. amcharts.getData
    3. amcharts.getCategoryName
    4. amcharts.getMeasureNameByIndex
    5. amcharts.getNumberOfMeasures
    6. amcharts.getNumberFormatPattern
Table of contents

/select request for the pivot table

[starting from version: 2.8]

A request for data.

Request

{
    "type": "select"
    "index": string,
    "query": {
        "aggs": {
            "values"[]: {
                "field": FieldObject,
                "func": string
            },
            "by": {
               "rows"[]:FieldObject,
               "cols"[]: FieldObject
            }
        },
       "filter"[]: FilterObject
    },
    "page": number
}

The request has the following parameters:

  • type — String. The type of the request. In this case, it is "select".
  • index – String. The dataset identifier.
  • query – Object. A query object. Contains the following properties:
    • aggs – Object. Query aggregations. The part of the query that specifies which data should be aggregated and how. Contains the following properties:
      • values – Array of objects. Values to aggregate. Fields that have at least one supported aggregation defined in the schema can be selected for the query as values. Each object in the array has the following properties:
        • fieldField Object. The field selected as a measure.
        • func – String. The aggregation function name. For each field, the list of supported aggregations is defined in the response to the /fields request. Supported values may include: "sum", "count", "distinctcount", "average", "median", "product", "min", "max", "stdevp", "stdevs", "none". Note: for the fields of the "number" type, Flexmonster Pivot supports built-in front-end aggregations.
      • by – Object. Fields by which the data should be aggregated:
    • filter (optional) – Array of Filter Objects|Filter Group Object. Query filters. The part of a query that specifies which filters should be applied to the data.
      If the server does not support multilevel hierarchies (i.e., the filters.advanced property is set to false), the filter’s structure is an array of Filter Objects.
      If multilevel hierarchies are supported, the filter can be:
    • page – Number. The page number. It can be used to load data by parts. If a response contains the pageTotal parameter, additional requests will be performed to load the remaining pages. Starts from 0.

Response

{
    "aggs"[]: {
        "values": {
            (uniqueName): {
                (func): number
            }
        },
        "keys": {
           (uniqueName): string | number
        }
    },
    "page": number,
    "pageTotal": number
}

The response has the following parameters:

  • aggs – Array of objects. Aggregated data. Each object in the array has the following properties:
    • values – Object. Numeric values that are calculated for a specific tuple.
      • (uniqueName) – Object. The field’s unique name.
        • (func) – Number. The result of the calculation, where (func) is an aggregation function.
    • keys (optional) – Object. Field’s keys that describe a specific tuple. In case it is not defined, values are treated as totals.
      • (uniqueName) – String|Number. Field’s member, where (uniqueName) is a field’s unique name. Note: totals for each field should be included in the response even if they are disabled on the client side.
  • page (optional) – Number. The current page number. Starts from 0.
  • pageTotal (optional) – Number. The total number of pages. It can be used to load members by parts.

Examples

  1. Example with one value
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }]
            }
        },
        "page": 0
    }
    Response:
    {
        "aggs": [{
            "values": {
                "price": {
                    "sum": 123
                }
            }
        }]
    }
  2. Example with two values
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "aggs": {
                "values": [{
                    "func": "sum", 
                    "field": {
                       "uniqueName": "price"
                    }
                }, {
                    "func": "sum", 
                    "field": {
                       "uniqueName": "quantity"
                    }
                }]
            }
        },
        "page": 0
    }
    Response:
    {
        "aggs": [{
            "values": {
                "price": {
                    "sum": 123
                },
                "quantity": {
                    "sum": 5
                }
            }
        }]
    }
  3. Example with a field in rows
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "aggs": {
                "values": [{
                    "func": "sum", 
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }]
                }
            }
        },
        "page": 0
    }
    Response:
    {
        "aggs": [{
            "values": {
                "price": {
                    "sum": 123
                }
            }
        }, {
            "keys": {
                "city": "Toronto"
            },
            "values": {
                "price": {
                    "sum": 100
                }
            }
        }, {
            "keys": {
                "city": "New York"
            },
            "values": {
                "price": {
                    "sum": 23
                }
            }
        }]
    }
  4. Example with fields in rows and columns
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "aggs": {
                "values": [{
                    "func": "sum", 
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }],
                    "cols": [{
                       "uniqueName": "color"
                    }]
                }
            }
        },
        "page": 0
    }
    Response:
    {
        "aggs": [{
            "values": {
                "price": {
                    "sum": 48
                }
            }
        }, {
            "keys": {
                "city": "New York"
            },
            "values": {
                "price": {
                    "sum": 20
                }
            }
        }, {
            "keys": {
                "city": "Toronto"
            },
            "values": {
                "price": {
                    "sum": 28
                }
            }
        }, {
            "keys": {
                "color": "blue"
            },
            "values": {
                "price": {
                    "sum": 38
                }
            }
        }, {
            "keys": {
                "color": "red"
            },
            "values": {
                "price": {
                    "sum": 10
                }
            }
        }, {
            "keys": {
                "city": "New York",
                "color": "blue"
            },
            "values": {
                "price": {
                    "sum": 20
                }
            }
        }, {
            "keys": {
                "city": "Toronto",
                "color": "blue"
            },
            "values": {
                "price": {
                    "sum": 18
                }
            }
        }, {
            "keys": {
                "city": "Toronto",
                "color": "red"
            },
            "values": {
                "price": {
                    "sum": 10
                }
            }
        }]
    }
  5. Example with exclude members filter
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "filter": [{
                "field": {
                   "uniqueName": "city"
                },
                "exclude": [
    {
    "member": "New York"
    },
    {
    "member": "Montreal"
    }
    ]
           }],
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }]
                }
            }
        }
    }
    Response:
    Format is the same as above.
  6. Example with include/exclude members filter on several fields
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "filter": [{
            "field": {
                       "uniqueName": "color"
                    },
                    "include": [
    {
    "member": "blue"
    }
    ]
                },
                {
                    "field": {
                       "uniqueName": "city"
                    },
                    "exclude": [
    {
    "member": "New York"
    },
    {
    "member": "Montreal"
    }
    ]
           }],
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }]
                }
            }
        }
    }
    Response:
    Format is the same as above.
  7. Example with a conditional filter on members for string field
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "filter": [{
                "field": {
                   "uniqueName": "city"
                },
                "query": {
                    "begin": "toro"
                }
            }],
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }]
                }
            }
        }
    }
    Response:
    Format is the same as above.
  8. Example with a conditional filter on members for number field
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "filter": [{
                "field": {
                   "uniqueName": "quantity"
                },
                "query": {
                    "greater": 2
                }
            }],
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "quantity"
                    }]
                }
            }
        }
    }
    Response:
    Format is the same as above.
  9. Example with a conditional filter on dates for date field
    Request:
    {
    "index": "data-set-123",
    "type": "select",
    "query": {
    "filter": [{
    "field": {
    "field": "order_date"
    },
    "query": {
    "between": [1564610400000, 1564696799999]
    }
    }],
    "aggs": {
    "values": [{
    "func": "sum",
    "field": {
    "field": "price"
    }
    }],
    "by": {
    "rows": [{
    "field": "order_date"
    }]
    }
    }
    }
    }
    Response:
    Format is the same as above.
  10.  Example with a conditional filter on values
    Request:
    {
        "index": "data-set-123",
        "type": "select",
        "query": {
            "filter": [{
                "field": {
                   "uniqueName": "city"
                },
                "query": {
                    "top": 3
                },
                "value": {
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }
            }],
            "aggs": {
                "values": [{
                    "func": "sum",
                    "field": {
                       "uniqueName": "price"
                    }
                }],
                "by": {
                    "rows": [{
                       "uniqueName": "city"
                    }]
                }
            }
        }
    }
    Response:
    Format is the same as above.

See also

/handshake request
/fields request
/members request
/select request for flat table
/select request for drill-through view