ChristianW
4 years agoValued Contributor
Copy data from another cube (with different dimensionality)
Is there an easy way, to copy data from one cube to another (with different dimensionality)
Yes, there are some function in the financial business rules api to support this:
api.Data.ConvertDataBuffer api.Data.ConvertDataBufferExtendedMembers
With the first function, you define the mapping between the cubes on your own, the second one uses the extended dimension definition for the mapping.
Here is a sample for ConvertDataBufferExtendedMembers
Dim sourceDataBuffer As DataBuffer = api.Data.GetDataBufferUsingFormula("cb#CubeName:A#All") targetDataBuffer = api.Data.ConvertDataBufferExtendedMembers("CubeName", "ScenarioName", sourceDataBuffer) Dim expDestInfo As ExpressionDestinationInfo = api.Data.GetExpressionDestinationInfo($"C#{api.Pov.Cons.Name}") api.Data.SetDataBuffer(targetDataBuffer , expDestInfo)
Here is a sample for ConvertDataBuffer
Dim dataBufferConvInfo As New DataBufferConversionInfo Dim dataBufferConvDimInfo As New DataBufferConvDimInfo Dim dataBufferMapItem As New DataBufferConvMapItem(DataBufferConvType.MapSourceMembersToFirstDestMember, "UD1#Top.Base", "UD1#None", 1) dataBufferConvDimInfo.MapItems.add(dataBufferMapItem) dataBufferConvInfo.UD1Info = dataBufferConvDimInfo dataBufferConvDimInfo = New DataBufferConvDimInfo() dataBufferMapItem = New DataBufferConvMapItem(DataBufferConvType.MapSourceMembersToFirstDestMember, "UD2#Top.Base", "UD2#None", 1) dataBufferConvInfo.UD2Info = dataBufferConvDimInfo Dim sourceDb As DataBuffer = api.Data.GetDataBufferUsingFormula("cb#CubeName:A#All") Dim targetDb As databuffer = api.Data.ConvertDataBuffer("CubeName", "ScenarioName", dataBufferConvInfo, sourceDb) Dim expDestInfo As ExpressionDestinationInfo = api.Data.GetExpressionDestinationInfo($"C#{api.Pov.Cons.Name}") api.Data.SetDataBuffer(targetdb, expDestInfo)