SSAS KPI 定義包含:值表達式、目標表達式、狀態指標/表達式、趨勢指標/表達式。SSMS 內建 KPI 瀏覽器透過預設圖片集根據狀態/趨勢值 (-1, 0, 1 等) 顯示對應圖示。圖片路徑通常在:
D:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\KPIsBrowserPage\Images
DataGridViewImageCell,覆寫 GetFormattedValue 解析「指標類型,數值」並回傳對應圖片資源。DataGridViewImageColumn,指定 CellTemplate 為上述 Cell。Properties.Resources) 內嵌所有指標圖片 (紅綠燈、儀表、笑臉、箭頭等)。internal class DataGridViewStatusCell : DataGridViewImageCell
{
protected override object GetFormattedValue(object value, int rowIndex,
ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter,
TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context)
{
string[] parts = value.ToString().Split(',');
string graphType = parts[0]; // Shapes, TrafficLight, GaugeAscending...
double status = Double.Parse(parts[1]); // -1, -0.5, 0, 0.5, 1
switch (graphType)
{
case "Shapes":
return status == -1 ? Properties.Resources.Stoplight_Single0 :
status == 0 ? Properties.Resources.Stoplight_Single1 :
Properties.Resources.Stoplight_Single2;
case "TrafficLight":
return status == -1 ? Properties.Resources.Stoplight_Multiple0 :
status == 0 ? Properties.Resources.Stoplight_Multiple1 :
Properties.Resources.Stoplight_Multiple2;
case "GaugeAscending":
// -1, -0.5, 0, 0.5, 1 對應 5 階段儀表圖
...
// 其他指標類型: RoadSigns, Thermometer, Cylinder, SmileyFace, VarianceArrow
default: return Properties.Resources.empty;
}
}
}
使用 ADOMD.NET 執行 DISCOVER_KPIS 或 SELECT ... FROM $SYSTEM.MDSCHEMA_KPIS 取得 KPI 定義與當前值,計算狀態/趨勢值,組合為「指標類型,數值」字串繫結至 DataGridView。
AutoGenerateColumns=false,手動加入 DataGridViewStatusColumn。StatusGraphic 屬性)。自訂 KPI 展示控件解決了 SSAS 未公開展示 API 的缺口,靈活整合於企業 BI 入口網站,支援豐富指標視覺化與即時資料繫結。