TransformationNodeBuilder Class
Contains methods that allow you to create transformation-based queries to sources of the Federation Data Source.
Namespace: DevExpress.DataAccess.DataFederation
Assembly: DevExpress.DataAccess.v24.2.dll
NuGet Package: DevExpress.DataAccess
#Declaration
#Related API Members
The following members return TransformationNodeBuilder objects:
#Remarks
The Federation Data Source allows you to combine data from multiple sources. Use the TransformationNodeBuilder class to unfold and/or flatten columns of these sources. To do this,
- Call the Transform method for a Source object to create a TransformationNodeBuilder object. You can also create a transformation-based query after you apply the Select/Join and/or Union/UnionAll operations. Refer to the Transform(IJoinNode) method description for more details.
- Apply transformations for the created TransformationNodeBuilder object. Call the FlattenColumn method to flatten a column, the UnfoldColumn method to unfold a column, and the TransformColumn method to unfold and then flatten a column.
- After all the operations are applied, call the Build() method for the TransformationNodeBuilder object to create a TransformationNode object. If this method is called last, pass the name of the node as the first argument to this method.
- Add the created TransformationNode object to the Query collection of the Federation Data Source.
#Example
The following example demonstrates how to unfold and flatten the Products array of two data sources and unite data from these sources.
[
{
"CategoryID": 1,
"Products":
[
{
"ProductName": "Chai",
"UnitPrice": 18
},
{
"ProductName": "Chang",
"UnitPrice": 19
}
]
},
{
"CategoryID": 2,
"Products":
[
{
"ProductName": "Ikura",
"UnitPrice": 31
},
{
"ProductName": "Konbu",
"UnitPrice": 6
}
]
}
]
[
{
"CategoryID": 1,
"Products":
[
{
"ProductName": "Chai",
"UnitPrice": 18
},
{
"ProductName": "Chang",
"UnitPrice": 19
}
]
},
{
"CategoryID": 2,
"Products":
[
{
"ProductName": "Ikura",
"UnitPrice": 31
},
{
"ProductName": "Konbu",
"UnitPrice": 6
}
]
}
]
using DevExpress.DataAccess.DataFederation;
using DevExpress.DataAccess.Json;
// ...
var source1 = new Source("Products1", jsonDataSource1);
var source2 = new Source("Products2", jsonDataSource2);
var query1 = source1
.Transform()
.TransformColumn("Products")
.Build();
var query2 = source2
.Transform()
.TransformColumn("Products")
.Build();
var query = query1
.Union(query2)
.Build("ProductsUnited");
var federation = new FederationDataSource() {
Queries = { query }
};
The following schema is the result of the transformation:
"CategoryID": int
"Products_ProductName": string
"Products_UnitPrice" : string