skip to main | skip to sidebar
Showing posts with label microsoft. Show all posts
Showing posts with label microsoft. Show all posts

Friday, March 30, 2012

KPI that compares the growth over years

Hi there,
I'm new to SSAS and MDX. Creating my first dimensions and cubes went fairly fine. But now I hang on KPI.
I'm trying to create a KPI which shows the growth of bookings comparing one year to the previous year.
I want to set a fiterexpression for the time-dimension (e.g. YearString equals 1998). If a filter is set, it should show the bookings for that year ([Measures].[Bookings]) as value and the bookings of the previous year as goal.
My problem is, that I cannot access the selected YearString, to get the bookings of the previous year. I tried the function parallelPeriod() and also a self-created Calculation, but it seems that [dimension time].[hierachy].CurrentMember is always [dimension time].[hierachy].[(All)].

My data structure is as followed:

Fact-table: FactBookings
SeasonID (FK)
YearID (FK)
AgencyID (FK)
CountryID (FK)
RegionID (FK)
IncomeID (FK)
AgeID (FK)
AgencyID (FK)
Bookings

Dimensions:
Income, Age, Agency:
[dimensionname]ID
[dimensionname]String

Dimension geography (having a hierarchy):
RegionID
CountryID
RegionString
CountryString
primary key: RegionID+CountryID

Dimension time (having a hierarchy):
YearID
SeasonID
YearString
Season String
primary key: YearID+SeasonID

Is there a way to access the filterexpressions for a KPI, or does anyone has an idea, how a calculation might has to be, which shows the value of the previous year compared to the actual year?

It would be very nice, if anybody could give me an idea how to create such a KPI.

Regards,
Maik.

First, you need to create the calculated member for the PreviousYear. You can use either Time Intelligence Wizard, you use formulas from the following blog post: http://www.sqljunkies.com/WebLog/mosha/archive/2006/10/25/time_calculations_parallelperiod.aspx

After that, you can enter the expression for KPI as (Time.PreviousYear, Measures.Booking) and it should work fine.

HTH,

Mosha (http://www.mosha.com/msolap)

|||Thank for your answer.
I've tried it for hours.
Now I have a dimension [Time Calculations]
with a calculated member:
CREATE [Time Calculations].[Prior Year] =
(ParallelPeriod([Dimension Time].[YearString - SeasonString].[YearString]), [Time Calculations].[Current Period]);

But for my KPI something like
([Time Calculations].[Prior Year], [Measures].[Bookings])
as the goal-expression wasn't working.

Finally, after turning IsAggregatable to false for YearString in dimension time, I was able to select a year at the KPI-Browser and the goal-expression showed up the measure-value of the previous year. Yeah! .
But I'm still not completely happy. Because of turning IsAggregatable to false, the measure in the Cube-Browser is fixed either to the first year or to one year specified as a filter.
At this point I'm unable to summarise/aggregate the bookings over all time or more than one year.

Any idea for that?

BTW: nice blog Mosha .|||You shouldn't have had to set IsAggregatable to False on Year attribute. Just remember - when it is aggregatable - you will have All level, so the current member inside your Time dimension will be All Years, so you will need to manually position to specific year in order to see a previous year.

Posted by depredationnmqp at 2:51 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: compares, create, creating, cubes, database, dimensions, fairly, growth, hang, kpi, mdx, microsoft, mysql, oracle, server, sql, ssas

KPI measure and dimension

Hi Folks,

i have big problem. my measure is call "VALUE".

and the Dimension "TYPE" (TYPE a,b)

The kpi should compare VALUE Type a and TYPE b.

How it works?

Can everyone help me. THX Greg

It depends on what you mean by comparing the two values, but here's an example of an MDX expression (in a calculated measure, but you could easily use it inside a KPI) that compares two values - Internet Sales Amount for Fridays and Saturdays - on the same dimension:

Code Snippet

with member measures.test as

iif( ([Measures].[Internet Sales Amount], [Date].[Day Name].&[6])

>

([Measures].[Internet Sales Amount], [Date].[Day Name].&[7])

, "Friday is greater", "Saturday is greater")

select [Date].[Calendar Year].members on 0,

[Product].[Category].members on 1

from [Adventure Works]

where(measures.test)

HTH,

Chris

|||

Hi Greg,

Edit your cube in BIDS and then go to KPI's tab.

Create a new KPI and complete the form with MDX script you need for Value, Goal, Status and Trend.

There you can also set Status indicator e Trend indicator (traffic light, gauge, standard arrow and so on).

Here you can find some instructions:

http://msdn2.microsoft.com/en-us/library/ms181183.aspx


|||

thx

this code help me

([Measures].[VALUE], ( [DIM].[NAME].[MEMBER] ))

Posted by depredationnmqp at 2:49 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: call, compare, database, dimension, folks, kpi, measure, microsoft, mysql, oracle, quottypequot, quotvaluequot, server, sql, type, value

KPI List Web Part in MOSS 2007 - How Do I Display an 'As of Date' For Indicators?

I have created an SQL 2005 SSAS cube with many different KPIs defined. In MOSS 2007 (SP2) I have created a site to display these various KPIs in several KPI Lists. Some of the indicators in the underlying cube are updated daily, others weekly, others quarterly, etc.

What are some ways to display to the user what date or time slice each specific indicator is "as of"?

Thanks in advance for any help you can provide.

-Steve

Hello. I do not think that there is a property in SSAS2005 that you can use for this.

The easy way is to create separate KPI:s depending on the time slice /or update window and simply name the KPI:s in SSAS2005 in this way.

I can think of ActSalesBudSalesMonth and ActSalesBudSalesYearToDate. I usually use shorter names.

Else I recommend you to find a property/information field in MOSS 2007

HTH

Thomas Ivarsson

Posted by depredationnmqp at 2:49 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: created, cube, database, date, defined, display, indicators, kpi, kpis, microsoft, moss, mysql, oracle, server, sp2, sql, ssas, various, web

KPI List Web Part in MOSS 2007 - How Do I Display an 'As of Date' For Indicators?

I have created an SQL 2005 SSAS cube with many different KPIs defined. In MOSS 2007 (SP2) I have created a site to display these various KPIs in several KPI Lists. Some of the indicators in the underlying cube are updated daily, others weekly, others quarterly, etc.

What are some ways to display to the user what date or time slice each specific indicator is "as of"?

Thanks in advance for any help you can provide.

-Steve

Hello. I do not think that there is a property in SSAS2005 that you can use for this.

The easy way is to create separate KPI:s depending on the time slice /or update window and simply name the KPI:s in SSAS2005 in this way.

I can think of ActSalesBudSalesMonth and ActSalesBudSalesYearToDate. I usually use shorter names.

Else I recommend you to find a property/information field in MOSS 2007

HTH

Thomas Ivarsson

Posted by depredationnmqp at 2:48 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: created, cube, database, date, defined, display, indicators, kpi, kpis, microsoft, moss, mysql, oracle, server, sp2, sql, ssas, various, web

KPI in SQL 2005

Hello,
I search informations or a tutoriel to carry out a KPI (Key Performance
Indicator) in Analysis Services 2005.
Can you help me.
Thanks!!
NicoHi
Look in SQL 2005 Beta 2 books online. Asking this question in the betagroups
for 2005 will also help.
"pralnico" wrote:

> Hello,
> I search informations or a tutoriel to carry out a KPI (Key Performance
> Indicator) in Analysis Services 2005.
> Can you help me.
> Thanks!!
> Nicosql
Posted by depredationnmqp at 2:48 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: analysis, carry, database, informations, key, kpi, microsoft, mysql, oracle, performanceindicator, search, server, services, sql, tutoriel

KPI in SQL 2005

Hello,
I search informations or a tutoriel to carry out a KPI (Key Performance
Indicator) in Analysis Services 2005.
Can you help me.
Thanks!!
Nico
Hi
Look in SQL 2005 Beta 2 books online. Asking this question in the betagroups
for 2005 will also help.
"pralnico" wrote:

> Hello,
> I search informations or a tutoriel to carry out a KPI (Key Performance
> Indicator) in Analysis Services 2005.
> Can you help me.
> Thanks!!
> Nico
Posted by depredationnmqp at 2:47 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: analysis, carry, database, informations, key, kpi, microsoft, mysql, oracle, performanceindicator, search, server, services, sql, tutoriel

KPI in SQL 2005

Hello,
I search informations or a tutoriel to carry out a KPI (Key Performance
Indicator) in Analysis Services 2005.
Can you help me.
Thanks!!
NicoHi
Look in SQL 2005 Beta 2 books online. Asking this question in the betagroups
for 2005 will also help.
"pralnico" wrote:
> Hello,
> I search informations or a tutoriel to carry out a KPI (Key Performance
> Indicator) in Analysis Services 2005.
> Can you help me.
> Thanks!!
> Nico
Posted by depredationnmqp at 2:47 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: analysis, carry, database, indicator, informations, key, kpi, microsoft, mysql, oracle, performance, search, server, services, sql, tutoriel

KPI in Reporting Service

Hi All,

How to integrated the KPI from SSAS 2005 to SSRS 2005 ?

So the value and indicator from KPI can be retrieve/view by SSRS 2005...

Any suggestion will be very helpful.

THX.

Hi

I have the exact same problem ...

But when deploying scorecards from Business Scorecard Manager to Reporting Services it is possible to get reporting services to show images as well as values. However when you look at the report in Visual Studio / Report Layout there is no give-away as to how the image is generated ...

A home-made syntax may be a solution as the KPI-value can be seen to be (e.g.) "=Fields!Advertising_comp_to_Turnover_Goal.Value". Exchange of "Value" with "Indicator" does not work however.

Any other suggestions?

Chr.

|||

I found a description of how to make it work ... not for me however!!

Chr.

http://www.sqljunkies.com/WebLog/sqlbi/archive/category/325.aspx

Report Builder Model with UDM

postedTuesday, November 15, 2005 6:13 AM bymarcorusso

Today I lost a lot of time digging on this problem so a I hope post about this will save time of other developers!

I wanted to import the UDM into a model for Report Builder. You have to do these steps:

go intoSQLServer Management Studio
Posted by depredationnmqp at 2:46 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: database, indicator, integrated, kpi, microsoft, mysql, oracle, reporting, retrieve, server, service, sql, ssas, ssrs, value, view

KPI in Reporting Service

How to integrated the KPIs from SSAS 2005 to SSRS 2005 ?

Moving this thread to the reporting services forum where someone should be able to help
Posted by depredationnmqp at 2:45 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: database, integrated, kpi, kpis, microsoft, mysql, oracle, reporting, server, service, sql, ssas, ssrs

KPI Help Required-I want a revenue report with average Daily Revenue

Hi All,

What I am trying to do is create a average daily revenue KPI using vs.net 2005.

The necessary fields from my fact table are Revenue and the datetimeID, there will be multiple entries perday.

I would like my KPI to check if we are hitting a $10,000 daily average in revenue. But I need to know how many Distinct Days are being calcuated. If I were using regular SQL I could use:

COUNT( SELECT DISTINCT dayNumberOfMonth,monthNumberOfYear,YearNumber)
or
COUNT(SELECT DISTINCT LEFT(datetimeAlternateKey,10))

My Current Datetime Table contains:
datetimeID
fulldatetime
monthNumberOfYear
calendarYear
dayNumberOfMonth

Any references out there on how I can go about doing this? More of less this is what I want to do:

Value Expression:
[Measures].[Revenue] * (Distinct Number Of days)

Goal Expression:
10,000*[Distinct Number of Days)

Any suggestions of books to look for or good web resources would be much appreciated.

Thanks all

What period would you be calculating this over and have you considered how you want partial periods treated?

Is the KPI meant to be "adaptive"? So if the user selects a month, it calculates the average for that month and if they select a year it calculates the average for the year?

Assuming that your Time dimension has a calendar hierarchy and a Day attribute, you could do something like the following:

Count(descendants([Time].[Calendar].CurrentMember, [Time].[Calendar].[Day]))

If there is $30,000 revenue recorded on day 1 of the month, does that mean that the KPI has been met for the whole month?

|||Thanks for the reply Darren,

When you refer to [Time].[Calendar].[Day], does [Day] represent an ongoing incrementing day count from the start of dates kept? i.e. Not day or month, nor day of year?

The KPI is meant to be adaptive, at a later point I will go for fixed KPIS (e.g. yesterday).

If for example our Goal Value was $1000 a day, and we did $30,000 in day. Our KPI would be met for any 30 day span that held that date. So right now my datetime table looks like this:

Do you have any suggestions on books I buy for Analysis Services / MDX?

Thanks
|||

winnipeg wrote:

When you refer to [Time].[Calendar].[Day], does [Day] represent an ongoing incrementing day count from the start of dates kept? i.e. Not day or month, nor day of year?

No, the first parameter to the descendants function picks up the current context of the time.calendar hierarchy. If the current context of time.calendar is a month member, the descendants will be all the days in the month. If it is a year member, it will be all the days in the year

winnipeg wrote:


Do you have any suggestions on books I buy for Analysis Services / MDX?

MDX Solutions: With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase by George Spofford, Sivakumar Harinath, Christopher Webb, and Dylan Hai Huang - is the best one I know for MDX

Applied Microsoft Analysis Services 2005: And Microsoft Business Intelligence Platform by Teo Lachev - is a good alround SSAS book

sql
Posted by depredationnmqp at 2:45 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: average, create, database, fact, fields, kpi, microsoft, mysql, necessary, net, oracle, report, required-i, revenue, server, sql, table

KPI graphic in RS2005

Hi,
Does anybody know how to show a SS2005 KPI image in reporting services?
Thanks.You can't just show the image that you see in SSAS because it is not
streamed back. Instead, you need to load you image based on the KPI value.
The image Value property can be controlled programatically. I have a sample
project (http://prologika.com/CS/blogs/blog/archive/2005/10/05/687.aspx)
that demonstrates how you can manipulate the image source programically. It
doesn't show KPI values, but it should be able to steer you in the right
direction.
--
HTH,
---
Teo Lachev, MVP, MCSD, MCT
"Microsoft Reporting Services in Action"
"Applied Microsoft Analysis Services 2005"
Home page and blog: http://www.prologika.com/
---
"Fernando Marçal" <FernandoMaral@.discussions.microsoft.com> wrote in message
news:14EC6E85-C505-443E-B2D9-5FF923133B4C@.microsoft.com...
> Hi,
> Does anybody know how to show a SS2005 KPI image in reporting services?
> Thanks.|||Hi Teo,
Will look into it. Thanks.
"Teo Lachev [MVP]" wrote:
> You can't just show the image that you see in SSAS because it is not
> streamed back. Instead, you need to load you image based on the KPI value.
> The image Value property can be controlled programatically. I have a sample
> project (http://prologika.com/CS/blogs/blog/archive/2005/10/05/687.aspx)
> that demonstrates how you can manipulate the image source programically. It
> doesn't show KPI values, but it should be able to steer you in the right
> direction.
> --
> HTH,
> ---
> Teo Lachev, MVP, MCSD, MCT
> "Microsoft Reporting Services in Action"
> "Applied Microsoft Analysis Services 2005"
> Home page and blog: http://www.prologika.com/
> ---
> "Fernando Marçal" <FernandoMaral@.discussions.microsoft.com> wrote in message
> news:14EC6E85-C505-443E-B2D9-5FF923133B4C@.microsoft.com...
> > Hi,
> >
> > Does anybody know how to show a SS2005 KPI image in reporting services?
> >
> > Thanks.
>
>
Posted by depredationnmqp at 2:44 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: database, graphic, image, kpi, microsoft, mysql, oracle, reporting, rs2005, server, services, sql, ss2005

KPI Goals from dimension attributes.

Hi,

Currently I'm busy creating a Cube and I'd like to use dimension attributes as goals in my KPI's. I'm creating a cube that has facts that are related to agreements. In the agreements dimension I've stored the goals that are defind within the actual agreements with the customers. So when creating a KPI I'd like to use those goals from the dimension.

I've tried something like this: [Agreement].[Norm Percentage].CURRENTMEMBER as my Goal Expression, but it's not working as expected.

Really hope that one of you can explain me how to do it.

Thanks in advance,

The .CurrentMember function will return a member, what you should be looking at is using the .MemberValue function

eg.

[Agreement].[Norm Percentage].MemberValue

The thing you will need to think about is what you what to see when multiple or All "Norm Percentages" are in context. I don't know enough about your data to know if an average would make sense, but If it did, something like the following may be a more robust expression.

AVG(EXISTING [Agreement].[Norm Percentage].[Norm Percentage], [Aggrement].[Norm Percentage].MemberValue)

|||

Darren thanks for your reply.

I've tested you're solution and it is looking better then what I got the first time. But unfortunately the averages are not what I expected.

I'll look into it today. So I'll post a new reply at the end the day with my results.

Posted by depredationnmqp at 2:43 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: attributes, busy, creating, cube, database, dimension, facts, goals, kpi, microsoft, mysql, oracle, server, sql

KPI Goals from dimension attributes.

Hi,

Currently I'm busy creating a Cube and I'd like to use dimension attributes as goals in my KPI's. I'm creating a cube that has facts that are related to agreements. In the agreements dimension I've stored the goals that are defind within the actual agreements with the customers. So when creating a KPI I'd like to use those goals from the dimension.

I've tried something like this: [Agreement].[Norm Percentage].CURRENTMEMBER as my Goal Expression, but it's not working as expected.

Really hope that one of you can explain me how to do it.

Thanks in advance,

The .CurrentMember function will return a member, what you should be looking at is using the .MemberValue function

eg.

[Agreement].[Norm Percentage].MemberValue

The thing you will need to think about is what you what to see when multiple or All "Norm Percentages" are in context. I don't know enough about your data to know if an average would make sense, but If it did, something like the following may be a more robust expression.

AVG(EXISTING [Agreement].[Norm Percentage].[Norm Percentage], [Aggrement].[Norm Percentage].MemberValue)

|||

Darren thanks for your reply.

I've tested you're solution and it is looking better then what I got the first time. But unfortunately the averages are not what I expected.

I'll look into it today. So I'll post a new reply at the end the day with my results.

Posted by depredationnmqp at 2:43 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: attributes, busy, creating, cube, database, dimension, facts, goals, kpi, microsoft, mysql, oracle, server, sql

KPI Goal Value doesn't change after filtering the date

Hello everyone,

i'm new to Analysis Services and trying to build a Data Warehouse especially for using KPIs in it. Watching the famous AdventureWorksDW example i try to use the MDX Statements likewise. I want to use a KPI just like the first in the list "Growth in Customer Base". But when using a MDX Statement for the Goal Expression like this:

Case
When [Date].[Fiscal].CurrentMember.Level Is [Date].[Fiscal].[Fiscal Year]
Then .30
When [Date].[Fiscal].CurrentMember.Level Is [Date].[Fiscal].[Fiscal Semester]
Then .15
When [Date].[Fiscal].CurrentMember.Level Is [Date].[Fiscal].[Fiscal Quarter]
Then .075
When [Date].[Fiscal].CurrentMember.Level Is [Date].[Fiscal].[Month]
Then .025
Else "NA"
End

after filtering the resultset by the "Date" Dimension -> "Fiscal" Hierarchy -> equals "FY 2004" in the KPI-Browser it just shows "NA" like it does in the AdventureWorksDW, too. Is there a way to use a similar example in AdventureWorksDW that changes the goal dependend on the Filter like my description? All other KPI examples in AdventureWorksDW the goals depend on other values already contained in the DB and not dependend on the Filter Expression used.

Unfortunately, I think that the KPI browser may be misleading because, "filtering the resultset by the "Date" Dimension -> "Fiscal" Hierarchy -> equals "FY 2004" in the KPI-Browser" is probably generating a subselect, rather than applying the condition in the where clause. Try an MDX query directly, like:

>>

select {KPIGoal("Growth in Customer Base")} on 0

from [Adventure Works]

where [Date].[Fiscal].[Fiscal Year].&[2004]

-

Growth in Customer Base Goal
0.3

>>

|||Hi Deepak,

thank's a lot for your help! That works perfectly. But my goal is to visualize the KPIs with the Business Scorecard Manager and hoped I just have to give him the cube and he visualizes it. Does the Business Scorecard Manager filter with subselects or in a where clause?

I hope you or someone else can help me out with this second point and I will be happy ...

Claudio|||

Hi Claudio,

My guess is that BSM 2005 filters with where clause, since I think that it works with AS 2000 cube as well. But you could find out for sure by tracing the MDX query from BSM to AS 2005, using SQL Profiler.

Posted by depredationnmqp at 2:42 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: analysis, build, database, date, especially, famous, filtering, goal, kpi, kpis, microsoft, mysql, oracle, server, services, sql, value, warehouse, watching

KPI for each member of a dimension

All the examples I have seen have set KPI's against all the data in the cube. Is it possible to do this for each member of a dimension?

Specifically, I have an application which carries out calculations for a series of 'what if' scenarios. For each Scenario I have a warning level and a trigger level. These levels are held as attrbutes for the Scenario dimension.

It seems to me that I could create a report that calculates the values for each dimension via an MDX query, but I think this should be a calculated member somewhere but I'm at a loss as to the best way to do this.

Does anyone have any ideas as to how best to approach this?


Looking into this further I think I can use the cube calculation tab to add a calculated member to the dimension. Am trying this now... watch this space...

sql
Posted by depredationnmqp at 2:42 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: cube, database, dimension, dimensionspecifically, examples, kpi, member, microsoft, mysql, oracle, server, sql

KPI design and implementation

Hi all,

I'm fairly new to analysis services and am encountering some difficulties when it comes to designing KPI's. I want these to be designed so that they may be displayed in a KPI list on Sharepoint 2007 server.

The basic premise for the simple data warehouse pilot was to present usage data for a number of customer sites split up but time etc. These sites also have a potential usage value attached to them. I'd like to implement a KPI that shows the current progress in the current month for there usage against the site's potential. A cylinder or thermometer type diagram i believe would work well to show the progress as a percentage value.

This may be to vague a description and i'm willing to elaborate further if necessary but could someone please help me understand how best to approach this?

Many thanks in advance,

Grant

Hello. First, if you have installed the SQL Server 2005 samples you will find an SSAS2005(Analysis Services) project, Adventure Works, with a lot of KPI:s in the cube editor. This is to get to know the MDX syntax for KPI:s.

To get the KPI:s to Sharepoint is not done directly. You will need a separate solution for this.

You can query and display KPI:s in Reporting Services 2005 but you will only see the values not the graphic/icons.

One option is to use Excel 2007 and construct a KPI spreadsheet report and publish it in Sharepoint. Another option is to use ProClarity Analytics platform and use their webparts for Sharepoint. Both these alternatives are not free of charge.

A third option is Microsofts Business Scorecard Server. It uses Sharepoint directly. This product and ProClarity will be included in the new Performance Point Server that will be on the market this summer.

HTH

Thomas Ivarsson

Posted by depredationnmqp at 2:41 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: analysis, database, design, designed, designing, difficulties, encountering, fairly, implementation, kpi, microsoft, mysql, oracle, server, services, sql

KPI Annotations property field

If you look through the the properties collection of a KPI in ADOMD, the last item is called "Annotations". Does anyone know how to set this property through BIDS?

We need to pass additional data to our client app for each KPI in order to make up for incomplete functionality and bugs in Analysis Services in regards to formatting, and we would like to use this field if possible. "Annotations" is not the same as "Description" by the way. We may have to prepend XML data to the description field if there is not an alternative.

Any help would be appreciated.

Thanks,

Terry

and bugs in Analysis Services in regards to formatting

Can you please provide more details about bugs in formatting of KPIs ? I beleive any formatting issue can be solved without going to annotations.

|||

Terry and I work together and I'm replying on his behalf...

The issue we have happens when the KPI value and goal are evaluated in the status or trend expression. For example, if both are formatted (using the Format function) as percent, the KPI status expression shows an error message of "type mismatch for the / operator." We've been getting around this by formatting them as "standard" in the KPI and formatting them in the client app by checking for values that don't start with a "$".

Recently, we came across another issue where the value returned was null. The KPI expression was checking for divide by zero errors but not for null numerators. The status expression blew up with the same error, presumably because the goal was still a formatted value. Removing the format from the Value and Goal or returning a formatted 0 instead of a null both resolve the problem.

It seems that the KPI framework is very sensitive to how values are formatted. This is why we've been thinking about moving the formatting to the client side by passing a format string in Current Time Member or by using Annotations. It seems it would be better to format the end result instead of worrying about how AS handles formats in Status and Trend. Following all the examples we've seen, we're using KPIValue and KPIGoal in the status expression instead of repeating the Value calculation multiple times.

Any advice would be greatly appreciated.

|||

Can you please explain a little more about "if both are formatted (using the Format function)". Do you mean that you use VBA's Format function in the expression of KPI ? If so - this is really bad practice, it has all kinds of problems associated with it. Why wouldn't you want to rely on standard MDX formatting capabilities - I cannot think of scenario where MDX won't be able to do what Format function can do.

It would be best if you will provide some examples of KPI expressions that you are using, and expected formatting.

Thanks,

Mosha (http://www.mosha.com/msolap)

|||

Yes, we are using VBA's Format in KPIs. We're using Format_String in calculations. It may be bad practice, but AdventureWorks and all of the books we have show examples of using it for KPIs. It would be great if there's a better way to do this. Here's sample code for one of the KPIs:

VALUE:

Case
When (Not IsEmpty( ([Measures].[Average Customers]) ))
And (Not IsEmpty( [Measures].[Annualized Contribution]))
Then Format(
([Measures].[Annualized Contribution])
/
([Measures].[Average Customers])
,"Currency")
Else
Format(0,"Currency")
End

If the Status is Null and the Goal is a formatted value this would have caused the type mismatch error. This is why we're returning a formatted 0 instead.

GOAL:

Format(300,"Currency") //Temporary goal

STATUS:

Case
When IsEmpty( KpiValue( "Average Customer Contribution" ) )
Then Null
When KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) >= .90
Then 1
When KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) < .85
And
KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) >= .80
Then 0
Else -1
End

TREND:

Case
When [Date].[Calendar Year Hierarchy].CURRENTMEMBER.LEVEL Is
[Date].[Calendar Year Hierarchy].[(All)]
Then 0
When
VBA!ABS(
KpiValue( "Average Customer Contribution" ) -
(KpiValue ( "Average Customer Contribution" ),
[Date].[Month].CurrentMember.PrevMember)
/
(KpiValue ( "Average Customer Contribution" ),
[Date].[Month].CurrentMember.PrevMember)
) <=.05
Then 0
When
KpiValue( "Average Customer Contribution" ) -
(KpiValue ( "Average Customer Contribution" ),[Date].[Month].CurrentMember.PrevMember)
/
(KpiValue ( "Average Customer Contribution" ),[Date].[Month].CurrentMember.PrevMember)
>.05
Then 1
Else -1
End

We're currently developing on SP2 because of the LastNonEmpty performance problems in SP1. In several cases, our KPIs are just a calculated measures that have Format_String="Percent". To use them in the KPI and have the resulting KPI formatted as a percent, we have to multiple the calculated measure by 100 before the second format is applied. Analysis Services doesn't seem to know the underlying measure's format.

Thanks for your help.

|||

It may be bad practice, but AdventureWorks and all of the books we have show examples of using it for KPIs.

I went over all the KPIs in AdventureWorks cube, and I didn't see any one using Format function. Could you please point out which KPI uses it, and I will file a bug for it to be fixed in the next release of the sample. Or perhaps it is already fixed and we are using different versions of AdventureWorks ? I also would like to know which book shows such examples. You can contact me by mail if you don't want this to be published in the forum.

Now to your scenario. It seems like you want 'Currency' to be formatting of KPI's Value property. Using VBA!Format in the Value expression makes it return a string. Therefore all other properties which try to do arithmetic operations with KPIValue operate with strings instead. It is almost a miracle, but AS actually does support arithmetics on strings to some degree by converting them to numbers when possible. But this is a slippery road. For example, you will find that "300" - "100" = 200, but "300" + "100" = "300100", and not 400 !!! And there are, of course, all other problems when you work with strings that you have noticed already.

Here is how I would've done it. In the MDX Script you can add the following snippet (it also fixes couple of other minor problems with your expression))

CREATE HIDDEN MyKPIValue = IIF ( [Measures].[Average Customers] <> 0, [Measures].[Annualized Contribution]/[Measures].[Average Customers], NULL );

FORMAT_STRING(MyKPIValue) = 'Currency';

This calculated measure will be created as hidden, and then inside the Value expression of your KPI, you simply reference [Measures].[MyKPIValue].

HTH,

Mosha (http://www.mosha.com/msolap)

|||

I went through our current copy of AdventureWorks and didn't find it either. I may have seen it in an earlier version, or I may just be remembering incorrectly. I know I've seen it in other online articles. There's also a sample showing the use of VBA!ABS at DataBaseJournal.

Thanks for you explanation of strings in the KPIs. The type mismatch error makes sense now.

I think what we were missing here is that the value and goal really need to be created in the script and not in the KPI designer. We create a number of percentage ratios as KPIs where we may divide a currency amount by a count (just like ROA in AdventureWorks.) Using Format() seemed to be the only way to show this as a percent. We should be doing this calculation in the script and use Format_String. I just read another post of yours on solve order that suggests creating all the calculations in the script and only referring to them in the KPI designer is the right way to go.

It would be great to have documented best practices from Microsoft that keep us newbies away from problems like this. KPIs seem to be one of the least documented features.

Getting back to Terry's original question, is there a way of using annotations to pass additional info to the client for custom features? We plan on implementing spark lines and bullet graphs and it would be great if we could pass additional data to the client.

Thanks again for your help!

|||

> There's also a sample showing the use of VBA!ABS at DataBaseJournal.

VBA!ABS - is kosher to use, since it's a math function, and its return data type is number. And, BTW, the MDX articles in DataBaseJournal by William Pearson are usually very good - so this is a source I would trust.

> Getting back to Terry's original question, is there a way of using annotations to pass additional info to the client for custom features? We plan on implementing spark lines and bullet graphs and it would be great if we could pass additional data to the client.

Yes - it is certainly possible. Assuming you create your cubes and KPIs using AMO - here is the link to AMO documentation about how to add annotations to any AS object.

http://msdn2.microsoft.com/en-us/library/microsoft.analysisservices.modelcomponent.annotations.aspx

HTH,

Mosha (http://www.mosha.com/msolap)

|||

There's an open source project called BIDS Helper which is a Visual Studio Add-in. One feature lets you edit annotations on Analysis Services objects within BIDS:

http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Show%20Extra%20Properties&referringTitle=Home

|||I just looked at BIDs Helper. That is exactly what we were looking for. The other features will be very helpful as well. Thanks!!!
Posted by depredationnmqp at 2:41 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: adomd, annotations, collection, database, field, item, kpi, microsoft, mysql, oracle, properties, property, server, sql

KPI Annotations property field

If you look through the the properties collection of a KPI in ADOMD, the last item is called "Annotations". Does anyone know how to set this property through BIDS?

We need to pass additional data to our client app for each KPI in order to make up for incomplete functionality and bugs in Analysis Services in regards to formatting, and we would like to use this field if possible. "Annotations" is not the same as "Description" by the way. We may have to prepend XML data to the description field if there is not an alternative.

Any help would be appreciated.

Thanks,

Terry

and bugs in Analysis Services in regards to formatting

Can you please provide more details about bugs in formatting of KPIs ? I beleive any formatting issue can be solved without going to annotations.

|||

Terry and I work together and I'm replying on his behalf...

The issue we have happens when the KPI value and goal are evaluated in the status or trend expression. For example, if both are formatted (using the Format function) as percent, the KPI status expression shows an error message of "type mismatch for the / operator." We've been getting around this by formatting them as "standard" in the KPI and formatting them in the client app by checking for values that don't start with a "$".

Recently, we came across another issue where the value returned was null. The KPI expression was checking for divide by zero errors but not for null numerators. The status expression blew up with the same error, presumably because the goal was still a formatted value. Removing the format from the Value and Goal or returning a formatted 0 instead of a null both resolve the problem.

It seems that the KPI framework is very sensitive to how values are formatted. This is why we've been thinking about moving the formatting to the client side by passing a format string in Current Time Member or by using Annotations. It seems it would be better to format the end result instead of worrying about how AS handles formats in Status and Trend. Following all the examples we've seen, we're using KPIValue and KPIGoal in the status expression instead of repeating the Value calculation multiple times.

Any advice would be greatly appreciated.

|||

Can you please explain a little more about "if both are formatted (using the Format function)". Do you mean that you use VBA's Format function in the expression of KPI ? If so - this is really bad practice, it has all kinds of problems associated with it. Why wouldn't you want to rely on standard MDX formatting capabilities - I cannot think of scenario where MDX won't be able to do what Format function can do.

It would be best if you will provide some examples of KPI expressions that you are using, and expected formatting.

Thanks,

Mosha (http://www.mosha.com/msolap)

|||

Yes, we are using VBA's Format in KPIs. We're using Format_String in calculations. It may be bad practice, but AdventureWorks and all of the books we have show examples of using it for KPIs. It would be great if there's a better way to do this. Here's sample code for one of the KPIs:

VALUE:

Case
When (Not IsEmpty( ([Measures].[Average Customers]) ))
And (Not IsEmpty( [Measures].[Annualized Contribution]))
Then Format(
([Measures].[Annualized Contribution])
/
([Measures].[Average Customers])
,"Currency")
Else
Format(0,"Currency")
End

If the Status is Null and the Goal is a formatted value this would have caused the type mismatch error. This is why we're returning a formatted 0 instead.

GOAL:

Format(300,"Currency") //Temporary goal

STATUS:

Case
When IsEmpty( KpiValue( "Average Customer Contribution" ) )
Then Null
When KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) >= .90
Then 1
When KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) < .85
And
KpiValue( "Average Customer Contribution" ) /
KpiGoal ( "Average Customer Contribution" ) >= .80
Then 0
Else -1
End

TREND:

Case
When [Date].[Calendar Year Hierarchy].CURRENTMEMBER.LEVEL Is
[Date].[Calendar Year Hierarchy].[(All)]
Then 0
When
VBA!ABS(
KpiValue( "Average Customer Contribution" ) -
(KpiValue ( "Average Customer Contribution" ),
[Date].[Month].CurrentMember.PrevMember)
/
(KpiValue ( "Average Customer Contribution" ),
[Date].[Month].CurrentMember.PrevMember)
) <=.05
Then 0
When
KpiValue( "Average Customer Contribution" ) -
(KpiValue ( "Average Customer Contribution" ),[Date].[Month].CurrentMember.PrevMember)
/
(KpiValue ( "Average Customer Contribution" ),[Date].[Month].CurrentMember.PrevMember)
>.05
Then 1
Else -1
End

We're currently developing on SP2 because of the LastNonEmpty performance problems in SP1. In several cases, our KPIs are just a calculated measures that have Format_String="Percent". To use them in the KPI and have the resulting KPI formatted as a percent, we have to multiple the calculated measure by 100 before the second format is applied. Analysis Services doesn't seem to know the underlying measure's format.

Thanks for your help.

|||

It may be bad practice, but AdventureWorks and all of the books we have show examples of using it for KPIs.

I went over all the KPIs in AdventureWorks cube, and I didn't see any one using Format function. Could you please point out which KPI uses it, and I will file a bug for it to be fixed in the next release of the sample. Or perhaps it is already fixed and we are using different versions of AdventureWorks ? I also would like to know which book shows such examples. You can contact me by mail if you don't want this to be published in the forum.

Now to your scenario. It seems like you want 'Currency' to be formatting of KPI's Value property. Using VBA!Format in the Value expression makes it return a string. Therefore all other properties which try to do arithmetic operations with KPIValue operate with strings instead. It is almost a miracle, but AS actually does support arithmetics on strings to some degree by converting them to numbers when possible. But this is a slippery road. For example, you will find that "300" - "100" = 200, but "300" + "100" = "300100", and not 400 !!! And there are, of course, all other problems when you work with strings that you have noticed already.

Here is how I would've done it. In the MDX Script you can add the following snippet (it also fixes couple of other minor problems with your expression))

CREATE HIDDEN MyKPIValue = IIF ( [Measures].[Average Customers] <> 0, [Measures].[Annualized Contribution]/[Measures].[Average Customers], NULL );

FORMAT_STRING(MyKPIValue) = 'Currency';

This calculated measure will be created as hidden, and then inside the Value expression of your KPI, you simply reference [Measures].[MyKPIValue].

HTH,

Mosha (http://www.mosha.com/msolap)

|||

I went through our current copy of AdventureWorks and didn't find it either. I may have seen it in an earlier version, or I may just be remembering incorrectly. I know I've seen it in other online articles. There's also a sample showing the use of VBA!ABS at DataBaseJournal.

Thanks for you explanation of strings in the KPIs. The type mismatch error makes sense now.

I think what we were missing here is that the value and goal really need to be created in the script and not in the KPI designer. We create a number of percentage ratios as KPIs where we may divide a currency amount by a count (just like ROA in AdventureWorks.) Using Format() seemed to be the only way to show this as a percent. We should be doing this calculation in the script and use Format_String. I just read another post of yours on solve order that suggests creating all the calculations in the script and only referring to them in the KPI designer is the right way to go.

It would be great to have documented best practices from Microsoft that keep us newbies away from problems like this. KPIs seem to be one of the least documented features.

Getting back to Terry's original question, is there a way of using annotations to pass additional info to the client for custom features? We plan on implementing spark lines and bullet graphs and it would be great if we could pass additional data to the client.

Thanks again for your help!

|||

> There's also a sample showing the use of VBA!ABS at DataBaseJournal.

VBA!ABS - is kosher to use, since it's a math function, and its return data type is number. And, BTW, the MDX articles in DataBaseJournal by William Pearson are usually very good - so this is a source I would trust.

> Getting back to Terry's original question, is there a way of using annotations to pass additional info to the client for custom features? We plan on implementing spark lines and bullet graphs and it would be great if we could pass additional data to the client.

Yes - it is certainly possible. Assuming you create your cubes and KPIs using AMO - here is the link to AMO documentation about how to add annotations to any AS object.

http://msdn2.microsoft.com/en-us/library/microsoft.analysisservices.modelcomponent.annotations.aspx

HTH,

Mosha (http://www.mosha.com/msolap)

|||

There's an open source project called BIDS Helper which is a Visual Studio Add-in. One feature lets you edit annotations on Analysis Services objects within BIDS:

http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Show%20Extra%20Properties&referringTitle=Home

|||I just looked at BIDs Helper. That is exactly what we were looking for. The other features will be very helpful as well. Thanks!!!
Posted by depredationnmqp at 2:40 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: adomd, annotations, collection, database, field, item, kpi, microsoft, mysql, oracle, properties, property, server, sql

KPI and report deployment on WSS 3.0

Not sure if I really have the correct forum for this posting so appologies if it is not. My question refers to the basic functionality of the new Sharepoint 3.0 both WSS and MOSS.

In version 2.0 of Sharepoint Services reports were displayed in Sharepoint using Report Explored to navigate and Report Viewer to display the report. Also KPI's were displayed in a web part which came from Business Scorecard Manager 2005.

I have been investingation both WSS3.0 and MOSS and have installed WSS3.0 to test. I notice that I can connect to reporting services with CTP2.0 for sql server. I can upload reports into document lists and run them from there. My question is has the old idea of using the report explorer gone as when you have report manager running in sharepoint integration it has no website to upload files or manage permissions. Is the document upload method the new way or am I missing something.

More importantly though is the display of KPI's is this now only available in MOSS 2007 and no longer a function of WSS3.0 as you cannot install Business Scorecard manager on WSS3.0 but it appears this is built in to MOSS.

Any guidelines to this new functionality would be greatly appreciated

W.r.t. to SharePoint integration, you may find the following blog useful. In SP2 SharePoint integration mode, the Report Manager and Management Studio are not supported. Instead, you can deploy reports to WSS libraries from SharePoint, Report Designer in VS.NET, or programatically.

MOSS has a basic built-in support for creating and importing KPIs but it has less features than BSM, e.g. doesn't support scorecards. You can still use BSM (the 2007 version is currently under way) and integrate its scorecards with WSS 3.0.

|||Thanks for the Low Down that is a great help with planning deployment
Posted by depredationnmqp at 2:39 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: appologies, basic, database, deployment, functionality, kpi, microsoft, mysql, oracle, posting, refers, report, server, sql, wss

KPI and MDX in Goal-Expression

Hi,

Why does a MDX-Expression like

([Dim Time].[CalendarYear].PrevMember, [Measures].[Sales Amount - Fact Reseller Sales])

not work within a KPI-Goal-Expression ?

Is there a work-around for that?

Best whishes,
Manfred

Hi Manfred,

what does it means "not work within a KPI-Goal-Expression"

Simply you don't see data or you receive an error message?

If you simply don't see data maybe the "CurrentMember" for "[Dim Time].[CalendarYear]" is "All Periods" in your KPI-Goal-Expression context so AS can't find a PreviousMember.

sql
Posted by depredationnmqp at 2:39 AM 0 comments
Email This BlogThis! Share to X Share to Facebook
Labels: amount, calendaryear, database, dim, fact, goal-expression, kpi, mdx, mdx-expression, measures, microsoft, mysql, oracle, prevmember, reseller, sales, server, sql, time
Older Posts Home
Subscribe to: Posts (Atom)

KDC Problem

Blog Archive

  • ▼  2012 (488)
    • ▼  March (398)
      • KPI that compares the growth over years
      • KPI measure and dimension
      • KPI List Web Part in MOSS 2007 - How Do I Display ...
      • KPI List Web Part in MOSS 2007 - How Do I Display ...
      • KPI in SQL 2005
      • KPI in SQL 2005
      • KPI in SQL 2005
      • KPI in Reporting Service
      • KPI in Reporting Service
      • KPI Help Required-I want a revenue report with ave...
      • KPI graphic in RS2005
      • KPI Goals from dimension attributes.
      • KPI Goals from dimension attributes.
      • KPI Goal Value doesn't change after filtering the ...
      • KPI for each member of a dimension
      • KPI design and implementation
      • KPI Annotations property field
      • KPI Annotations property field
      • KPI and report deployment on WSS 3.0
      • KPI and MDX in Goal-Expression
      • KPI Aggregation
      • KPI - Sales Trend
      • KPI
      • Korean wording appear as ? in PDF
      • Konesans File Watcher Tasks
      • known, expected or weird behavior ?
      • Known sp3a bugs.
      • Known SMTP bug in .NET 2.0?
      • Known SMTP bug in .NET 2.0?
      • Known issues of upgrading from SQL 2000 to SQL 2005
      • Known Issues for SQL Server 2000 SP4
      • Known Issues for SQL Server 2000 SP4
      • Known Issues for SQL Server 2000 SP4
      • Known fields are not returned by using a stored pr...
      • known error with Transfer SQL Server Objects Task...
      • Known assembly FileIOPermission error, still no so...
      • Knowlege transfer Template
      • Knowlege transfer Template
      • Knowlege transfer Template
      • Knowledgeable yet simple book for database modelli...
      • Knowledge Base-article - 829386 - Hotfix where to ...
      • Knowledge Base Article - 815154 Configure SQL Serv...
      • knowledge about SQL Server Express
      • knowing which jobs/dts/SSIS affect which tables
      • Knowing when <NULL>
      • Knowing what is grouped?!
      • knowing the 'result' of a, INSERT/UPDATE/DELETE
      • knowing the 'result' of a, INSERT/UPDATE/DELETE
      • knowing the 'result' of a, INSERT/UPDATE/DELETE
      • Knowing how many connections are open?
      • Knowing current database
      • Know the "country version" of SQL Server
      • know nothing about MsSQL
      • know nothing about MsSQL
      • Know list database and table in SQL Server
      • know if DB has been restored
      • Knickers in a Loop
      • Knickers in a Loop
      • Knickers in a Loop
      • Kishore
      • Kirk: Importing/Exporting with column ErrorCode, E...
      • Kirk Haselden New book
      • kiran
      • Kinder garden question about datatype
      • Kinda urgent Connection error messages
      • Kinda new to SQL, have a few questions
      • Kind of simple join question. Not sure if its that
      • Kind of Replication will work ?
      • Kind of Important. Connection String
      • Kind of cross-tab query
      • Kind Attention: MSFT
      • Kind Attention: MSFT
      • Kimball Templates
      • Kimball Templates
      • Killing xp_cmdshell
      • Killing timed out connections
      • Killing the process automatically
      • killing the duplicates from a table using sql
      • killing sqlservr.exe from sqlclr code
      • killing SQLmail
      • killing SQLmail
      • killing SQLmail
      • Killing SPIDs
      • Killing SPIDs
      • Killing SPIDs
      • Killing Sleeping Processes
      • Killing Sleeping Processes
      • Killing Remote Application
      • killing process
      • killing process
      • Killing mupltiple batches
      • Killing Locks by Object - SS2005
      • Killing bug in ASP.Net 2, Report server is dead, 1...
      • Killing automatically crashed sessions ??
      • Killing an active connection
      • Killing an active connection
      • Killing an active connection
      • Killing all sleeping processes
      • Killing active connections before detaching a data...
      • Killing a user/login
      • Killing a user/login
      • Killing a user/login
      • Killing a User Process
      • killing a user process
      • killing a user process
      • killing a thread
      • killing a process with a variable
      • killing a process with a variable
      • killing a process shows 0% completion time
      • killing a process shows 0% completion time
      • Killing a process does not help table that can't b...
      • Killing a process does not help table that can't b...
      • Killing a process does not help table that can't b...
      • Killing a hung process..
      • Killing a hung process..
      • Killing a hung process
      • Killing a hung process
      • Killing a DBCC DBREINDEX - will this cause a massi...
      • Killing a DBCC DBREINDEX - will this cause a massi...
      • Killing a DBCC DBREINDEX - will this cause a massi...
      • Killer Union
      • Killer Union
      • Killer scripts
      • killer query - limit usage ?
      • killer query - limit usage ?
      • killer query - limit usage ?
      • Killer problem with Scheduled Reports
      • killed/rollback stuck on object_name(99)
    • ►  February (90)

About Me

depredationnmqp
View my complete profile
  • loan
  • sql
  • sql server
  • sql
  • sql server
  • sql
  • imwebhost