Exportar datos de OneStream a un archivo CSV

Hay casos en los que desea darle al usuario la capacidad de exportar datos a un archivo CSV. Sí, muchos componentes ya traen esa capacidad incorporada, pero algunos, como el SQL Table Editor, no la tienen. O tal vez quiera un control más detallado sobre exactamente qué datos se exportan y dónde se escribe el archivo. En este ejemplo mostraré una forma de hacerlo en OneStream.
Para lograrlo usaré la función BRApi.FileSystem.InsertOrUpdateFile.
BRApi.FileSystem.InsertOrUpdateFile(si, XFfileData)
Esta función requiere un par de parámetros que, a su vez, requerirán otras funciones con varios parámetros cada una.
Para la Business Rule de tipo Dashboard Extender.
Paso 1 – Defina la ruta y el nombre del archivo donde se exportará. En este ejemplo lo exportaré a la carpeta Application Database File, dentro del directorio Users.
‘Ruta y nombre del archivo de exportación
Dim fileName As String = “CorpAccounts.csv”
Dim filePath As String = $”Documents/Users/{StringHelper.RemoveWhiteSpace(si.UserName, False)}”
Paso 2 – Defina la dimensión que se exportará. Para fines de demostración la he dejado codificada directamente en la Business Rule.
‘Dimensión que se exportará
Dim accountDimPk as DimPk = BRApi.Finance.Dim.GetDimPk(si, “CorpAccounts”)
Paso 3 – Obtenga todos los descendientes de la dimensión y cárguelos en una lista.
‘Obtener los descendientes de la dimensión en una lista
Dim listOfParents As List(Of MemberInfo) = BRApi.Finance.Members.GetMembersUsingFilter(si, accountDimPk, “A#Root.TreeDescendantsInclusive”)
Paso 4 – Recorra la lista y agregue sus miembros a un objeto StringBuilder.
‘Recorrer la lista y anexar los miembros a un objeto StringBuilder
Dim csv As New Text.StringBuilder
For Each parent As MemberInfo In listOfParents
Paso 5 – Convierta el objeto StringBuilder en un arreglo de bytes.
‘Convertir cadena a arreglo de bytes
Dim fileBytes As Byte() = System.Text.Encoding.Unicode.GetBytes(csv.ToString)

Paso 6 – Guarde el archivo CSV en el File System.
‘Guardar CSV en archivo
Dim XFfileDataInfo As New XFFileInfo(FileSystemLocation.ApplicationDatabase, fileName, filePath)
Dim XFfileData As New XFFile(XFfileDataInfo, fileBytes)
BRApi.FileSystem.InsertOrUpdateFile(si, XFfileData)
El código completo.
Código completo para exportar CSV en OneStream
Ahora, para ejecutar la Business Rule.
Para esta demostración la ejecutaré desde un botón en un dashboard.
Botón de dashboard para exportar CSV
Llamando a la Business Rule desde el botón.
Llamada a business rule desde botón
Lo que en este ejemplo exportará los miembros de dimensión de la dimensión CorpAccounts dentro de mi aplicación.
Dimensión CorpAccounts en OneStream
Esto exportará los hijos de la dimensión CorpAccounts a un archivo CSV y escribirá el archivo en la carpeta Application Database/Users/vanderms. vanderms es mi nombre de usuario en la aplicación OneStream.
Exportación de CorpAccounts a CSV
El archivo CSV ahora contiene los miembros de la dimensión.
Miembros de dimensión exportados en Excel
Funcionalidad útil que, aunque en este ejemplo se usa para exportar miembros de dimensión, también la he utilizado para exportar Cube Data, datos de tablas relacionales personalizadas, así como cualquier otro conjunto de datos al que pueda acceder desde una regla.