65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Silverlight TreeView 显示 BI 维度

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2010年11月9日

CPOL

5分钟阅读

viewsIcon

25796

它解释了如何使用 Silverlight TreeView 显示商业智能维度表

引言

在商业智能(BI)中,维度提供了一种浏览业务度量(如销量、利润等)的自然方式。例如,信息消费者可能希望按产品维度层次结构查看销量,并能够从其顶层(比如Category)一直钻取到可能称为 Item 的最底层或叶子节点。在我们的例子中,钻取之所以可能,是因为产品维度层次结构由两层组成:CategoryItem。每一层的实体都称为维度成员。以下是一些 Category 层成员的示例:BeveragesProduce。叶子层成员的示例可能是 ChaiPears

在 BI 应用程序中,维度层次结构通常使用 TreeView 控件来显示,该控件提供了一种便捷的方式来导航层次结构并过滤其他控件显示的数据。

在这篇文章中,我将向您展示如何

  • 从由两个表(即 CategoryProduct 表)表示的规范化维度层次结构(雪花模型)创建视图,以及
  • 从维度表填充 Silverlight TreeView 控件。

如果您想跟着我一起做,您需要从 这里 下载 Northwind 数据库。

步骤 1:构建 TreeView 源视图

打开 SQL Server Management Studio 并创建以下视图...

listing_1.png

列表 1

...并将其保存为 dim_product_vw,例如。

为了填充 TreeView 并利用 TreeViewHierarchicalDataTemplate,我们必须将数据放入一个表,创建一个主键索引,并在 CategoryIDProductID 之间建立父子关系。这是实现这一点的 T-SQL 代码。

listing_2.png

现在,在设计视图中打开 dim_product 表,选择 ProductID 字段,然后通过单击表设计器工具栏上的“设置主键”按钮(参见下面的图 2)将其设为主键。

Figure1.png

图 1

要设置父子关系,请单击下图 2 中显示的“关系”按钮。

Figure2.png

图 2

然后单击“外键关系”对话框中的“添加”按钮(参见图 3)。

Figure3.png

图 3

接下来,单击位于“表和列规范”属性单元格右侧的突出显示的按钮(标有水平省略号)(图 3)。

选择主键和外键以建立父子关系,如下图 4 所示。

Figure4.png

图 4

关闭这两个对话框以保存结果。

现在,如果您打开 dim_product 表,您应该会看到以下结果(图 5 只显示了前 14 条记录)。

Figure5.png

图 5

T-SQL 视图(列表 1、2)将由两个表和一个一对多关系表示的 Product 维度的雪花模型转换为一个具有父子关系的表,其中 CategoryID 是父 ID,ProductID 是子 ID。

注意:为简单起见,我硬编码了原始 ProductIDCategoryID 值到新的 ProductIDCategoryID 的转换(希望这个转换逻辑是不言自明的J),并向层次结构添加了一个根节点“All Products”。

步骤 2:在 Visual Studio 2010 中创建新的启用了 RIA 服务的 Silverlight 项目

Figure6.png

Figure7.png

此步骤的描述和上面的图片是不言自明的。

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

选择 NWAnalytics.Web 项目,然后按 ALT+ENTER 组合键。

Figure8.png

选择“设置”选项卡,然后单击链接以创建项目的设置文件。

Figure9.png

从下拉框中选择“Connection string”(连接字符串)作为您的设置值类型(如上所示),如果您愿意,可以更改设置的名称使其更具描述性。单击带有水平省略号的按钮(在单击“值”单元格内部之前是不可见的)来设置连接字符串;选择您的服务器实例和数据库。测试连接并单击 OK 按钮(参见图 6,它使事情变得清晰)。

Figure10.png

图 6

保存解决方案并生成它以清除警告消息。

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

选择 NWAnalytics.Web 项目,然后按 CTRL+SHIFT+A 组合键将新项添加到项目中。从“已安装模板”中,选择 Visual C#\Data\ADO.NET Entity Data model 模板(如图 7 所示)。

Figure11.png

图 7

在“选择模型内容”(向导的第 1 步)屏幕上,选择“从数据库生成”,然后单击“下一步”按钮;向导问题的其余答案显示在以下屏幕截图中。

Figure12.png

Figure13.png

重命名模型的导航属性,使它们更具描述性,并指示实体之间的关系,如图 8 所示。

Figure14.png

图 8

保存并生成项目。

步骤 5:创建域服务

选择 NWAnalytics.Web 项目,然后按 CTRL+SHIFT+A 组合键将新项添加到项目中。从“已安装模板”中,选择 Visual C#\Web\Domain Service Class 模板(如图 9 所示)。

Figure15.png

图 9

在“添加新域服务类”中,进行如下选择(图 10),然后单击 OK。

Figure16.png

图 10

保存项目并生成它。

步骤 6:填充 Product Dimension TreeView 控件

从 Visual Studio 工具箱中拖动 TreeView 控件,将其放置在 MainPage.xaml 上,并将其命名为 tvProduct。以下是相应的生成 XAML 代码。

Figure17.png

现在我们需要为 TreeView 控件添加一个 Hierarchical Data Template,并将其绑定到 Domain Services Products 代理类。最终的 XAML 代码应该类似于以下代码片段。

Figure18.png

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

Figure19.png

按 F5 开始调试。如果您没有输入任何错误,您应该会看到 TreeView 被填充了 Product 维度成员,如下所示。

Figure20.png

历史

  • 2010 年 11 月 9 日:初稿
© . All rights reserved.