在处理跨不同渠道和不同时间段(例如每日、每月、每年)的销售数据时,以及与去年数据的比较,面临了两个问题。首先,每当映射文件中的任何数据发生变化时,都需要重复加载过程,这不仅包括重新加载Excel文件,还包括重新加载整个事务表。如果网络或数据库出现问题,加载就会失败。其次,当报告每日销售数据时,需要每天重新加载完整的表格,而昨天的数据已经存在,这个过程非常耗时。
这时,使用QVD(QlikView数据)文件就显得尤为重要。可以将这些QVD文件视为中间层,这样前端查询就不会直接运行在数据库上。这些QVD的创建可以在非高峰时段进行(减少网络和数据库负载)。QVD也是加载增量数据(即额外或修改过的记录)的关键。
QVD是QlikView格式的文件,只能由QlikView写入和读取。一个QVD文件可以存储一个表,并且在QVW文件的加载脚本中创建。QVD文件由三部分组成:XML头部描述表中的字段、后续信息的布局和其他元数据;符号表以字节填充格式存储;实际的表数据以位填充格式存储。
QVD文件为QlikView应用程序提供了许多优势,包括但不限于以下几点:
- 更快的加载时间:从QVD读取数据的速度比其他来源快10-100倍,减少了加载时间。这是因为QVD创建使用的算法与QlikView用于存储内存中数据的算法相同,因此从QVD加载更快。
- 减轻数据库和网络的负载:一旦数据被导出为QVD,就不需要再次连接外部数据库。这减少了对外部数据库和网络的工作负载。此外,当多个QlikView脚本共享相同数据时,只需要从源数据库加载一次。其他应用程序也可以通过QVD文件使用相同的数据。
- QVD的增量加载:只能通过使用QVD进行增量加载(加载数据库中新或修改的详细信息)。与完整加载相比,增量加载显著减少了加载时间。
- 从多个数据源和数据库中整合数据:当从多个数据源获取数据时,使用多层QVD创建一个健壮的模型。
QVD通常是在执行QlikView加载脚本期间使用STORE命令创建的:
STORE <TableName> INTO <Path\FileName.qvd>
最好有一个单独的应用程序来创建QVD文件。这个层用于处理所有与源数据库的交互。这些交互的结果可以快速从QVD文件中重新加载。
要从QVD读取数据,需要编写一个LOAD语句(类似于加载CSV或Excel文件的命令):
LOAD FieldList FROM <Path\FileName.qvd (qvd)>;