The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.
Forum Discussion
MarioGV
3 years agoNew Contributor III
Cube view using complex function Account
Hello; Im crating a cube view with 2 rows (maybe more) that one of them is a result of a complex function:
"A#INCOME_STATEMENT.Base.Where(Text1 Startswith On-Campus)" and shows several rows qualified as Text1, now I want to sum those Accounts but don't like to use each Account; it could be possible to use a function in a 2nd row like this:
GetDataCell(A#INCOME_STATEMENT.Base.Where(Text1 Startswith On-Campus))::Name(On-Campus)
is that possible?
Thanks in advanceand best Regards.
Mario GV
6 Replies
- BenvanBergenContributor
Hello Mario, For something similar I created a member, for me under UD7 using Attributes. That gives the option to select all items with the Text1 On-Campus. For me all data on UD7 is loaded as None, you need to specify where the data is originally available on. Then you can select the UD7 member in the cubeview and not the account.
I hope this helps.
- OmkareshwarContributor
You can write an XFBR Rule
Within that rule you can pull all the members in a list using this code
Dim Accounts As List(Of String) = BRApi.Finance.Metadata.GetMembersUsingFilter(si, "DimensionName","A#INCOME_STATEMENT.Base.Where(Text1 Startswith On-Campus)",True).Select(Function(c) c.Member.Name).ToList
This will pull aur your relevant accounts in a list then you can loop over that list create an empty string and append all you accounts in this format A#Account1 + A#Account2 and sooo on
then add that to the getdatacell and return in your cube view
- JackLacava
OneStream Employee
Remember you can always hide a row or column, setting the IsRowVisible (or IsColumnVisible) property of Header Formatting. If you set it to CVMathOnly, the row/column will be available for math operations, but won't be visible.
So for example, you could have a row defined with your complex filter, but not displayed; and then you could have another row that gives you the sum of those values.
- Mike_SabourinContributor II
I had a similar use case, and what I did was create a UD8 member named Ent_By_Text to total up using a text field
Dim viewMember As ViewMember = ViewMember.GetItem(api.Pov.View.MemberPk.MemberId) If viewMember.IsAnnotationType Then ' Return an empty string if this is a text-based dataCell. Return "" End If Dim MGMTid As Integer = api.Members.GetMemberId(DimType.Entity.Id, "MGMT") 'Where "MGMT" is the top-most entity in the hierarchy Dim baseEnts As List(Of Member) = api.Members.GetBaseMembers(api.Pov.EntityDim.DimPk, MGMTid, Nothing) Dim povText As String = api.Entity.Text(3) Dim LocTot As Decimal = 0 If Not baseEnts Is Nothing Then For Each CurrEnt As Member In baseEnts Dim currText As String= api.Entity.Text(current.MemberId,3) If currText = povText Then LocTot = LocTot + api.Data.GetDataCell("E#" & CurrEnt.Name & ":T#[" + api.Pov.Time.Name _ + "]:V#" & api.Pov.View.Name & ":C#" & api.Pov.Cons.Name & _ ":O#Top:I#Top:F#Top:U1#Top:U2#Top:U3#Top:U4#" & api.Pov.UD4.Name & _ ":U5#Top:U6#None:U7#None:U8#None").CellAmount 'brapi.ErrorLog.LogMessage(si, "Test-Entity~" & CurrEnt.Name & "~povText~" _ ' & povText & "~currText~" & currText & "~LocTot~" & LocTot) Else LocTot = LocTot End If 'If TargetCurr = povCurr Then Next 'CurrEnt If LocTot <> 0 Then Return LocTot Else Return Nothing End If Else Return Nothing End If 'If Not baseEnts Is Nothing Then - ckattookaranValued Contributor
Why not use a CVR function?
- BenvanBergenContributor
Hi Celvin, when I use a CVR function it would only sum the first account from the .base drilldown. Is there a way to sum all? That would make it easy.
Thanks