Quantcast
Channel: SQL Server Analysis Services Forum
Viewing all articles
Browse latest Browse all 2472

MDX taking long time to process

$
0
0

Hi,

I have a query that I need to calculate YTD by each fiscalPeriod of the FiscalYear. When I crossjoin with the fiscalPeriods , the query takes as long as 3 mins to execute which is unacceptable. The GLAccount dimension is large as there are many accounts and there are many calculated members. Can anyone suggest a solution,

WITH 

MEMBER [Measures].[Level] AS
[GL].[GL Account].CurrentMember.Properties('LEVEL_NUMBER')

MEMBER [Measures].[AccountGroup] AS
[GL].[GL Account].CurrentMember.Properties('GL Account')

MEMBER [Measures].[GLName] AS
[GL].[GL Account].CurrentMember.Properties('GL Name')

MEMBER [Measures].[UniqueName] AS
[GL].[GL Account].CurrentMember.Properties('MEMBER_UNIQUE_NAME')

MEMBER [Measures].[ParentUniqueName] AS
[GL].[GL Account].CurrentMember.Properties('PARENT_UNIQUE_NAME')

MEMBER [Measures].[Leaf] AS
iif(IsLeaf([GL].[GL Account].CurrentMember),"Leaf","NotLeaf")

MEMBER [Measures].[AccountLevel1] AS
Ancestor([GL].[GL Account].CurrentMember,
[Measures].[level]).Properties('MEMBER_NAME')


MEMBER [Measures].[AccountLevel2]AS
iif([Measures].[Level]= "1",null,
iif([Measures].[Level]= "2",
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'),
Ancestor([GL].[GL Account].CurrentMember,
StrToValue([Measures].[Level])-2).Properties('MEMBER_NAME')))

MEMBER [Measures].[AccountLevel3]AS
iif([Measures].[Level]= "1" or [Measures].[Level]= "2",null,
iif([Measures].[Level]= "3",
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'),
Ancestor([GL].[GL Account].CurrentMember,
StrToValue([Measures].[Level])-3).Properties('MEMBER_NAME')))

MEMBER [Measures].[AccountLevel4]AS
iif([Measures].[Level]= "1" or [Measures].[Level]= "2"
or [Measures].[Level]= "3",null,
iif([Measures].[Level]= "4",
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'),
Ancestor([GL].[GL Account].CurrentMember,
StrToValue([Measures].[Level])-4).Properties('MEMBER_NAME')))

MEMBER [Measures].[AccountLevel5]AS
iif([Measures].[Level]= "1" or [Measures].[Level]= "2"
or [Measures].[Level]= "3" or [Measures].[Level]= "4",null,
iif([Measures].[Level]= "5",
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'),
Ancestor([GL].[GL Account].CurrentMember,
StrToValue([Measures].[Level])-5).Properties('MEMBER_NAME')))

MEMBER [Measures].[AccountLevel6]AS
iif([Measures].[Level]= "1" or [Measures].[Level]= "2"
or [Measures].[Level]= "3" or [Measures].[Level]= "4" or [Measures].[Level]= "5",null,
iif([Measures].[Level]= "6",
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'),
Ancestor([GL].[GL Account].CurrentMember,
StrToValue([Measures].[Level])-6).Properties('MEMBER_NAME')))

MEMBER [Measures].[AccountLevel7]AS
iif([Measures].[Level]= "1" or [Measures].[Level]= "2"
or [Measures].[Level]= "3" or [Measures].[Level]= "4" or [Measures].[Level]= "5"
or [Measures].[Level]= "6",null,
[GL].[GL Account].CurrentMember.Properties('MEMBER_NAME'))

MEMBER [Measures].[PeriodActualDollars]AS
iif([Measures].[AccountLevel2] = "Revenue",[Measures].[Actual Amt]* -1,[Measures].[Actual Amt])

MEMBER [Measures].[PeriodBudgetDollars]AS
iif([Measures].[AccountLevel2] = "Revenue",[Measures].[Budget Amt]* -1,[Measures].[Budget Amt])


MEMBER [Measures].[PeriodActualDollarsYTD] AS
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
iif([Measures].[AccountLevel2] = "Revenue",[Measures].[Actual Amt]* -1,
[Measures].[Actual Amt]))


MEMBER [Measures].[PeriodBudgetDollarsYTD] AS
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
iif([Measures].[AccountLevel2] = "Revenue",[Measures].[Budget Amt]* -1,
[Measures].[Budget Amt]))


MEMBER [Measures].[PeriodDollarVariance]
AS ([Measures].[PeriodActualDollars] - [Measures].[PeriodBudgetDollars]) 

MEMBER [Measures].[VarianceDollarsYTD]
AS ([Measures].[PeriodActualDollarsYTD]-[Measures].[PeriodBudgetDollarsYTD])

MEMBER [Measures].[AnnualBudget]
AS SUM( [Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13].Parent,
iif([Measures].[AccountLevel2] = "Revenue",[Measures].[Budget Amt]* -1,
[Measures].[Budget Amt]))

MEMBER [Measures].[PeriodActualRev] AS [Measures].[Act Revenue]* -1

MEMBER [Measures].[PeriodBudgetRev] AS [Measures].[Bud Revenue]* -1

MEMBER [Measures].[PeriodActualExp] AS [Measures].[Act Expenses]

MEMBER [Measures].[PeriodBudgetExp] AS [Measures].[Bud Expenses]

MEMBER [Measures].[PeriodActualRevYTD] AS 
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
[Measures].[Act Revenue]* -1)

MEMBER [Measures].[PeriodBudgetRevYTD] AS 
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
[Measures].[Bud Revenue]* -1)

MEMBER [Measures].[PeriodActualExpYTD] AS 
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
[Measures].[Act Expenses])

MEMBER [Measures].[PeriodBudgetExpYTD] AS 
SUM(PeriodsToDate([Date].[Fiscal Year].[FiscalYear],
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),
[Measures].[Bud Expenses])

MEMBER [Measures].[PeriodExcessDefRev/ExpActuals] AS
[Measures].[PeriodActualRev] - [Measures].[PeriodActualExp]

MEMBER [Measures].[PeriodExcessDefRev/ExpBudget] AS
[Measures].[PeriodBudgetRev] - [Measures].[PeriodBudgetExp]

MEMBER [Measures].[PeriodExcessDefRev/ExpVariance] AS
[Measures].[PeriodExcessDefRev/ExpActuals] - [Measures].[PeriodExcessDefRev/ExpBudget]

MEMBER [Measures].[YTDExcessDefRev/ExpActuals] AS
[Measures].[PeriodActualRevYTD] -  [Measures].[PeriodActualExpYTD]

MEMBER [Measures].[YTDExcessDefRev/ExpBudget] AS
[Measures].[PeriodBudgetRevYTD] -  [Measures].[PeriodBudgetExpYTD]

MEMBER [Measures].[YTDExcessDefRev/ExpVariance] AS
[Measures].[YTDExcessDefRev/ExpActuals] -  [Measures].[YTDExcessDefRev/ExpBudget]

MEMBER [Measures].[ExcessDefRev/ExpAnnualBudget] AS
SUM([Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13].Parent,
[Measures].[Bud Revenue] * -1) - SUM([Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13].Parent,
[Measures].[Bud Expenses])


MEMBER [Measures].[LastYearPeriodActualDollars] AS
(ParallelPeriod([Date].[Fiscal Year].[FiscalYear],1,
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]),[Measures].[Actual Amt])

MEMBER [Measures].[LastYearActualDollarsYTD] AS
SUM(PeriodsTodate([Date].[Fiscal Year].[FiscalYear],
ParallelPeriod([Date].[Fiscal Year].[FiscalYear],1,
[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13])),[Measures].[Actual Amt])


MEMBER [Measures].[FicalYear]
AS [Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13].Parent.Properties('MEMBER_CAPTION')

MEMBER  [Measures].[CostCentre] AS [Entity - CC].[Entity - CC].CurrentMember.MemberValue


SELECT  {
--[Measures].[CostCentre],[Measures].[FicalYear],
 [Measures].[Level],
[Measures].[AccountGroup],
[Measures].[GLName],
[Measures].[UniqueName] ,
[Measures].[ParentUniqueName],
[Measures].[Leaf],
[Measures].[AccountLevel1],
[Measures].[AccountLevel2],
[Measures].[AccountLevel3],
[Measures].[AccountLevel4],
[Measures].[AccountLevel5],
[Measures].[AccountLevel6],
[Measures].[AccountLevel7],
[Measures].[LastYearPeriodActualDollars],
[Measures].[PeriodActualDollars],
[Measures].[PeriodBudgetDollars],
[Measures].[PeriodDollarVariance],
[Measures].[PeriodActualDollarsYTD]
[Measures].[PeriodBudgetDollarsYTD],
[Measures].[VarianceDollarsYTD],
[Measures].[LastYearActualDollarsYTD],
[Measures].[AnnualBudget],
[Measures].[PeriodActualRev],
[Measures].[PeriodBudgetRev],
[Measures].[PeriodActualExp],
[Measures].[PeriodBudgetExp],
[Measures].[PeriodExcessDefRev/ExpActuals],
[Measures].[PeriodExcessDefRev/ExpBudget] ,
[Measures].[PeriodExcessDefRev/ExpVariance],
[Measures].[YTDExcessDefRev/ExpActuals],
[Measures].[YTDExcessDefRev/ExpBudget],
[Measures].[YTDExcessDefRev/ExpVariance],
[Measures].[ExcessDefRev/ExpAnnualBudget]*/

} ON COLUMNS,
{
NONEMPTY(CROSSJOIN({EXCEPT([GL].[GL Account].Members,{[GL].[GL Account].[All],
[GL].[GL Account].[All].UNKNOWNMEMBER})},
{[Entity - CC].[Entity - CC].&[337]},
{[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13].Parent.Children}))
 } ON ROWS
FROM [FinanceMart]
--WHERE ([Entity - CC].[Entity - CC].&[337],
--[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13])

--[Date].[Fiscal Year].[FiscalPeriod].&[2011/12]&[2011/12-Q4]&[2011/12-P13]


Viewing all articles
Browse latest Browse all 2472


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>