groupBy

open fun groupBy(vararg items: PropertyPath): DataQuery

Adds a group transformation item to the DataQuery with the property paths given in the parameter list. Note: If this method is called then all the transformation and aggregation items added to the query will be applied to the group transformation in the query.

Example for transformations:
open fun transformationExample(): kotlin.Unit
{
    val service = this.service;
    val employeeEntitySet = service.getEntitySet("Employees");
    val employeeEntityType = employeeEntitySet.entityType;
    val employeeReportsToProperty = employeeEntityType.getProperty("ReportsTo");
    val ordersProperty = employeeEntityType.getProperty("Orders");
    val orderID = ordersProperty.itemEntityType.getProperty("OrderID");
    val countryProperty = employeeEntityType.getProperty("Country");
    val queryGroup = DataQuery().from(employeeEntitySet);
    val filterGroupTransform = FilterTransform.of(QueryOperator.equal(countryProperty,
        StringValue.of("Budapest")));
    val groupTransform = GroupTransform.groupBy(employeeReportsToProperty)
        .aggregate(ordersProperty.path(orderID).countDistinct("TotalOrders"));
    queryGroup.transform(groupTransform);
    this.testApplyQueryResult(queryGroup, "TotalOrders");
    val groupTransformForQuery = DataQuery().from(employeeEntitySet)
        .groupBy(employeeReportsToProperty)
        .aggregate(ordersProperty.path(orderID).countDistinct("TotalOrders"))
        .transform(filterGroupTransform);
    this.testApplyQueryResult(groupTransformForQuery, "TotalOrders");
    val queryTopPercent = DataQuery().from(employeeEntitySet);
    val topPercentTransform = TopTransform.percent(50.toDouble(),
        employeeReportsToProperty);
    queryTopPercent.transform(topPercentTransform);
    this.testApplyQueryResult(queryTopPercent, null);
    val queryExpand = DataQuery().from(employeeEntitySet);
    val expandTransform = ExpandTransform.withFilter(ordersProperty,
        FilterTransform.of(QueryOperator.equal(employeeReportsToProperty,
            IntValue.of(1000))));
    queryExpand.transform(expandTransform);
    this.testApplyQueryResult(queryExpand, null);
    val employee1Property = employeeEntityType.getProperty("Employee1");
    val expandWithExpandTransform = ExpandTransform.withExpand(employee1Property,
        expandTransform);
    val queryExpand1 = DataQuery().from(employeeEntitySet);
    queryExpand1.transform(expandWithExpandTransform);
    this.testApplyQueryResult(queryExpand1, null);
    val queryOrderBy = DataQuery().from(employeeEntitySet);
    val orderTransform = OrderTransform.orderBy(SortItem.of(countryProperty,
        SortOrder.DESCENDING));
    val skipTransform = SkipTransform.skip(5);
    val topTransform = TopTransform.top(10);
    queryOrderBy.transform(orderTransform.chain(skipTransform)
        .chain(topTransform));
    this.testApplyQueryResult(queryOrderBy, null);
    val orderDetailsEntitySet = service.getEntitySet("Order_Details");
    val ordersQuantityProperty = orderDetailsEntitySet.entityType.getProperty("Quantity");
    val queryConcat = DataQuery().from(orderDetailsEntitySet);
    val concatTransform = ConcatTransform.create(IdentityTransform.create(),
        ordersQuantityProperty.sum("SumQuantity"));
    queryConcat.transform(concatTransform);
    this.testApplyQueryResult(queryConcat, "SumQuantity");
    val var_employeeEntitySet = service.getEntitySet("Employees");
    val var_employeeEntityType = var_employeeEntitySet.entityType;
    val employeeIDProperty = var_employeeEntityType.getProperty("EmployeeID");
    val firstNameProperty = var_employeeEntityType.getProperty("FirstName");
    val lastNameProperty = var_employeeEntityType.getProperty("LastName");
    val var_ordersProperty = var_employeeEntityType.getProperty("Orders");
    val ordersEntitySet = service.getEntitySet("Orders");
    val orderEntityType = ordersEntitySet.entityType;
    val orderIDProperty = orderEntityType.getProperty("OrderID");
    val queryJoin = DataQuery().from(var_employeeEntitySet);
    val joinTransform = JoinTransform.join(var_ordersProperty, "Order");
    joinTransform.transform(GroupTransform.groupBy(employeeIDProperty,
        firstNameProperty, lastNameProperty)
        .aggregate(DataPath.ofDynamic("Order").path(orderIDProperty).countDistinct("TotalOrders")));
    queryJoin.transform(joinTransform);
    this.testApplyQueryResult(queryJoin, "Order");
}
Example for transformations:
open fun transformationExample(): kotlin.Unit
{
    val queryGroup = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    val groupTransform = GroupTransform.groupBy(Employee.reportsTo)
        .aggregate(Employee.orders.path(Order.orderID)
            .countDistinct("TotalOrders"));
    queryGroup.transform(groupTransform);
    this.testApplyQueryResult(queryGroup, "TotalOrders");
    val filterGroupTransform = FilterTransform.of(QueryOperator.equal(Employee.country,
        StringValue.of("Budapest")));
    val groupTransformForQuery = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees)
        .groupBy(Employee.reportsTo)
        .aggregate(Employee.orders.path(Order.orderID).countDistinct("TotalOrders"))
        .transform(filterGroupTransform);
    this.testApplyQueryResult(groupTransformForQuery, "TotalOrders");
    val queryTopPercent = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    val topPercentTransform = TopTransform.percent(50.toDouble(),
        Employee.reportsTo);
    queryTopPercent.transform(topPercentTransform);
    this.testApplyQueryResult(queryTopPercent, null);
    val queryExpand = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    val expandTransform = ExpandTransform.withFilter(Employee.orders,
        FilterTransform.of(QueryOperator.equal(Employee.reportsTo,
            IntValue.of(1000))));
    queryExpand.transform(expandTransform);
    this.testApplyQueryResult(queryExpand, null);
    val expandWithExpandTransform = ExpandTransform.withExpand(Employee.employee1,
        expandTransform);
    val queryExpand1 = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    queryExpand1.transform(expandWithExpandTransform);
    this.testApplyQueryResult(queryExpand1, null);
    val queryOrderBy = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    val orderTransform = OrderTransform.orderBy(SortItem.of(Customer.country,
        SortOrder.DESCENDING));
    val skipTransform = SkipTransform.skip(5);
    val topTransform = TopTransform.top(10);
    queryOrderBy.transform(orderTransform.chain(skipTransform)
        .chain(topTransform));
    this.testApplyQueryResult(queryOrderBy, null);
    val queryConcat = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.orderDetails);
    val concatTransform = ConcatTransform.create(IdentityTransform.create(),
        OrderDetail.quantity.sum("SumQuantity"));
    queryConcat.transform(concatTransform);
    this.testApplyQueryResult(queryConcat, "SumQuantity");
    val queryJoin = DataQuery()
        .from(NorthwindServiceMetadata.EntitySets.employees);
    val joinTransform = JoinTransform.join(Employee.orders, "Order");
    joinTransform.transform(GroupTransform.groupBy(Employee.employeeID,
        Employee.firstName, Employee.lastName)
        .aggregate(DataPath.ofDynamic("Order").path(Order.orderID).countDistinct("TotalOrders")));
    queryJoin.transform(joinTransform);
    this.testApplyQueryResult(queryJoin, "Order");
}

Return

This query.

Parameters

items

The property paths to be added to the group transformation.