Virtual KPI Element in WPF OLAP Common
6 May 20219 minutes to read
KPI can be virtually defined during runtime. This feature enables users to create KPIs without storing them in SSAS (SQL Server Analysis Services). This feature is useful when users want to define KPIs at runtime and also minimize the time necessary to create KPIs.
Properties
- Name: Gets or sets the name for VirtualKpiElement.
- KpiValueExpression: Gets or sets the value which indicates the value expression for VirtualKpiElement.
- KpiGoalExpression: Gets or sets the value which indicates the goal expression for VirtualKpiElement.
- KpiStatusExpression: Gets or sets the value which indicates the status expression for VirtualKpiElement.
- KpiTrendExpression: Gets or sets the value which indicates the trend expression for VirtualKpiElement.
- KpiTrendGraphic: Gets or sets the name of the graphic used to represent the result of the trend expression.
- KpiStatusGraphic: Gets or sets the name of the graphic used to represent the result of the status expression.
OlapReport class properties
- VirtualKpiElements: Gets or sets the collection of VirtualKpiElement.
Adding virtual KPI element to the OlapReport
OLAP report definition with VirtualKpiElement
public OlapReport VirtualKPIReport()
{
OlapReport olapReport = new OlapReport("Virtual KPI Report");
olapReport.CurrentCubeName = "Adventure Works";
MeasureElements measureElements = new MeasureElements();
measureElements.Add(new MeasureElement { Name = "Internet Sales Amount" });
olapReport.CategoricalElements.Add(measureElements);
VirtualKpiElement virtualKPIElement = new VirtualKpiElement();
virtualKPIElement.Name = "Sample KPI";
virtualKPIElement.KpiValueExpression = ""; //Value expression
virtualKPIElement.KpiGoalExpression = ""; //Goal expression
virtualKPIElement.KpiStatusExpression = ""; //Status expression
virtualKPIElement.KpiTrendExpression = ""; //Trend expression
virtualKPIElement.StatusGraphic = ""; //Status graphic
virtualKPIElement.TrendGraphic = ""; //Trend graphic
olapReport.VirtualKpiElements.Add(virtualKPIElement);
olapReport.CategoricalElements.Add(virtualKPIElement);
DimensionElement internalDimension = new DimensionElement();
internalDimension.Name = "Product";
internalDimension.AddLevel("Product Categories", "Category");
olapReport.SeriesElements.Add(internalDimension);
return olapReport;
}
Public Function VirtualKPIReport() As OlapReport
Dim olapReport As New OlapReport("Virtual KPI Report")
olapReport.CurrentCubeName = "Adventure Works"
Dim measureElements As New MeasureElements()
measureElements.Add(New MeasureElement With {.Name = "Internet Sales Amount"})
olapReport.CategoricalElements.Add(measureElements)
Dim virtualKPIElement As New VirtualKpiElement()
virtualKPIElement.Name = "Sample KPI"
virtualKPIElement.KpiValueExpression = "" 'Value expression
virtualKPIElement.KpiGoalExpression = "" 'Goal expression
virtualKPIElement.KpiStatusExpression = "" 'Status expression
virtualKPIElement.KpiTrendExpression = "" 'Trend expression
virtualKPIElement.StatusGraphic = "" 'Status graphic
virtualKPIElement.TrendGraphic = "" 'Trend graphic
olapReport.VirtualKpiElements.Add(virtualKPIElement)
olapReport.CategoricalElements.Add(virtualKPIElement)
Dim internalDimension As New DimensionElement()
internalDimension.Name = "Product"
internalDimension.AddLevel("Product Categories", "Category")
olapReport.SeriesElements.Add(internalDimension)
Return olapReport
End Function
Sample of Value, Goal, Status, and Trend expressions
[Value Expression]
[Measures].[Reseller Sales Amount]
[Goal Expression]
[Measures].[Sales Amount Quota]
[Status Expression]
Case
When [Measures].[Reseller Sales Amount] / [Measures].[Sales Amount Quota] > 1
Then 1
When [Measures].[Reseller Sales Amount] / [Measures].[Sales Amount Quota] <= 1
And
[Measures].[Reseller Sales Amount] / [Measures].[Sales Amount Quota] >= .85
Then 0
Else -1
End
[Trend Expression]
Case
When IsEmpty
(
ParallelPeriod
(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
)
)
Then 0
When VBA!Abs
(
(
[Measures].[Reseller Sales Amount]
-
(
[Measures].[Reseller Sales Amount],
ParallelPeriod
(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
)
)
)
/
(
[Measures].[Reseller Sales Amount],
ParallelPeriod
(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
)
)
) <=.02
Then 0
When (
[Measures].[Reseller Sales Amount]
-
(
[Measures].[Reseller Sales Amount],
ParallelPeriod
(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
)
)
)
/
(
[Measures].[Reseller Sales Amount],
ParallelPeriod
(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
)
) >.02
Then 1
Else -1
End