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

Dynamic attribute member

$
0
0

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


Viewing all articles
Browse latest Browse all 2472

Trending Articles



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