Recent Discussions
Genesis: BI Viewer Configuration, Data Source, Excel
Currently I get the following error when trying to make a data source from an Excel sheet: As I have tried to narrow the information down due to endless error messages the file looks like this My question is: Where do I find a description of how to set up a data adapter in Genesis to an Excel sheet.SolvedOle_S_P5 hours agoNew Contributor III10Views0likes2CommentsDashboard to show annotations details, footnote details, assumptions, variance explanations ...
Dear Community, It is very easy for a user to add comments on a given cell, using data attachments : However, what are the reporting possibilities for such comments ? Could we use them in dashboard, for instance to be shown as footnote of a dashboard ? Or could these be used as footnotes in pixel-perfect pdf documents generated from a cube view ? Many thanks,Sergey23 hours agoOneStream Employee2.8KViews0likes4CommentsBI Viewer drill down without hidden data items
I'm trying to create a drill down in a BI Viewer dashboard using only a data set return. I can add a column (in this case "category") to both the Dimensions and Measures area. I then enable the drill down under Data > Drill Down, however, once the drill down is active, the Category column is hidden on the output and won't show until you drill into a row. I want to ability to drill into a row, but a user needs to see the Category column first before drilling. Is there a way for me to drill into a dataset without using "hidden" dimensions and measures for a column? Also - what is the difference between "Dimension" and "Measure"? Thanks!saustermiller1 day agoNew Contributor9Views0likes1CommentMissing Account Values
This one is for all you Encyclopedia Brown fans out there. Like many companies, we have a cash flow cube view. We've recently added two balance sheet accounts to one of the lines in it, but the values in those accounts do not show up. Here is the code for the member formula for the Debt Payments cash flow line: If (Not api.Entity.HasChildren()) Then api.data.calculate("A#CF_DebtPymts:F#CF_ACTIVITY:I#None:O#Import = A#DebtCur:F#RF_Debt_ACTIVITY:I#Top:O#Top + A#Debt_LT:F#RF_Debt_ACTIVITY:I#Top:O#Top + A#Cur_equip_fin_liabs:F#RF_Debt_ACTIVITY:I#Top:O#Top + A#LT_equip_fin_liabs:F#RF_Debt_ACTIVITY:I#Top:O#Top") End If The last two accounts, Cur_equip_fin_liabs and LT_equip_fin_liabs are not pulling into the value for Debt Payments even though I've proven via a QuickView that there are data in the intersections specified in the above formula. I've compared the new accounts to the existing accounts in this formula, and all the settings are the same. These accounts were added before month end close, so everything has been through the entire process of consolidation and calculation. Why do the values not pull into this cash flow account?9Views0likes0CommentsTop N in Cubeview using BR
I am trying to get top N (top 10) customers by revenue account in my cubeview. For this i re-purposed the snippet finance code for List Ranked to this: Namespace OneStream.BusinessRule.Finance.Ranked_list Public Class MainClass Public Function Main( ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As FinanceRulesApi, ByVal args As FinanceRulesArgs ) As Object Try Select Case api.FunctionType Case FinanceFunctionType.MemberListHeaders Return New List(Of MemberListHeader) From { New MemberListHeader("Ranked") } Case FinanceFunctionType.MemberList If args.MemberListArgs.MemberListName.Equals("Ranked", StringComparison.InvariantCultureIgnoreCase) Then Dim header As New MemberListHeader("Ranked") Dim members As List(Of Member) = GetRankedMembers(si, api, args) Return New MemberList(header, members) End If End Select Return Nothing Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function #Region "Ranking Logic" Private Function GetRankedMembers( ByVal si As SessionInfo, ByVal api As FinanceRulesApi, ByVal args As FinanceRulesArgs ) As List(Of Member) Try '------------------------------- ' Required parameters '------------------------------- Dim rankType As String = args.MemberListArgs.NameValuePairs("RankType") Dim rankCount As Integer = Convert.ToInt32(args.MemberListArgs.NameValuePairs("RankCount")) Dim loopMemberFilter As String = args.MemberListArgs.NameValuePairs("LoopMemberFilter") If Not args.MemberListArgs.NameValuePairs.ContainsKey("DataCellToRankMemberFilter") Then Throw New Exception("Missing required parameter: DataCellToRankMemberFilter") End If Dim dataCellFilter As String = args.MemberListArgs.NameValuePairs("DataCellToRankMemberFilter") Dim cubeName As String = New MemberScriptBuilder(dataCellFilter).Cube '------------------------------- ' Determine looping dimension '------------------------------- Dim loopDimPk As DimPk = GetDimPkForLoopMemberFilter(si, api, cubeName, loopMemberFilter, dataCellFilter) Dim membersToLoop As List(Of MemberInfo) = api.Members.GetMembersUsingFilter(loopDimPk, loopMemberFilter, Nothing) Dim rankedCells As New List(Of MemberAndCellValue) '------------------------------- ' Loop members and evaluate cell '------------------------------- For Each mi As MemberInfo In membersToLoop Dim mfb As MemberScriptBuilder = SubstituteLoopMember(loopMemberFilter, dataCellFilter, mi.Member.Name) Dim cell As DataCellInfoUsingMemberScript = BRApi.Finance.Data.GetDataCellUsingMemberScript( si, cubeName, mfb.GetMemberScript ) If cell IsNot Nothing AndAlso Not cell.DataCellEx.DataCell.CellStatus.Invalid AndAlso Not cell.DataCellEx.DataCell.CellStatus.IsNoData Then rankedCells.Add( New MemberAndCellValue( mi.Member, cell.DataCellEx.DataCell.CellAmount ) ) End If Next '------------------------------- ' Rank results '------------------------------- Dim result As New List(Of Member) Select Case rankType.ToUpperInvariant() Case "TOP" result = rankedCells. OrderByDescending(Function(x) x.CellValue). Take(rankCount). Select(Function(x) x.Member). ToList() Case "BOTTOM" result = rankedCells. OrderBy(Function(x) x.CellValue). Take(rankCount). Select(Function(x) x.Member). ToList() Case "MAX" Dim maxItem = rankedCells.OrderByDescending(Function(x) x.CellValue).FirstOrDefault() If maxItem IsNot Nothing Then result.Add(maxItem.Member) Case "MIN" Dim minItem = rankedCells.OrderBy(Function(x) x.CellValue).FirstOrDefault() If minItem IsNot Nothing Then result.Add(minItem.Member) End Select Return result Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function #End Region #Region "Helpers" Private Function GetDimPkForLoopMemberFilter( si As SessionInfo, api As FinanceRulesApi, cubeName As String, loopFilter As String, dataCellFilter As String ) As DimPk Dim cube As CubeInfo = api.Cubes.GetCubeInfo(cubeName) If cube Is Nothing Then Throw New Exception("Invalid cube: " & cubeName) Dim dimType As DimType = DimType.GetItem(loopFilter.Split("#"c)(0)) Dim mfb As New MemberScriptBuilder(dataCellFilter) Dim scenario As Member = api.Members.GetMember(DimTypeId.Scenario, mfb.Scenario) Dim scenarioType As ScenarioType = api.Scenario.GetScenarioType(scenario.MemberId) Dim dimId As Integer = cube.Cube.CubeDims.GetDimId(dimType.Id, scenarioType.Id) Return New DimPk(dimType.Id, dimId) End Function Private Function SubstituteLoopMember( loopFilter As String, dataCellFilter As String, memberName As String ) As MemberScriptBuilder Dim mfb As New MemberScriptBuilder(dataCellFilter) Dim dimType As DimType = DimType.GetItem(loopFilter.Split("#"c)(0)) Select Case dimType.Id Case DimType.Entity.Id : mfb.Entity = memberName Case DimType.Account.Id : mfb.Account = memberName Case DimType.UD1.Id : mfb.UD1 = memberName Case DimType.UD2.Id : mfb.UD2 = memberName Case DimType.UD3.Id : mfb.UD3 = memberName Case DimType.UD4.Id : mfb.UD4 = memberName Case DimType.UD5.Id : mfb.UD5 = memberName Case DimType.UD6.Id : mfb.UD6 = memberName Case DimType.UD7.Id : mfb.UD7 = memberName Case DimType.UD8.Id : mfb.UD8 = memberName End Select Return mfb End Function #End Region #Region "Helper Class" Private Class MemberAndCellValue Public Property Member As Member Public Property CellValue As Decimal Public Sub New(m As Member, v As Decimal) Member = m CellValue = v End Sub End Class #End Region End Class End Namespace After this changed My cubeview row member filter to this, however when cubeview runs , it runs for a bit and then page comes back completely blank : U5#Root.CustomMemberList( BRName = Ranked_list, MemberListName = Ranked, RankType = Top, RankCount = 10, LoopMemberFilter = U5#Total_Customer.Children, DataCellToRankMemberFilter = Cb#Financials :E#TotalEntity :C#USD :S#Actual :T#2026M1 :V#YTD :A#A5 :F#EndBal :O#Top :I#Top :U1#Organization :U2#Project :U3#None :U4#None :U6#None :U7#None :U8#None ) Does anyone know what i could be missing?usmali2 days agoNew Contributor III14Views0likes0CommentsPass through external parameters into dynamic cube view services
Hello, Is there a way to pass a combo box paramater into a cube view service? I think would be through the Service Factory. Since the cube view service runs when the cube view is executed and there is no call as XFBRs or Dashboard extenders, Is there a way to pass parameter values into the cube view service business rule?FW3 days agoNew Contributor II33Views0likes1CommentGenesis - Drill down > Open in New Tab
I am testing out drill functionalities in Genesis and found this "Open in New Tab" being grey out. I checked the cv in the page and am unable to find any config in this cv that relates to this. How do I make this option active for use? it will be really useful to see the drill results in another tab so that it can be view side by side with the original dashboard.JennyTan3 days agoNew Contributor III10Views0likes0CommentsGenesis - User action to refresh another cv basic
Hi, I am trying to create a genesis dashboard that will have a main cv (1105) which shows overview and then when user click on the cell, it will filter another cv (1106) (probably cv basic since it will have navlinks on most dimensions). In client dashboard, it requires the config of setting of user actions in 1105 cv component but I could not find this setting in content block CV Advanced. I can find it in CV adv embedded. I assume this is the correct content block to use. I managed to get this function to work when 1105 and 1106 are on different pages. This means the cv are both setup correctly with navigation links dynamically set up correct. But they cannot be in different pages in Genesis because that means user need to click on cell in 1105 in page 1 and then go to page 2 to see filter results in 1106. That is too much work for user. , Thus, I created a dashboard advanced layout and try to insert cv advanced embedded of 1105 in row 1 and then cv basic of 1106 in row 2. for user action in 1105, it is very difficult to select the right component to refresh. I chose the name that is closest to the genesis given name for the basic cv 1106. but this did not work. When I clicked on the cell in 1105 in row 1, nothing changes in 1106 that is in row 2. See below. What is wrong? The list of "component" in the dashboard selector is sooo long. I trial and error a few and some seem to be just a filter selection page in a content block created. Is there any documentation that will explain which one or type to choose? I checked the user documentation for cv advanced embedded and it does not mention much.SolvedJennyTan4 days agoNew Contributor III46Views0likes6Comments