Hi,
I have a requirement to set the attribute members dynamically at run time.
I am describing my requirement below -
I have a Date dimension, which specifies the business date.
I have an Instrument dimension, which has an attribute called Maturity Date.
Now, the requirement is to bucket the maturity date based on the business date.
For example,
If business date < maturity date then bucket = "Expired"
If buisness date = maturity date then bucket = "Active"
If datediff(maturitydate,businesdate) = 1w then bucket = "1W" and so on...
I tried the following -
Added a dummy attribute to the Instrument dimension called TenorBucket. In the DSV, I just return a space.
Then, using SCOPE statement, I tried to determine the value as follows -
SCOPE([Date].[Date]);
SCOPE([Instrument].[Maturity Date]);
SCOPE([Instrument].[Tenor Bucket]);
THIS =
IIF(DATEDIFF("d",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER)< 0 , "EXPIRED",
IIF(DATEDIFF("d",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 0 , "NOSTRO",
IIF(DATEDIFF("d",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 1 , "ON",
IIF(DATEDIFF("wk",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 1 , "1W",
IIF(DATEDIFF("wk",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 2 , "2W",
IIF(DATEDIFF("m",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 1 , "1M",
IIF(DATEDIFF("m",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 3 , "3M",
IIF(DATEDIFF("m",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 6 , "6M",
IIF(DATEDIFF("m",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 9 , "9M",
IIF(DATEDIFF("m",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 12 , "12M",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 2 , "2Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 3 , "3Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 5 , "5Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 10 , "10Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 15 , "15Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 20 , "20Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 25 , "25Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER) = 30 , "30Y",
IIF(DATEDIFF("yy",[Instrument].[Maturity Date].CURRENTMEMBER, [Date].[Date].CURRENTMEMBER)> 30 , ">30Y","NOT DEFINED")))))))))))))))))));
But this doesnt seem to work. What am I missing here?
Could you please advice if this is the best solution? If not, what other options are available.
Thanks.
Regards,
Girish