-
Type:
New Feature
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: V4.0_CSD03
-
Fix Version/s: V4.0_CSD04
-
Component/s: Data Aggregation
-
Labels:None
-
Environment:
Applied
-
Proposal:
This new feature is motivated by a concrete use case. The current version of the Data Aggregation specification already includes an example for a cross-table and describes how to retrieve its data using transformation groupby in combination with rollup. However, this data is returned as linear collection of entities. For working with data in a grid efficiently, it must be possible to access selected sections of the grid. Details are described in the document “Grid-Like Access to Aggregated Data”, sections 2 and 3: https://www.oasis-open.org/committees/document.php?document_id=62593&wg_abbrev=odata
Field | Original Value | New Value |
---|---|---|
Proposal | An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of one axis as a nested collection of another axis. Details are described in the document “Grid-Like Access to Aggregated Data”, sections 2 and 3: https://www.oasis-open.org/committees/document.php?document_id=62593&wg_abbrev=odata | An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows. Details are described in the document “Grid-Like Access to Aggregated Data”, sections 2 and 3: [https://www.oasis-open.org/committees/document.php?document_id=62593&wg_abbrev=odata] |
Proposal | An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows. Details are described in the document “Grid-Like Access to Aggregated Data”, sections 2 and 3: [https://www.oasis-open.org/committees/document.php?document_id=62593&wg_abbrev=odata] |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The transpose transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} |
Description | This new feature is motivated by a concrete use case. The current version of the Data Aggregation specification already includes an example for a cross-table and describes how to retrieve its data using transformation groupby in combination with rollup. However, this data is returned as linear collection of entities. For working with data in a grid efficiently, it must be possible to access selected sections of the grid. | This new feature is motivated by a concrete use case. The current version of the Data Aggregation specification already includes an example for a cross-table and describes how to retrieve its data using transformation groupby in combination with rollup. However, this data is returned as linear collection of entities. For working with data in a grid efficiently, it must be possible to access selected sections of the grid. Details are described in the document “Grid-Like Access to Aggregated Data”, sections 2 and 3: [https://www.oasis-open.org/committees/document.php?document_id=62593&wg_abbrev=odata] |
Status | New [ 10000 ] | Open [ 1 ] |
Proposal |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The transpose transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The transpose transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Resolved [ 5 ] |
Proposal |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The transpose transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The nest transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}2018/5/24: Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
Proposal |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation transpose that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The nest transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. transpose( cnp, t ) applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property cnp, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}2018/5/24: Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation {{nest()}} that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The {{nest}} transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. {{nest( cnp, t )}} applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property {{cnp}}, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
Proposal |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation {{nest()}} that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The {{nest}} transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. {{nest( cnp, t )}} applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property {{cnp}}, which in turn holds the result collection of t applied to the input set: {color:#000000} {color} {color:#000000}[ \{ <cnp>: [ <result of t applied to input set> ] } ]{color} {color:#000000}Amendment: Use "nest" as name for the transformation instead of "transpose"{color} |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation {{nest()}} that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The {{nest}} transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. {{nest( cnp, t )}} applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property {{cnp}}, which in turn holds the result collection of t applied to the input set: {{<cnp>: [ <result of t applied to input set> ]}} |
Proposal |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation {{nest()}} that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The {{nest}} transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. {{nest( cnp, t )}} applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property {{cnp}}, which in turn holds the result collection of t applied to the input set: {{<cnp>: [ <result of t applied to input set> ]}} |
An OData representation of a grid-like result spanned by multiple axes could be achieved by a new transformation {{nest()}} that allows to embed data of grid cells as a nested collection of entities representing grid rows.
Relevant excerpt from section 3 in the referenced document: The {{nest}} transformation has two parameters. The first takes the name of a dynamic containment navigation property, the second is a (chain of) $apply transformations. {{nest( cnp, t )}} applies transformation chain t to the input set and creates a result set containing a single entity that only contains the navigation property {{cnp}}, which in turn holds the result collection of t applied to the input set: {code:json} { <cnp>: [ <result of t applied to input set> ] } {code} |
Environment | Proposed | Applied |
Status | Resolved [ 5 ] | Applied [ 10002 ] |
Status | Applied [ 10002 ] | Closed [ 6 ] |
Some examples to illustrate the transpose transformation applied to the data model in the data aggregation extension specification:
1. Rolodex: Retrieve index cards for customers
GET Customers?$apply = compute( substring( Name, 0, 1 ) as FirstLetter )
/ groupby( (FirstLetter), transpose( Customers, identity ) )
returns
2. Retrieve customers per product category
GET Sales?$apply = groupby( (Product/Category/ID),
transpose( Customers, groupby( (Customer/ID) ) )
returns