View this page in the latest version of Appian. todatasubset() Function Share Share via LinkedIn Reddit Email Copy Link Print On This Page Function todatasubset( arrayToPage, pagingConfiguration ) The function takes an array of values as well as optional paging/sorting configurations and returns a DataSubset value with a subset of the array in a specified sort order and the total count of items in the initial array. See also: DataSubset PagingInfo Grid Tutorial Array Functions Parameters Keyword Type Description arrayToPage Any Type The array of values to page and sort. pagingConfiguration PagingInfo The paging and sorting configuration. Returns DataSubset Usage considerations This function should be used primarily as a method for configuring a Read-Only Grid form component or grid component, such as one that displays data on a task form for review before persisting the data to a database. You can also use it to sort an array for CDTs and then use the dot operator to extract the array from the returned data value. The arrayToPage value can include primitive system, complex system, and custom complex data types. See also: Data Types You can use also dictionary syntax to create a value for the arrayToPage parameter. If the array contains null or duplicate values, they are preserved unless removed through the pagingConfiguration value. If the startIndex value of pagingConfiguration is greater than the total number of items in the list, a null array is returned as the data field of the DataSubset return value. If the batchSize value of pagingConfiguration is greater than zero, the function returns a subset of the arrayToPage with at most the batchSize number of values starting at startIndex. If the batchSize value is -1, all items in the arrayToPage are returned. If the batchSize value is null or zero, the totalCount and startIndex of the array is returned, but no data. If the sort value of pagingConfiguration is not null or empty, the function returns a subset of the input sorted by the field value. If the value is null or empty, it returns an unsorted subset of the input. If the ascending field has a value of true, the sort is ascending - otherwise, descending. Examples You can copy and paste these examples into the Expression Rule Designer to see how this works. Return all items in an array starting at index 1: 1 todatasubset({1, 2, 3, 4, 5}) returns 1 2 3 4 5 6 [startIndex=1, batchSize=-1, sort=, totalCount=5, data=1; 2; 3; 4; 5, identifiers=1; 2; 3; 4; 5] Return two items in an array starting at index 1: 1 todatasubset({1, 2, 3, 4, 5}, topaginginfo(1, 2)) returns 1 2 3 4 5 6 [startIndex=1, batchSize=2, sort=, totalCount=5, data=1; 2, identifiers=1; 2] Access the subset of data returned using the dot operator: 1 todatasubset({1, 2, 3, 4, 5}, topaginginfo(1, 2)).data returns 1 1,2 Sort an array of Column values by a field called "alias" in ascending order: 1 2 3 4 5 6 7 todatasubset({ type!Column(field: "username", alias: "un", visible: true), type!Column(field: "firstName", alias: "first", visible: false), type!Column(field: "lastName", alias: "last", visible: true) }, a!pagingInfo(startIndex: 1, batchSize: 2, sort:{field: "alias", ascending: true}) ) returns 1 2 3 4 5 6 [startIndex=1, batchSize=2, sort=[field=alias, ascending=true], totalCount=3, data=[field=firstName, alias=first, visible=false]; [field=lastName, alias=last, visible=true], identifiers=2; 3] See also: Column Data Type Sort an array by a field called "alias" and then by a field called "nameType" using dictionary syntax: 1 2 3 4 5 6 7 8 9 10 11 12 todatasubset({ {nameType: "username", alias: "un", visible: true}, {nameType: "firstName", alias: "first", visible: false}, {nameType: "nickName", alias: "first", visible: false}, {nameType: "lastName", alias: "last", visible: true} }, a!pagingInfo(startIndex: 1, batchSize: 2, sort: { {field: "alias", ascending: true}, {field: "nameType", ascending: false} } ) ) returns 1 2 3 4 5 6 [startIndex=1, batchSize=2, sort=[field=alias, ascending=true]; [field=nameType, ascending=false], totalCount=4, data=[nameType:nickName,alias:first,visible:false]; [nameType:firstName,alias:first,visible:false], identifiers=3; 2] Return paging and sort configurations with no data values: 1 2 3 4 5 6 7 todatasubset({ type!Column(field: "username", alias: "un", visible: true), type!Column(field: "firstName", alias: "first", visible: false), type!Column(field: "lastName", alias: "last", visible: true) }, a!pagingInfo(startIndex: 1, batchSize: 0, sort:{field: "alias", ascending: true}) ) returns 1 2 3 4 5 6 [startIndex=1, batchSize=0, sort=[field=alias, ascending=true], totalCount=3, data=, identifiers=] Feature compatibility The table below lists this function's compatibility with various features in Appian. Feature Compatibility Note Portals Partially compatible Can be used with Appian Portals if it is connected using an integration and web API. Offline Mobile Incompatible Sync-Time Custom Record Fields Incompatible Real-Time Custom Record Fields Incompatible Custom record fields that evaluate in real time must be configured using one or more Custom Field functions. Process Reports Incompatible Cannot be used to configure a process report. Process Events Incompatible Cannot be used to configure a process event node, such as a start event or timer event. Feedback Was this page helpful? SHARE FEEDBACK Loading...