在处理复杂项目时,经常需要将来自不同来源的数据合并到单一报告中。信息通常分散存储在不同的格式、不同的服务器上,并且可能来自不同的技术。将所有这些信息汇总到一个地方,可以更容易地看到全局视图,理解不同数据层面是如何相互作用的。例如,假设正在处理一个涉及以下内容的项目:在SQL数据库中跟踪客户数据,在Excel表格中跟踪销售数据,以及从代码中的业务对象获取财务数据。如果没有能够合并多个数据源的报告工具,将不得不手动从每个数据源中提取信息,并尝试自己理解它。这是耗时且容易出错的。此外,很难从原始数据中看到整体趋势和模式。
合并数据
复杂的报告工具允许和最终用户将来自广泛数据源的数据合并到单一报告中。它们为不同类型的数据源提供适配器,并允许混合使用它们。对于最终用户来说,不同数据源之间通常没有可见的区别。每种类型的数据都可以以相同的方式使用和报告,而无需知道它来自哪里。
数据整合和可视化
除了提供来自不同来源的数据外,报告工具还可以帮助数据整合。可以在不同的数据源之间添加关系,根据业务需求规范化或聚合数据,并格式化值。许多报告工具允许创建自定义的,甚至是交互式的图表和图形,这有助于直观地可视化数据。这使得识别可能不容易从原始数据中看出的趋势和模式变得更加容易。
报告工具的另一个优势是,它们可以帮助自动化数据分析中的许多繁琐和耗时的任务。例如,可以使用它们来安排定期生成和发送给利益相关者的报告,或者在满足某些条件时触发警报。这有助于和最终用户保持对项目的了解,并确保始终使用最新的信息。
当添加功能,如报告,到应用程序时,总是需要做出关键的构建或购买决策。是自己编写功能,还是许可商业第三方组件?使用组件通常会导致更一致和可靠的结果。组件已经经过测试,并已证明在各种场景中都能正常工作。它还大大减少了对内部开发资源的需求。开发人员可以专注于构建自定义功能,而不是重新创建常见功能。
组件还可以使项目更容易扩展和维护,因为它们可以根据需要轻松更新或替换。因此,像combit的List & Label这样的复杂报告工具可以节省数年的开发工作。
如果对List & Label感兴趣,请查看在线演示或查看以下步骤和免费且完全功能的试用版中的所有其他内容。
List & Label提供了广泛的数据提供程序,涵盖了所有流行的数据库(例如Microsoft SQL Server、PostgreSQL、MySql、SQLite...)、文件格式(例如XML、JSON、XLS)和网络资源(例如REST)。甚至还有一个特殊的提供程序,允许从这些来源混合数据:
DataProviderCollection
使用非常简单。
从SQL Server提取数据
要访问SQL Server数据,可以使用SqlConnectionDataProvider
类,它接受一个连接作为构造函数参数:
var builder = new SqlConnectionStringBuilder();
builder.DataSource = "dbserver";
builder.InitialCatalog = "CustomerData";
var connection = new SqlConnection(builder.ConnectionString);
var sqlProvider = new SqlConnectionDataProvider(connection);
连接到Excel表格
可以通过XlsDataProvider
类添加Excel数据:
XlsDataProvider xlsProvider = new XlsDataProvider("", true /*firstRowContainsColumnNames*/);
合并数据
要混合这两个来源,可以使用DataProviderCollection
类如下:
DataProviderCollection collection = new DataProviderCollection();
collection.Add(sqlProvider);
collection.Add(xlsProvider);
就是这样。现在,List & Label可以绑定到组合的数据源,提供它所提供的全套可视化和分析。这在桌面(WinForms/WPF)和云应用程序中都有效。一个桌面应用程序将调用:
using (ListLabel LL = new ListLabel())
{
LL.DataSource = collection;
LL.Design();
}
以启动带有组合数据源的设计器。对于云应用程序,只需要实现一个控制器,以便打开Web报告设计器。代码将如下所示:
public override void OnProvideListLabel(ProvideListLabelContext provideListLabelContext)
{
ListLabel LL = new ListLabel();
LL.DataSource = collection;
provideListLabelContext.NewInstance = LL;
}
在内存中混合数据
连接到不同数据源的另一种方式是将它们加载到内存中。这允许一些更高级的功能,如快速过滤和排序数据,这些数据来自通常不可排序的数据源。在上面的例子中,只需要将Excel数据包装在内存数据源中:
InMemoryDataProvider inMemoryProvider = new InMemoryDataProvider();
inMemoryProvider.AddTable(xlsProvider, "Orders");
然后使用这个InMemoryDataProvider
实例代替原始的Excel提供程序。List & Label甚至可以在SQL和包装的XLS数据之间建立关系,使用CrossProviderRelation
:
collection.AddCrossProviderRelation(relationName: "Customers2Orders", parentProvider: sqlProvider, parentTableName: "Customers", parentColumnName: "CustomerID", childProvider: "inMemoryProvider", childTableName: "Orders", childColumnName: "CustomerID");
这为用户提供了一种方便的方式来在设计器中处理数据,将两个数据源混合成一个。
这是List & Label支持的另一种选择。企业版附带了一个现成的、基于浏览器的云报告解决方案,即combit Report Server。它允许交互式处理,并直接支持List & Label的大多数数据源。
从SQL Server提取数据
配置数据源很简单。要连接到SQL Server数据,可以使用以下属性对话框:
从SQL Server提取数据
连接到Excel表格
接下来,可以将Excel表格添加到混合中。通过选择"内存模式",高级功能如排序和过滤变得可用:
将Excel表格添加到数据混合中
合并数据
现在,这两个数据源可以分配给报告模板:
合并数据的报告模板
通过点击"添加关系",配置所需的Excel和SQL数据之间的关系:
添加关系以组合数据