Improve Mondrian MDX usability with user defined functions
-
Upload
raimonds-simanovskis -
Category
Technology
-
view
300 -
download
1
Transcript of Improve Mondrian MDX usability with user defined functions
Properties
[Issue].CurrentMember.Properties('Created at')
#ERR: mondrian.olap.fun.MondrianEvaluationException: Property 'Created at' is not valid for member '[Issue].[ABC]'
Properties
CASE WHEN [Issue].CurrentMember.Level.Name = 'Issue' THEN [Issue].CurrentMember.Properties('Created at') END
Get properties
[Issue].CurrentMember.get('Created at')
UDF
[Issue].CurrentMember.getDate('Created at') [Issue].CurrentMember.getBoolean('Resolved') [Issue].CurrentMember.getNumber('Story Points') [Issue].CurrentMember.getString('Summary')
Debug all properties
[Issue].CurrentMember.AllProperties
KEY: JSD-1 Created at: 2013-10-03 01:01:35 Updated at: 2015-07-23 10:40:12 Resolved at: 2013-10-03 01:10:39 Due date: Parent issue key: Sub-task keys: Open sub-task keys: Story Points: Closed at: Sprint: (no sprint) Epic Link: Reporter name: [email protected] Assignee name: jpendleton ...
UDF
Current hierarchy[Time].CurrentMember [Time.Weekly].CurrentMember
CASE WHEN NOT [Time].CurrentMember IS [Time].DefaultMember THEN ... WHEN NOT [Time.Weekly].CurrentMember IS [Time.Weekly].DefaultMember THEN ... END
Current hierarchy[Time].CurrentHierarchy
[Time].CurrentMember or [Time.Weekly].CurrentMember
[Time].CurrentHierarchyMember
[Time] or [Time.Weekly]
UDF
Current Time period
CurrentDateMember([Time], '["Time"]\.[yyyy]\.["Q"q]\.[m]\.[d]')
[Time].[Day].CurrentDateMember UDF
Date parsing
DateParse('2016-11-12') DateParse('Nov 12 2016')
DateParse('today') DateParse('3 months ago') DateParse('10 days from now')
UDF
Time period start and end dates
[Time].CurrentHierarchyMember.StartDate [Time].CurrentHierarchyMember.NextStartDate
UDF
Date calculationsDateCompare DateAddDays
DateDiffDays DateDiffHours DateDiffMinutes
DateBetween
DateDiffWorkdays DateAddWorkdays
DateInPeriod DateAfterPeriodEnd DateBeforePeriodEnd AnyDateInPeriod
[Time].[Month].DateMember('3 months ago')
UDF
Cumulative totalsSum( [Time].CurrentHierarchyMember.Level.Members.Item(0):
[Time].CurrentHierarchyMember, expression )
Sum( PeriodsToDate([Time].[(All)], [Time].CurrentHierarchyMember), expression )
Cumulative totals
Sum( { Generate( Ascendants([Time].CurrentHierarchyMember), IIF([Time].CurrentHierarchyMember IS [Time].CurrentHierarchyMember.FirstSibling, {}, { [Time].CurrentHierarchyMember.FirstSibling: [Time].CurrentHierarchyMember.PrevMember } ) ), [Time].CurrentHierarchyMember }, expression )
Cumulative totals
Sum( { PreviousPeriods([Time].CurrentHierarchyMember), [Time].CurrentHierarchyMember }, expression )
UDF
Aggregated calculated members
[Project].[A and B] = Aggregate({[Project].[A], [Project].[B]})
UDF ChildrenSet([Project].[A and B]) = {[Project].[A], [Project].[B]}
Default contextDefaultContext( (measure, member_2) ) =
(measure, member_2, default_member_3, ..., default_member_N)
UDF
DefaultContext( ( [Measures].[Store Sales], [Customers].CurrentMember ) )