idioma
Llámenos: 1-800-497-0151

Blog - Cómo guardar datos en distintas unidades de datos con MemberScriptAndValue

El Guión del Miembro y el Enfoque de Valor

  • , Consultor
OneStream Pop Up Dialog Box

El otro día me encontré con un problema que merece la pena comentar. Intentaba escribir en una intersección de miembros, desde un paso de cálculo de datos personalizado, que estaba fuera de la unidad de datos definida en dicho paso.

La regla de negocio financiera que se estaba ejecutando utilizaba un enfoque api.data.calculate, que lamentablemente falla cuando se intenta escribir fuera de la unidad de datos.


Dim strSource As String = "Cb#CAN_ACT:E#ONT_County1:C#None:S#Actual:T#2021M2:V#Periodic:A#A_69010:F#None:0#Forms:I#None" 
api.Data.Calculate("Cb#CAN_ACT:E#ONT_County1:C#None:S#Actual:T#2021M3:V#Periodic:A#A_69010:F#None:0#Forms:I#None = " & strSource, True)

OneStream Data Units Time Filter

Si intenta utilizar api.data.setDataCell, obtendrá el mismo error.

api.Data.Calculate("Cb#CAN_ACT:E#ONT_County1:C#None:S#Actual:T#2021M3:V#Periodic:A#A_69010:F#None:0#Forms:I#None = " & strSource, True)

Solución: uso de BRApi.Finance.Data.SetDataCellsUsingMemberScript

Paso 1. Atenúe la lista de MemberScriptAndValue. Esta contendrá todas las combinaciones de MemberScript y Value en las que desea escribir.

Atenúe 1stMemScriptAndValue como nueva lista (de MemberScriptAndValue)

Paso 2. Atenúe el objeto MemberScriptAndValue. Este objeto tiene varias propiedades que se usarán para definir el MemberScript, la cantidad (valor) y si contiene datos.

Atenúe msvMemScriptandValue como nuevo MemberScriptAndValue

Paso 3. Defina las propiedades del objeto MemberScriptAndValue que ha instanciado. IsNoData es una propiedad interesante; si se establece en "True", se borra la cantidad de la celda de datos.

										
msvMemScriptandValue.IsNoData = False ' Si se establece en Verdadero, borrará los datos de la intersección de datos. 
msvMemScriptandValue.Amount = 700 'Script del miembro objetivo que se escribirá en 
msvMemScriptandValue.Script = 'Cb#CAN_ACT:E#ONT_County1:C#None:S#Actual:T#2021M3:V#Periodic:A#A_69010:F#None:0#BeforeAdj:I#None'
										
									

Paso 4. Agregue el objeto MemberScriptAndValue que acaba de definir al objeto de lista MemberScriptAndValue que creó en el paso 1. Si tiene varios scripts, puede iterar entre las combinaciones de scripts de miembros y agregar cada una a su objeto de lista. Puede contener más de una definición de MemberScriptAndValue. He usado esto para almacenar cientos de combinaciones de MemberScriptAndValue definidas.

1stMemScriptAndValue.Add(msvMemScriptAndValue)

Paso 5. Escriba la lista MemberScriptAndValue en el cubo usando BRApi.Finance.Data.SetDataCellsUsingMemberScript. Tenga en cuenta que el "if then" del código a continuación devolverá un error si alguno de sus scripts de miembro es inexacto.


If 1stMemScriptAndValue.Count > 0 Then 
 Dim objXFResult As XFResult = BRApi.Finance.Data.SetDataCellsUsingMemberScript(si, 1stMemScriptAndValue) 
  If Not objXFResult.BoolValue Then 
  Throw ErrorHandler.LogWrite(si,objXFResult.Message,String.empty))
 End If 
End If

Este ejemplo solo escribe una combinación de script de miembro y valor en el cubo; sin embargo, lo usé para cargar el contenido de un archivo CSV cargado por el usuario. El archivo CSV se cargó primero en una tabla SQL personalizada en la base de datos de la aplicación. Posteriormente, el contenido de esa tabla SQL se recuperó en una tabla de datos de VB.NET almacenada en memoria. A continuación, se recorrieron las filas de la tabla de datos, generando un objeto de script de miembro y valor con las propiedades Script, Amount e isNoData definidas para cada fila de la tabla de datos. El objeto MemberScriptAndValue se agregó a la lista de objetos MemberScriptAndValue. Una vez que la tabla de datos se recorrió por completo, la lista de objetos MemberScriptAndValue se escribió en el cubo OneStream.

Tenga en cuenta que MemberScripAndValue escribe en O#Forms y tiene un tipo de almacenamiento de entrada, aunque sea el resultado de un cálculo.

Cell Status - Storage Type

A continuación se muestra la regla de negocio completa, con una sección adicional que muestra cómo escribir el contenido de su lista MemberScriptAndValue en el registro de errores.


Public Function MSV(ByVal si As SessionInfo, ByVal globals as BRGlobals, ByVal api As FinanceRuleApi, ByVal args As FinanceRulesArgs)
 Try
  Dim 1stMemScriptAndValue As New List(Of MemberScriptAndValue)
  Dim msvMemScriptandValue As New MemberScriptAndValue
   msvMemScriptandValue.IsNoData = False ' If Set to True it will clear the data from the data intersection 
   msvMemScriptandValue.Amount = 700 'Target Member Script to be written to 
   msvMemScriptandValue.Script = 'Cb#CAN_ACT:E#ONT_County1:C#None:S#Actual:T#2021M3:V#Periodic:A#A_69010:F#None:0#BeforeAdj:I#None'
   1stMemScriptAndValue.Add(msvMemScriptAndValue)
   
   If 1stMemScriptAndValue.Count > 0 Then 
 Dim objXFResult As XFResult = BRApi.Finance.Data.SetDataCellsUsingMemberScript(si, 1stMemScriptAndValue) 
  If Not objXFResult.BoolValue Then 
  Throw ErrorHandler.LogWrite(si, NewXFException(si,objXFResult.Message,String.empty))
 End If 
End If

'Write MemberScriptAndValue contents to error log
Dim logger As New Text.StringBuilder
For Each msv In 1stMemScriptAndValue
    logger. AppendLine("MSV Script = " & msv.Script & " Amount = " & msv.Amount & " IsNoData = " & msv.IsNoData)
Next
brapi.ErrorLog.LogMessage(si, logger.ToString)
Return Nothing

Catch ex As Exception
    Throw ErrorHandler.LogWrite(si, New XFException(si,ex))
End Try
End Function

Póngase en contacto con MindStream Analytics

¿Quiere saber más sobre OneStream Software? Los consultores de MindStream Analytics están aquí para ayudarle a optimizar sus consolidaciones e informes.


Seminario web destacado

OneStream Power BI Platform

Únase a nosotros en un interesante seminario web en el que profundizaremos en las capacidades revolucionarias de OneStream Software para la gestión del rendimiento corporativo (CPM).

OneStream: El poder de una plataforma para la inteligencia financiera

Socio destacado

Socio Diamante de OneStream

OneStream CPM

OneStream se alinea con las necesidades de su negocio y cambia más rápida y fácilmente que cualquier otro producto al ofrecer una plataforma y un modelo para todas las soluciones financieras de CPM. OneStream emplea guiado Flujos de trabajo, validaciones y mapeo flexible para brindar confianza en la calidad de los datos para todas las recopilaciones y análisis al tiempo que se reduce el riesgo a lo largo de todo el proceso financiero auditable.

OneStream