# Vue Data Query Overview

The Kendo UI Data Query package is a framework-agnostic utility library for performing in-memory data operations and serializing data-state descriptors to OData or ASP.NET Core DataSource request formats.

It ships as a standalone npm package (`@progress/kendo-data-query`) and is used internally by data-bound Kendo UI components such as the Grid and TreeList to process local data. You can also use it independently whenever you need to sort, filter, group, or aggregate a JavaScript array without adding a UI layer.

<CtaPanelOverview></CtaPanelOverview>

## Vue Data Query Example

The following code snippet demonstrates how to filter an in-memory product array using the `filterBy` function of the Data Query package:

```js Function Usage
import { filterBy } from '@progress/kendo-data-query';

const shipped = filterBy(orders, {
  field: 'status', operator: 'eq', value: 'shipped'
});

// shipped => [{ id: 1001, customer: 'Acme Corp', ... }, { id: 1003, customer: 'Initech', ... }]
```

```js Sample Data
const orders = [
  { id: 1001, customer: 'Acme Corp', region: 'EMEA', amount: 3897, status: 'shipped'   },
  { id: 1002, customer: 'Globex Ltd', region: 'APAC', amount: 245,  status: 'pending'   },
  { id: 1003, customer: 'Initech', region: 'AMER', amount: 898,  status: 'shipped'   },
  { id: 1004, customer: 'Umbrella Inc', region: 'EMEA', amount: 145,  status: 'cancelled' }
];
```

## Vue Data Query Key Features

The Kendo UI Data Query package delivers a set of helper functions for in-memory data operations and server-side data serialization.

### Sorting

`orderBy` sorts an array by one or more fields with an optional direction and a custom comparator. [Read more about sorting...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations#sorting)

### Filtering

`filterBy` filters an array using a `FilterDescriptor` or a composite filter tree with `and`/`or` logic and over a dozen built-in operators. [Read more about filtering...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations#filtering)

### Grouping

`groupBy` splits an array into hierarchical groups based on one or more fields. [Read more about grouping...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations#grouping)

### Aggregates

`aggregateBy` computes `sum`, `average`, `count`, `min`, and `max` over specified fields. [Read more about aggregates...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations#aggregates)

### Combined Operations

`process` applies sort, filter, group, and aggregate operations in a single call and returns both the processed data array and the total item count before paging. This is the same function used internally by data-bound Kendo UI components when they operate on local data. [Read more about combined operations...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations#combined-operations-with-process)

### OData Serialization

`toODataString` converts a `State` descriptor to an OData v4 query string for server-side filtering or sorting requests.

### ASP.NET Core Integration

`toDataSourceRequestString` serializes component state to the format the Telerik UI for ASP.NET Core `DataSourceRequest` model binder expects. Companion helpers `translateDataSourceResultGroups` and `translateAggregateResults` convert the server response back for the component. [Read more about ASP.NET Core integration...](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/mvc-integration)

## Support Options

For any questions about the use of the Vue Data Query, or any of our other components, there are [several support options available](https://www.telerik.com/support):

* Kendo UI license holders and anyone in an active trial can take advantage of the outstanding customer support delivered by the actual developers who built the library. To submit a support ticket, use the [Kendo UI support system](https://www.telerik.com/account/support-tickets).
* [Kendo UI for Vue forums](https://www.telerik.com/forums/kendo-vue-ui) are part of the free support you can get from the community and from the Kendo UI team on all kinds of general issues.
* [Kendo UI for Vue feedback portal](https://feedback.telerik.com/kendo-vue-ui) and [roadmap](https://www.telerik.com/support/whats-new/kendo-vue-ui/roadmap) provide information on the features in discussion and also the planned ones for release.
* Kendo UI for Vue uses [GitHub Issues](https://github.com/telerik/kendo-vue/issues) as its bug tracker and you can submit any related reports there. Also, check out the [closed list](https://github.com/telerik/kendo-vue/issues?q=is%3Aissue+is%3Aclosed).

## Suggested Links

* [Installation](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/get-started)
* [Data Operations Reference](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/bulk-operations)
* [Integration with UI for ASP.NET Core](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/mvc-integration)
* [Data Query API](https://www.telerik.com/kendo-vue-ui-develop/components/dataquery/api)
