将 csv 文件中的新信息附加到现有的历史 qvd

append new information in csv files to existing historical qvd

假设我有一个名为 salesHistory.qvd 的 "master" qvd 文件,我想从文件 salesMarch.csv

追加新的月度销售额

如何在不替换现有信息但添加新月份的情况下做到这一点?

感谢您的帮助!

默认情况下,如果字段相同,QlikView 会自动将 table 加载附加到先前加载的 table。您可以通过使用类似于以下的脚本来利用它:

SalesHistory:
LOAD 
     *
FROM
[salesHistory.qvd] (qvd);

LOAD 
     *
FROM
[salesMarch.csv]
(txt, utf8, embedded labels, delimiter is ',', msq);

STORE SalesHistory INTO [salesHistory.qvd] (qvd);

这首先将您的 salesHistory.qvd 文件的内容加载到 table,然后加载 salesMarch.csv 的内容并将其连接到 SalesHistory table(其中包含 salesHistory.qvd.

的内容

最后的 STORE 步骤通过完全覆盖将这个连接的 table 保存到 salesHistory.qvd 文件中。

在上面的示例中,我们使用 * 作为字段说明符从源文件中加载 所有 字段。这意味着此方法仅在您的 QVD 文件包含与 CSV 文件相同的字段(和字段名称)时才有效。

此外,由于此脚本每次执行时都会加载 QVD 文件的内容,因此如果每月执行一次以上,它将开始复制数据,因为无法确定哪些月份已经存在于QVD 文件。如果您需要每月执行一次以上(可能是由于调整),那么您可能希望考虑将 WHERE 子句应用于从 salesHistory.qvd 加载,以便仅包含前一个数据月已加载。

最后,您可能希望更改 CSV 文件的名称,使其始终相同(例如 salesCurrentMonth.csv),这样您就不必更改脚本中的文件名。