Microsoft.Virtualization.Reports.ForecastMachineGroupCPU.rdl (ReportResource)

Element properties:

TypeReportResource
File NameMicrosoft.Virtualization.Reports.ForecastMachineGroupCPU.rdl
AccessibilityInternal

Source Code:

<ReportResource ID="Microsoft.Virtualization.Reports.ForecastMachineGroupCPU.rdl" FileName="Microsoft.Virtualization.Reports.ForecastMachineGroupCPU.rdl" Accessibility="Internal" HasNullStream="false" MIMEType="application/octet-stream"/>

File Content: Microsoft.Virtualization.Reports.ForecastMachineGroupCPU.rdl

<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

<Body><Script>
<ReportItems>
<Tablix Name="TablixCPUUageForecast">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>1.8228in</Width>
</TablixColumn>
<TablixColumn>
<Width>1.8228in</Width>
</TablixColumn>
<TablixColumn>
<Width>1.8228in</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox5">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Date", "Date")</Value>
<Style></Style>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox5</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>Lavender</BackgroundColor>
<VerticalAlign>Bottom</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox8">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Usage", "Usage (%)")</Value>
<Style></Style>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox8</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>Lavender</BackgroundColor>
<VerticalAlign>Bottom</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox12">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Deviation", "Standard Deviation")</Value>
<Style></Style>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox12</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>Lavender</BackgroundColor>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox23">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!SeriesTime.Value</SortExpression>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox23</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox24">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!SeriesData.Value</SortExpression>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox24</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox25">
<CanGrow>true</CanGrow>
<UserSort>
<SortExpression>=Fields!SeriesStandardDeviation.Value</SortExpression>
</UserSort>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value />
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox25</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="SeriesTime">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!SeriesTime.Value</Value>
<Style></Style>
<Format>MM/dd/yyyy</Format>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>SeriesTime</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount() , "Khaki", "No Color")</BackgroundColor>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="SeriesData">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Switch(Fields!SeriesData.Value &gt; 100, 100,
Fields!SeriesData.Value &lt; 0, 0,
Fields!SeriesData.Value &lt;= 100 , Fields!SeriesData.Value,
Fields!SeriesData.Value &gt;=0, Fields!SeriesData.Value)</Value>
<Style></Style>
<Format>#,0.00;(#,0.00)</Format>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>SeriesData</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount() , "Khaki", "No Color")</BackgroundColor>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="SeriesStandardDeviation">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!SeriesStandardDeviation.Value</Value>
<Style></Style>
<Format>#,0.0000;(#,0.0000)</Format>
</Style>
</TextRun>
</TextRuns>
<Style></Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>SeriesStandardDeviation</rd:DefaultName>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount() , "Khaki", "No Color")</BackgroundColor>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<Group Name="Details2" />
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<FixedColumnHeaders>true</FixedColumnHeaders>
<NoRowsMessage>=Code.GetLocTable("LT_Report").GetString("R.ErrorMessage.Cause.3", "There is no enough historical data to generate forecasting data, at least 2 historical data points are necessary.")</NoRowsMessage>
<DataSetName>CPUForecasting</DataSetName>
<Top>3.83611in</Top>
<Height>0.75in</Height>
<Width>5.4684in</Width>
<Visibility>
<Hidden>true</Hidden>
<ToggleItem>Textbox_DiskReadForecast</ToggleItem>
</Visibility>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
</Style>
</Tablix>
<Textbox Name="Textbox_DiskReadForecast">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Table", "CPU Usage Forecast")</Value>
<Style></Style>
<Color>Blue</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<Top>3.51667in</Top>
<Height>0.25in</Height>
<Width>5.46839in</Width>
<ZIndex>1</ZIndex>
<Visibility>
<Hidden>=IIF(Code.GetHistoricalDataPointsCount() &gt; 1, False, True)</Hidden>
</Visibility>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
<Chart Name="ChartCPUForecast">
<ChartCategoryHierarchy>
<ChartMembers>
<ChartMember>
<Group Name="Chart4_CategoryGroup">
<GroupExpressions>
<GroupExpression>=Fields!SeriesTime.Value</GroupExpression>
</GroupExpressions>
</Group>
<SortExpressions>
<SortExpression>
<Value>=Fields!SeriesTime.Value</Value>
</SortExpression>
</SortExpressions>
<Label>=Fields!SeriesTime.Value</Label>
</ChartMember>
</ChartMembers>
</ChartCategoryHierarchy>
<ChartSeriesHierarchy>
<ChartMembers>
<ChartMember>
<Label>Series Standard Deviation</Label>
</ChartMember>
<ChartMember>
<Label>Series Data</Label>
</ChartMember>
<ChartMember>
<Label>Series Standard Deviation</Label>
</ChartMember>
<ChartMember>
<Label />
</ChartMember>
</ChartMembers>
</ChartSeriesHierarchy>
<ChartData>
<ChartSeriesCollection>
<ChartSeries Name="Series">
<ChartDataPoints>
<ChartDataPoint>
<ChartDataPointValues>
<Y>=IIF((Fields!SeriesData.Value + 2 * Fields!SeriesStandardDeviation.Value) &gt; 100, 100, (Fields!SeriesData.Value + 2 * Fields!SeriesStandardDeviation.Value))</Y>
</ChartDataPointValues>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
<ToolTip>Upper Limit Prediction</ToolTip>
<Style></Style>
<Border>
<Color>Blue</Color>
<Style></Style>Dotted</Style>
<Width>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount(), "1.5pt", "0pt")</Width>
</Border>
<Color>Blue</Color>
</Style>
<ChartMarker>
<Style></Style>
<Color>Purple</Color>
</Style>
</ChartMarker>
<DataElementOutput>Output</DataElementOutput>
</ChartDataPoint>
</ChartDataPoints>
<Type>Line</Type>
<Style /></Style>
<ChartEmptyPoints>
<Style /></Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
</ChartEmptyPoints>
<ChartItemInLegend>
<LegendText>=Code.GetLocTable("LT_Report").GetString("R.Limit", "95% Forecast Confidence Interval")</LegendText>
</ChartItemInLegend>
<ValueAxisName>Primary</ValueAxisName>
<CategoryAxisName>Primary</CategoryAxisName>
<ChartSmartLabel>
<CalloutLineColor>Black</CalloutLineColor>
<MinMovingDistance>0pt</MinMovingDistance>
</ChartSmartLabel>
</ChartSeries>
<ChartSeries Name="SeriesData">
<ChartDataPoints>
<ChartDataPoint>
<ChartDataPointValues>
<Y>=Switch(Fields!SeriesData.Value &gt; 100, 100,
Fields!SeriesData.Value &lt; 0, 0,
Fields!SeriesData.Value &lt;= 100 , Fields!SeriesData.Value,
Fields!SeriesData.Value &gt;=0, Fields!SeriesData.Value)</Y>
</ChartDataPointValues>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
<Style></Style>
<Border>
<Width>1.5pt</Width>
</Border>
<Color>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount(), "Blue", "Red")</Color>
</Style>
<ChartMarker>
<Type>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount(), "Square", "None")</Type>
<Style></Style>
<Color>Purple</Color>
</Style>
</ChartMarker>
<DataElementOutput>Output</DataElementOutput>
</ChartDataPoint>
</ChartDataPoints>
<Type>Line</Type>
<Style /></Style>
<ChartEmptyPoints>
<Style /></Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
</ChartEmptyPoints>
<ChartItemInLegend>
<LegendText>=Code.GetLocTable("LT_Report").GetString("R.TimeSeriesData", "Historical Data")</LegendText>
</ChartItemInLegend>
<ValueAxisName>Primary</ValueAxisName>
<CategoryAxisName>Primary</CategoryAxisName>
<ChartSmartLabel>
<CalloutLineColor>Black</CalloutLineColor>
<MinMovingDistance>0pt</MinMovingDistance>
</ChartSmartLabel>
</ChartSeries>
<ChartSeries Name="Series1">
<ChartDataPoints>
<ChartDataPoint>
<ChartDataPointValues>
<Y>=IIF((Fields!SeriesData.Value - 2 * Fields!SeriesStandardDeviation.Value) &lt; 0, 0, (Fields!SeriesData.Value - 2 * Fields!SeriesStandardDeviation.Value))</Y>
</ChartDataPointValues>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
<Style></Style>
<Border>
<Color>Blue</Color>
<Style></Style>Dotted</Style>
<Width>=IIF(RowNumber("CPUForecasting") &gt; Code.GetHistoricalDataPointsCount(), "1.5pt", "0pt")</Width>
</Border>
<Color>Blue</Color>
</Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<DataElementOutput>Output</DataElementOutput>
</ChartDataPoint>
</ChartDataPoints>
<Type>Line</Type>
<Style /></Style>
<ChartEmptyPoints>
<Style /></Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
</ChartEmptyPoints>
<ChartItemInLegend>
<LegendText>=Code.GetLocTable("LT_Report").GetString("R.Title", "95% Forecast Confidence Interval")</LegendText>
<Hidden>true</Hidden>
</ChartItemInLegend>
<ValueAxisName>Primary</ValueAxisName>
<CategoryAxisName>Primary</CategoryAxisName>
<ChartSmartLabel>
<CalloutLineColor>Black</CalloutLineColor>
<MinMovingDistance>0pt</MinMovingDistance>
</ChartSmartLabel>
</ChartSeries>
<ChartSeries Name="Series2">
<ChartDataPoints>
<ChartDataPoint>
<ChartDataPointValues>
<Y>=0</Y>
</ChartDataPointValues>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
<Style></Style>
<Border>
<Color>Blue</Color>
<Width>0.5pt</Width>
</Border>
<Color>Blue</Color>
</Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<DataElementOutput>Output</DataElementOutput>
</ChartDataPoint>
</ChartDataPoints>
<Type>Line</Type>
<Style /></Style>
<ChartEmptyPoints>
<Style /></Style>
<ChartMarker>
<Style /></Style>
</ChartMarker>
<ChartDataLabel>
<Style /></Style>
</ChartDataLabel>
</ChartEmptyPoints>
<ChartItemInLegend>
<LegendText>=Code.GetLocTable("LT_Report").GetString("R.Legend.FCData", "Forecast Data")</LegendText>
</ChartItemInLegend>
<ValueAxisName>Primary</ValueAxisName>
<CategoryAxisName>Primary</CategoryAxisName>
<ChartSmartLabel>
<CalloutLineColor>Black</CalloutLineColor>
<MinMovingDistance>0pt</MinMovingDistance>
</ChartSmartLabel>
</ChartSeries>
</ChartSeriesCollection>
</ChartData>
<ChartAreas>
<ChartArea Name="Default">
<ChartCategoryAxes>
<ChartAxis Name="Primary">
<Style></Style>
<Border>
<Color>Gray</Color>
<Width>1.5pt</Width>
</Border>
<FontSize>8pt</FontSize>
<Format>MM/dd/yyyy</Format>
</Style>
<ChartAxisTitle>
<Caption>=Code.GetLocTable("LT_Report").GetString("R.XAxis", "Time Line")</Caption>
<Style></Style>
<FontSize>9pt</FontSize>
<FontWeight>Bold</FontWeight>
</Style>
</ChartAxisTitle>
<ChartMajorGridLines>
<Enabled>False</Enabled>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
<Style></Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMinorTickMarks>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<Angle>-30</Angle>
<PreventLabelOffset>true</PreventLabelOffset>
<AllowLabelRotation>None</AllowLabelRotation>
<LabelsAutoFitDisabled>true</LabelsAutoFitDisabled>
<ChartAxisScaleBreak>
<Style /></Style>
</ChartAxisScaleBreak>
</ChartAxis>
<ChartAxis Name="Secondary">
<Style></Style>
<FontSize>8pt</FontSize>
</Style>
<ChartAxisTitle>
<Caption>Axis Title</Caption>
<Style></Style>
<FontSize>8pt</FontSize>
</Style>
</ChartAxisTitle>
<ChartMajorGridLines>
<Enabled>False</Enabled>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
<Style></Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMinorTickMarks>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Location>Opposite</Location>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style /></Style>
</ChartAxisScaleBreak>
</ChartAxis>
</ChartCategoryAxes>
<ChartValueAxes>
<ChartAxis Name="Primary">
<Style></Style>
<Border>
<Color>Gray</Color>
<Width>1.5pt</Width>
</Border>
<FontSize>8pt</FontSize>
<Format>#,0;(#,0)</Format>
</Style>
<ChartAxisTitle>
<Caption>=Code.GetLocTable("LT_Report").GetString("R.Title.R.YAxis", "Percentage %")</Caption>
<Style></Style>
<FontSize>9pt</FontSize>
<FontWeight>Bold</FontWeight>
</Style>
</ChartAxisTitle>
<IntervalType>Number</IntervalType>
<ChartMajorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
<Style></Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMinorTickMarks>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Interlaced>true</Interlaced>
<InterlacedColor>Lavender</InterlacedColor>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style /></Style>
</ChartAxisScaleBreak>
</ChartAxis>
<ChartAxis Name="Secondary">
<Style></Style>
<FontSize>8pt</FontSize>
</Style>
<ChartAxisTitle>
<Caption>Axis Title</Caption>
<Style></Style>
<FontSize>8pt</FontSize>
</Style>
</ChartAxisTitle>
<ChartMajorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style></Style>
<Border>
<Color>Gainsboro</Color>
<Style></Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMinorTickMarks>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Location>Opposite</Location>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style /></Style>
</ChartAxisScaleBreak>
</ChartAxis>
</ChartValueAxes>
<Style></Style>
<BackgroundColor>=IIF(Fields!SeriesStandardDeviation.Value &gt; 0, "Khaki", "AliceBlue")</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
</Style>
</ChartArea>
</ChartAreas>
<ChartLegends>
<ChartLegend Name="Default">
<Style></Style>
<BackgroundGradientType>None</BackgroundGradientType>
<FontSize>8pt</FontSize>
</Style>
<Position>BottomCenter</Position>
<DockOutsideChartArea>true</DockOutsideChartArea>
<ChartLegendTitle>
<Caption />
<Style></Style>
<FontSize>8pt</FontSize>
<FontWeight>Bold</FontWeight>
<TextAlign>Center</TextAlign>
</Style>
</ChartLegendTitle>
<HeaderSeparatorColor>Black</HeaderSeparatorColor>
<ColumnSeparatorColor>Black</ColumnSeparatorColor>
</ChartLegend>
</ChartLegends>
<ChartTitles>
<ChartTitle Name="Default">
<Caption>=Code.GetLocTable("LT_Report").GetString("R.Chart", "CPU Usage Forecast")</Caption>
<Style></Style>
<BackgroundGradientType>None</BackgroundGradientType>
<FontWeight>Bold</FontWeight>
<TextAlign>General</TextAlign>
<VerticalAlign>Top</VerticalAlign>
</Style>
</ChartTitle>
</ChartTitles>
<Palette>BrightPastel</Palette>
<ChartBorderSkin>
<Style></Style>
<BackgroundColor>Gray</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
<Color>White</Color>
</Style>
</ChartBorderSkin>
<ChartNoDataMessage Name="NoDataMessage">
<Caption>=Code.GetLocTable("LT_Report").GetString("R.ErrorMessage.Cause.3", "There is no enough historical data to generate forecasting data, at least 2 historical data points are necessary.")</Caption>
<Style></Style>
<BackgroundGradientType>None</BackgroundGradientType>
<TextAlign>Left</TextAlign>
<VerticalAlign>Top</VerticalAlign>
</Style>
</ChartNoDataMessage>
<DataSetName>CPUForecasting</DataSetName>
<Left>0.00001in</Left>
<Height>3.5in</Height>
<Width>5.46839in</Width>
<ZIndex>2</ZIndex>
<Visibility>
<Hidden>=IIF(Code.GetHistoricalDataPointsCount() &gt; 1, True, False)</Hidden>
</Visibility>
<ToolTip>ChartCPUForecast</ToolTip>
<Style></Style>
<Border>
<Color>LightGrey</Color>
<Style></Style>Solid</Style>
</Border>
<BackgroundColor>White</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
</Style>
</Chart>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.ErrorMessage.Cause.3", "There is no enough historical data to generate forecasting data, at least 2 historical data points are necessary.")</Value>
<Style /></Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Left>0.00001in</Left>
<Height>1.46875in</Height>
<Width>5.46838in</Width>
<ZIndex>3</ZIndex>
<Visibility>
<Hidden>=IIF(Code.GetHistoricalDataPointsCount() &gt; 1, True, False)</Hidden>
</Visibility>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
<Textbox Name="Textbox3">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Code.GetLocTable("LT_Report").GetString("R.NoEnoughDataMsg", "Warning: Not enough Historical data provided for this report. Try to change the date range for historic data or the forecast granularity for the report.")</Value>
<Style></Style>
<Color>Red</Color>
</Style>
</TextRun>
</TextRuns>
<Style /></Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox3</rd:DefaultName>
<Top>4.6in</Top>
<Height>0.38194in</Height>
<Width>5.46839in</Width>
<ZIndex>4</ZIndex>
<Visibility>
<Hidden>=IIF(Code.GetHistoricalDataPointsCount() &gt;= 10, True, False)</Hidden>
</Visibility>
<Style></Style>
<Border>
<Style></Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>4.98194in</Height>
<Style /></Style>
</Script></Body>
<Width>5.4684in</Width>
<Page>
<LeftMargin>1in</LeftMargin>
<RightMargin>1in</RightMargin>
<TopMargin>1in</TopMargin>
<BottomMargin>1in</BottomMargin>
<Style /></Style>
</Page>
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="DataWarehouseMain">
<DataSourceReference>OpsMgrDataWare</DataSourceReference>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>205a8894-1fc0-4210-9677-19ae89875210</rd:DataSourceID>
</DataSource>
<DataSource Name="AnalysisServiceDS">
<ConnectionProperties>
<DataProvider>OLEDB-MD</DataProvider>
<ConnectString>="Data Source=" &amp; Parameters!AnalysisServerName.Value &amp; ";Initial Catalog=VMMAnalysisServerDB"</ConnectString>
</ConnectionProperties>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>9b59027d-cb5a-457d-9559-a38ce379795e</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="LT_Report_Query">
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<QueryParameters>
<QueryParameter Name="@ManagementGroupGuid">
<Value>=Code.GetCallingManagementGroupId()</Value>
</QueryParameter>
<QueryParameter Name="@ManagementPackSystemName">
<Value>Microsoft.SystemCenter.VirtualMachineManager.Reports</Value>
</QueryParameter>
<QueryParameter Name="@ReportSystemName">
<Value>Microsoft.Virtualization.Reports.ForecastMachineGroupCPU</Value>
</QueryParameter>
<QueryParameter Name="@LanguageCode">
<Value>=Code.GetReportLocLanguageCode()</Value>
</QueryParameter>
<QueryParameter Name="@Scope">
<Value>R.%</Value>
</QueryParameter>
</QueryParameters>
<CommandType>StoredProcedure</CommandType>
<CommandText>ReportDisplayStringGet</CommandText>
</Query>
<Fields>
<Field Name="ValueXml">
<DataField>XML_F52E2B61-18A1-11d1-B105-00805F49916B</DataField>
</Field>
<Field Name="ValueName">
<Value>="R"</Value>
</Field>
</Fields>
</DataSet>
<DataSet Name="ManagementGroups">
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandText>SELECT ManagementGroupGuid, ManagementGroupDefaultName FROM vManagementGroup</CommandText>
</Query>
<Fields>
<Field Name="ManagementGroupGuid">
<DataField>ManagementGroupGuid</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="ManagementGroupDefaultName">
<DataField>ManagementGroupDefaultName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
</DataSet>
<DataSet Name="CPUTimeSeries">
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<QueryParameters>
<QueryParameter Name="@UTCStartDate1">
<Value>=Parameters!UTCStartDate1.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@StartDate1">
<Value>=Parameters!StartDate1.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@UTCEndDate1">
<Value>=Parameters!UTCEndDate1.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@ObjectList">
<Value>=Parameters!ObjectList.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@TotalMemoryPropertyID">
<Value>=Parameters!TotalMemoryPropertyID.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@VMHostTypeRowId">
<Value>=Parameters!VMHostTypeRowId.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
<QueryParameter Name="@ForecastGranularity">
<Value>=Parameters!ForecastGranularity.Value</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
</QueryParameters>
<CommandType>StoredProcedure</CommandType>
<CommandText>Microsoft_SystemCenter_VirtualMachineManager_Report_ForecastMachineGroupDataTimeSeries</CommandText>
</Query>
<Fields>
<Field Name="CPUUsageTimeSeries">
<DataField>CPUUsageTimeSeries</DataField>
<rd:UserDefined>true</rd:UserDefined>
</Field>
</Fields>
</DataSet>
<DataSet Name="CPUForecasting">
<Query>
<DataSourceName>AnalysisServiceDS</DataSourceName>
<CommandText>=IIF(Code.GetHistoricalDataPointsCount() &gt; 1, Code.FormatAnalysisStoredProcCommandText(), Code.StaticAnalysisStoredProcCommandText())</CommandText>
</Query>
<Fields>
<Field Name="SeriesTime">
<DataField>SeriesTime</DataField>
<rd:UserDefined>true</rd:UserDefined>
</Field>
<Field Name="SeriesData">
<DataField>SeriesData</DataField>
<rd:UserDefined>true</rd:UserDefined>
</Field>
<Field Name="SeriesStandardDeviation">
<DataField>SeriesStandardDeviation</DataField>
<rd:UserDefined>true</rd:UserDefined>
</Field>
</Fields>
</DataSet>
</DataSets>
<ReportParameters>
<ReportParameter Name="LT_Report">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>LT_Report_Query</DataSetName>
<ValueField>ValueXml</ValueField>
</DataSetReference>
</DefaultValue>
<Hidden>true</Hidden>
<ValidValues>
<DataSetReference>
<DataSetName>LT_Report_Query</DataSetName>
<ValueField>ValueXml</ValueField>
<LabelField>ValueName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="ManagementGroupId">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>ManagementGroups</DataSetName>
<ValueField>ManagementGroupGuid</ValueField>
</DataSetReference>
</DefaultValue>
<AllowBlank>true</AllowBlank>
<Prompt>ManagementGroupId</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<DataSetReference>
<DataSetName>ManagementGroups</DataSetName>
<ValueField>ManagementGroupGuid</ValueField>
<LabelField>ManagementGroupDefaultName</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="ForecastGranularity">
<DataType>Integer</DataType>
<Prompt>Forecast Granularity</Prompt>
</ReportParameter>
<ReportParameter Name="UTCStartDate1">
<DataType>DateTime</DataType>
<Prompt>[UTCStartDate]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate1">
<DataType>DateTime</DataType>
<Prompt>[StartDate]</Prompt>
</ReportParameter>
<ReportParameter Name="UTCEndDate1">
<DataType>DateTime</DataType>
<Prompt>[EndDate]</Prompt>
</ReportParameter>
<ReportParameter Name="ObjectList">
<DataType>String</DataType>
<Prompt>Objects</Prompt>
</ReportParameter>
<ReportParameter Name="TotalMemoryPropertyID">
<DataType>String</DataType>
<Prompt>TotalMemoryPropertyID</Prompt>
</ReportParameter>
<ReportParameter Name="VMHostTypeRowId">
<DataType>String</DataType>
<Prompt>VMHostTypeRowId</Prompt>
</ReportParameter>
<ReportParameter Name="CPUTimeSeries">
<DataType>String</DataType>
<Nullable>true</Nullable>
<DefaultValue>
<DataSetReference>
<DataSetName>CPUTimeSeries</DataSetName>
<ValueField>CPUUsageTimeSeries</ValueField>
</DataSetReference>
</DefaultValue>
<AllowBlank>true</AllowBlank>
<Prompt>CPUTimeSeries</Prompt>
<Hidden>true</Hidden>
<ValidValues>
<DataSetReference>
<DataSetName>CPUTimeSeries</DataSetName>
<ValueField>CPUUsageTimeSeries</ValueField>
<LabelField>CPUUsageTimeSeries</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="AnalysisServerName">
<DataType>String</DataType>
<Prompt>AnalysisServerName</Prompt>
</ReportParameter>
</ReportParameters>
<Code><Script>
Const LocTableStringQuery As String = "R/S[@N='{0}']/text()"
Const TimeSeriesParameterName As String = "CPUTimeSeries"

Public Function FormatAnalysisStoredProcCommandText() As String
Dim TimeSeries As String() = Report.Parameters(TimeSeriesParameterName).Value.Split(";")
Dim DatePointCount As Integer = TimeSeries.Length
Dim ForecastPointCount As Integer = (DatePointCount) * 0.3
Return "CALL AnalysisStoredProc.GetTimeSeriesForecast('" + Report.Parameters(TimeSeriesParameterName).Value + "', " + ForecastPointCount.ToString() + ");"
End Function

Public Function StaticAnalysisStoredProcCommandText() As String
Return "CALL AnalysisStoredProc.GetTimeSeriesForecast('01/1900, 0;02/1900,0', 1);"
End Function

Public Function GetHistoricalDataPointsCount() As Integer
If Report.Parameters(TimeSeriesParameterName).Value Is Nothing Then
Return 0
End If
Dim TimeSeries As String() = Report.Parameters(TimeSeriesParameterName).Value.Split(";")
Return TimeSeries.Length
End Function


Dim LocTables As System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)
Dim ReportCulture As System.Globalization.CultureInfo


Protected Overrides Sub OnInit()
LocTables = New System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)()
ReportCulture = System.Globalization.CultureInfo.GetCultureInfo(Report.User("Language"))
End Sub

Public Function GetCallingManagementGroupId() As String
Return Microsoft.EnterpriseManagement.Reporting.ReportingConfiguration.ManagementGroupId
End Function

Public Function GetLocTable(ByVal Name As String) As Microsoft.EnterpriseManagement.Reporting.XmlStringTable
If (LocTables is Nothing) then
LocTables = New System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)()
End If
Dim LocTable As Microsoft.EnterpriseManagement.Reporting.XmlStringTable
If Not LocTables.TryGetValue(Name, LocTable) Then
LocTable = New Microsoft.EnterpriseManagement.Reporting.XmlStringTable(LocTableStringQuery, Report.Parameters(Name).Value)
LocTables.Add(Name, LocTable)
End If
Return LocTable
End Function

Public Function GetReportLocLanguageCode() As String
If (ReportCulture is Nothing) then
ReportCulture = System.Globalization.CultureInfo.GetCultureInfo(Report.User("Language"))
End If
Return ReportCulture.ThreeLetterWindowsLanguageName
End Function

Public Function BuildXmlValueList(ByVal ValueList() As Object) As String
Return Microsoft.EnterpriseManagement.Reporting.MultiValueParameter.ToXml("Data", "Value", ValueList)
End Function
</Script></Code>
<Language>=User!Language</Language>
<CodeModules>
<CodeModule>Microsoft.EnterpriseManagement.Reporting.Code, Version=6.0.0.0, Culture=neutral</CodeModule>
</CodeModules>
<rd:ReportUnitType>Inch</rd:ReportUnitType>
<rd:ReportID>e852d88f-dc93-4d06-9c89-9778fccb86ed</rd:ReportID>
</Report>