数据可视化与层次结构视图的构建

在商业智能(BI)应用中,数据的可视化呈现对于用户理解数据和做出决策至关重要。层次结构视图是其中一种常见的数据展示方式,它允许用户通过钻取(drilling)功能,从高层次的总体数据逐步深入到低层次的具体数据。本文将介绍如何使用SQL Server和Silverlight创建一个层次结构视图,具体来说,是如何通过一个规范化的维度层次结构(雪花模式)来创建视图,并将其填充到Silverlight的TreeView控件中。

步骤一:构建TreeView数据源视图

首先,需要在SQL Server Management Studio中创建一个视图。这个视图将把两个表——Category和Product表——的数据转换成一个具有父子关系的表,其中CategoryID作为父ID,ProductID作为子ID。以下是创建视图的T-SQL代码示例:

-- 创建视图的T-SQL代码 CREATE VIEW dim_product_vw AS SELECT CategoryID, ProductID, ProductName FROM Product WHERE CategoryID IS NOT NULL UNION ALL SELECT 0 AS CategoryID, CategoryID AS ProductID, CategoryName AS ProductName FROM Category

为了在TreeView中利用层次数据模板,需要将数据放入一个表中,创建一个主索引,并在CategoryID和ProductID之间建立父子关系。

步骤二:创建一个新的RIA Services EnabledSilverlight项目

在Visual Studio 2010中创建一个新的RIA Services EnabledSilverlight项目。这个步骤相对直观,按照Visual Studio的向导操作即可。

步骤三:连接Northwind数据库并创建ADO.NET实体模型

选择NWAnalytics.Web项目,然后按下ALT+ENTER键创建项目的设置文件。在设置文件中,选择连接字符串作为设置值的类型,并设置连接字符串以连接到服务器实例和数据库。测试连接成功后,保存解决方案并构建项目以清除警告信息。

步骤四:创建ADO.NET实体数据模型

在NWAnalytics.Web项目中添加一个新的项。从已安装的模板中选择Visual C#\Data\ADO.NET Entity Data Model模板。在向导中选择“从数据库生成”,然后按照向导的提示操作。重命名模型的导航属性,使其更具描述性,并指示实体之间的关系。保存并构建项目。

步骤五:创建域服务

在NWAnalytics.Web项目中添加一个新的项。从已安装的模板中选择Visual C#\Web\Domain Service Class模板。在添加新的域服务类时,按照向导的提示进行选择,然后点击确定。保存并构建项目。

步骤六:填充产品维度TreeView控件

从Visual Studio工具箱中拖动TreeView控件到MainPage.xaml,并将其命名为tvProduct。然后,需要为TreeView控件添加一个层次数据模板,并将其绑定到域服务的Products代理类。最终的XAML代码应该类似于以下片段:

<TreeView x:Name="tvProduct"> <TreeView.HierarchicalDataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding ProductName}" /> </StackPanel> </TreeView.HierarchicalDataTemplate> </TreeView>

打开MainPage.xaml.cs,添加对NWAnalytics.Web项目的引用,并添加初始化代码以填充TreeView,如下所示:

public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender, RoutedEventArgs e) { tvProduct.ItemsSource = nwAnalyticsDomainContext.GetProducts(); } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485