跳至正文
首页 » 博客 » WinPivotGrid – it’s not just for OLAP anymore…

WinPivotGrid – it’s not just for OLAP anymore…

介绍FlatDataSource

适应和克服

</table

WinPivotGrid-它不只是OLAP了…

WinPivotGrid通常与OLAP (联机分析处理) 数据相关联,用作MDX和XMLA数据源的前端。它还支持通过FlatDataSource类呈现非分层数据。

本文讨论在15.2发行版中添加的新数据库适配器类,以便于在WinPivotGrid控件中显示从数据库表获得的数据。

“Olap’ 到底是什么意思?

OnLineA分析P火箭。

好吧,这就是首字母缩略词中的每个字母所代表的意思。我会把正式的定义推迟到OLAP.com,想必谁能比我解释得更好:

“OLAP是许多商业智能 (BI) 应用程序背后的技术。OLAP是一种功能强大的数据发现技术,包括无限的报告查看,复杂的分析计算以及预测性“ 假设 ”方案 (预算,预测) 计划的功能。”

行… 听起来很酷。数据发现、无限的报告查看、复杂的计算等。是的,所有这些东西听起来像我想在我的应用程序。我怎么得到的?

请使用OLAP-并保留服务器。

因此,将商业智能整合到应用程序中的一种方法是熟悉Microsoft的SQL Server Analysis Services (SSAS) 模型。您可能需要在服务器配置,用户权限,与SQL server集成等方面进行一些停留,然后当然还要进行数据挖掘,维度,多维数据集,角色,kpi的实际业务…… 以及我忽略的一些首字母缩略词。

知道要点了吗?这一切都不是非常困难的,但可能是耗时的-如果你还没有访问这些东西,那就更是如此。如果您可以绕过所有这些SSAS业务,直接进入用户对数据进行切片和切块的部分,就像在精美的OLAP服务器上一样,那不是很好吗?

经过专门设计,您可以获得所有整洁的多维数据表示 (以及随之产生的所有切片,切块和过滤),而无需OLAP服务器,FlatDataSource类是在14.2版本中引入的。所有你需要的是一个标准的,花园的品种。NET类和IEnumerable实现,该实现包含构成数据集的此类的实例。您使用此IEnumerable实现创建FlatDataSource实例,将其分配给WinPivotGrid的DataSource属性,这真的是它…

那是什么?你不相信我?好吧,让我们通过一个快速的例子一步一步地经历它。

  1. 的。NET类

    让我们假设你有一个。NET类命名CustomerOrder,具有描述给定产品的订单所需的所有数据,该订单由给定客户在给定日期制作。哦,是的-随着该产品的价格…… 当您不包括此类内容时,财务人员就会变得不健康。

    这样一个类的C # 实现看起来像这样:

  2. IEnumerable实现

  3. 现在我们需要一个IEnumerable实现,它由这个CustomerOrder类的实例组成,每个实例代表一个实际订单。我们将假设这一部分是不言而喻的,并继续创建FlatDataSource实例,我们使用该实例将这些数据提供给WinPivotGrid控件。该代码看起来像这样:

  4. 最终结果

  5. 如您所见,我们从 “非OLAP” 数据源生成的数据显示在WinPivotGrid中,就像它是由OLAP查询生成的一样。用户可以以他们喜欢的任何方式对数据进行切片,切块和过滤:

  6. 缺失的部分

  7. 精明的读者会注意到,在第2节的IEnumerable实现中,在第44行有一个名为GetData的方法的调用… 并且GetData方法实现无处可寻… 嗯?

    现在,我可以给您一个常见的借口,例如 “超出本文的范围” 或我个人最喜欢的借口,“为简洁起见而省略” (好像互联网空间不足,而我节省了几千字节在这里将避免即将到来的厄运)。事实是,里面没有什么花哨的东西,但它确实代表了几百行代码,主要涉及数据库查询和表连接以及所有这些好东西,这很可能是本文的重点,但是对于想要使用WinPivotGrid显示来自 “常规” 数据库的数据的任何人来说仍然是感兴趣的。

    等一下-你说的是几百行代码吗 ??? 一饮而尽。是的,我就是这么说的。您必须连接到数据库,在几个不同的表中查询它,创建代理类的实例来保存扁平数据,并将生成的记录集获取到包含这些代理类实例列表的IEnumerable实现中。当然不是火箭科学,只是乏味的体力劳动。一定有更好的方法… 对吗?

为了解决此缺点,在Infragistics.Olap.DataSource.Flat程序集Infragistics.Olap.FlatData.Adapters中添加了一个新的命名空间。此命名空间包含两个新类: SqlAdapterOleDbAdapter ,每个类表示WinPivotGrid控件与数据库表或查询之间的关联。

这些适配器极大地简化了查询 “标准” (即非OLAP数据库) 和在WinPivotGrid控件中呈现结果的操作。在最简单的情况下,只需要设置两个属性-一个用于建立与数据库的连接字符串,另一个用于定义要返回的数据的SQL语句。

下面的代码示例让您了解这些适配器的工作原理:

在结束时。

希望您会同意这些数据适配器大大简化了在WinPivotGrid控件中呈现标准数据库数据的问题。如果这里介绍的任何材料不清楚,或者您有进一步的问题,请在WinPivotGrid论坛,我们很乐意帮助你。