1

我有多个按约定命名的文件:“data_YYYY.MM.xslx”我需要将所有这些文件加载​​到一个 qlikview 表中,但是当我这样做时:

Tab:
load Name, Number from [data_*.csv];

我得到每个文件的 Tab、Tab-1、Tab-2 文件。

我也尝试过:

Tab:
add load Name, Number from [data_*.csv];

具有相同的效果。

如果有人知道如何做到这一点,请帮助。

4

5 回答 5

5

这个问题没有任何意义,除非你省略了一些细节。

QlikView通过如下语句将所有数据隐式附加到原始表“Tab”:

选项卡:从 [data_*.csv] (txt) 加载名称、编号;

请注意括号中指定的文件格式。

每当使用与已创建的表完全相同的字段名称加载表时,就会隐式地附加数据。因此,在您的示例中,遇到的第一个文件构成了该文件中的数据负载。假设确实根据您的问题引用了字段名称,则结果表中应包含两个字段:“名称”和“编号”。当通过通配符匹配遇到第二个文件时,将进行第二次加载,并将该数据附加到表“Tab”中。

如果您不希望依赖隐式连接(用于将数据附加到现有表的 QlikView 术语),那么您可以编写一个 FOR 循环来加载您的文件,而不是使用显式 CONCATENATE 加载前缀指向您希望将数据附加到的表.

例如

// QV 技巧来“声明”一个表

标签: LOAD null() AS Name AUTOGENERATE(1) WHERE RecNo() < 0;

对于文件列表中的每个文件('data_*.csv')

CONCATENATE('Tab') 加载 * FROM [$(file)] (txt);

下一个文件

于 2013-09-19T21:49:08.753 回答
4

这个技巧对我有用:

tmp:
LOAD @1 inline [@1];
Tab:
Concatenate load Name, Number from [data_*.csv];
于 2012-07-04T15:39:01.850 回答
1

你可以这样做:

Load * from data_*.csv;

只需在文件名中使用掩码。

于 2013-06-04T17:25:28.660 回答
1

为了完整性,一种循环方式(这里使用 qvd 文件):

FOR Each db_schema in '2013-07','2013-08','2013-09'
LOAD ...., db_schema
FROM `x-$(db_schema)`.`qvd` (qvd);
next;

(知道名字。)

于 2013-10-07T10:54:22.967 回答
0

如果文件名不同,这是另一种方法

选项卡:从 [data_1.csv] 加载名称、编号;join (Tab) 从 [data_2.csv] 加载名称、编号;

于 2012-08-16T20:15:43.180 回答