使用 Silverlight TreeView 显示 BI 维度





5.00/5 (2投票s)
它解释了如何使用 Silverlight TreeView 显示商业智能维度表
引言
在商业智能(BI)中,维度提供了一种浏览业务度量(如销量、利润等)的自然方式。例如,信息消费者可能希望按产品维度层次结构查看销量,并能够从其顶层(比如Category
)一直钻取到可能称为 Item 的最底层或叶子节点。在我们的例子中,钻取之所以可能,是因为产品维度层次结构由两层组成:Category
和 Item
。每一层的实体都称为维度成员。以下是一些 Category
层成员的示例:Beverages
和 Produce
。叶子层成员的示例可能是 Chai
和 Pears
。
在 BI 应用程序中,维度层次结构通常使用 TreeView
控件来显示,该控件提供了一种便捷的方式来导航层次结构并过滤其他控件显示的数据。
在这篇文章中,我将向您展示如何
- 从由两个表(即
Category
和Product
表)表示的规范化维度层次结构(雪花模型)创建视图,以及 - 从维度表填充 Silverlight TreeView 控件。
如果您想跟着我一起做,您需要从 这里 下载 Northwind 数据库。
步骤 1:构建 TreeView 源视图
打开 SQL Server Management Studio 并创建以下视图...
...并将其保存为 dim_product_vw
,例如。
为了填充 TreeView
并利用 TreeView
的 HierarchicalDataTemplate,我们必须将数据放入一个表,创建一个主键索引,并在 CategoryID
和 ProductID
之间建立父子关系。这是实现这一点的 T-SQL 代码。
现在,在设计视图中打开 dim_product
表,选择 ProductID
字段,然后通过单击表设计器工具栏上的“设置主键”按钮(参见下面的图 2)将其设为主键。
要设置父子关系,请单击下图 2 中显示的“关系”按钮。
然后单击“外键关系”对话框中的“添加”按钮(参见图 3)。
接下来,单击位于“表和列规范”属性单元格右侧的突出显示的按钮(标有水平省略号)(图 3)。
选择主键和外键以建立父子关系,如下图 4 所示。
关闭这两个对话框以保存结果。
现在,如果您打开 dim_product
表,您应该会看到以下结果(图 5 只显示了前 14 条记录)。
T-SQL 视图(列表 1、2)将由两个表和一个一对多关系表示的 Product
维度的雪花模型转换为一个具有父子关系的表,其中 CategoryID
是父 ID,ProductID
是子 ID。
注意:为简单起见,我硬编码了原始 ProductID
和 CategoryID
值到新的 ProductID
和 CategoryID
的转换(希望这个转换逻辑是不言自明的J),并向层次结构添加了一个根节点“All Products”。
步骤 2:在 Visual Studio 2010 中创建新的启用了 RIA 服务的 Silverlight 项目
此步骤的描述和上面的图片是不言自明的。
步骤 3:创建到 Northwind 数据库的连接并创建 ADO.NET 实体模型
选择 NWAnalytics.Web
项目,然后按 ALT+ENTER 组合键。
选择“设置”选项卡,然后单击链接以创建项目的设置文件。
从下拉框中选择“Connection string”(连接字符串)作为您的设置值类型(如上所示),如果您愿意,可以更改设置的名称使其更具描述性。单击带有水平省略号的按钮(在单击“值”单元格内部之前是不可见的)来设置连接字符串;选择您的服务器实例和数据库。测试连接并单击 OK 按钮(参见图 6,它使事情变得清晰)。
保存解决方案并生成它以清除警告消息。
步骤 4:创建 ADO.NET 实体数据模型
选择 NWAnalytics.Web
项目,然后按 CTRL+SHIFT+A 组合键将新项添加到项目中。从“已安装模板”中,选择 Visual C#\Data\ADO.NET Entity Data model 模板(如图 7 所示)。
在“选择模型内容”(向导的第 1 步)屏幕上,选择“从数据库生成”,然后单击“下一步”按钮;向导问题的其余答案显示在以下屏幕截图中。
重命名模型的导航属性,使它们更具描述性,并指示实体之间的关系,如图 8 所示。
保存并生成项目。
步骤 5:创建域服务
选择 NWAnalytics.Web
项目,然后按 CTRL+SHIFT+A 组合键将新项添加到项目中。从“已安装模板”中,选择 Visual C#\Web\Domain Service Class 模板(如图 9 所示)。
在“添加新域服务类”中,进行如下选择(图 10),然后单击 OK。
保存项目并生成它。
步骤 6:填充 Product Dimension TreeView 控件
从 Visual Studio 工具箱中拖动 TreeView
控件,将其放置在 MainPage.xaml 上,并将其命名为 tvProduct
。以下是相应的生成 XAML 代码。
现在我们需要为 TreeView
控件添加一个 Hierarchical Data Template,并将其绑定到 Domain Services Products 代理类。最终的 XAML 代码应该类似于以下代码片段。
现在打开 MainPage.xaml.cs,添加对 NWAnalytics.Web
项目的引用以及填充 TreeView
的初始化代码,如下所示。
按 F5 开始调试。如果您没有输入任何错误,您应该会看到 TreeView
被填充了 Product
维度成员,如下所示。
历史
- 2010 年 11 月 9 日:初稿