我有多个按惯例命名的文件:“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];
具有相同的效果。
如果有人知道怎么做,请帮助。
答案 0 :(得分:5)
这个问题毫无意义,除非你省略了一些细节。
QlikView 将通过以下语句隐式将所有数据附加到原始表'Tab':
选项卡: 从[data _ * .csv](txt);
加载名称,编号请注意括号中指定的文件格式。
当表加载的表字段名与已创建的表完全相同时,会隐式发生附加数据。因此,在您的示例中,遇到的第一个文件构成了该文件的数据加载。假设根据您的问题确实引用了字段名称,结果表中应该包含两个字段:“Name”和“Number”。当通过通配符匹配遇到第二个文件时,会发生第二次加载,并将该数据附加到表'Tab'。
如果您不希望依赖IMPLICIT连接(QlikView术语将数据附加到现有表),那么您可以使用显式CONCATENATE加载前缀写入FOR循环以加载文件而不是指向您希望的表格将数据附加到。
E.g。
// QV技巧'声明'表格
选项卡: LOAD null()AS名称 自动生成(1) 在哪里RecNo()< 0;
FOR EACH file IN filelist('data _ * .csv')
CONCATENATE( '标签') LOAD * FROM [$(file)](txt);
NEXT文件
答案 1 :(得分:4)
这个黑客对我有用:
tmp:
LOAD @1 inline [@1];
Tab:
Concatenate load Name, Number from [data_*.csv];
答案 2 :(得分:1)
你可以这样做:
Load * from data_*.csv;
只需在文件名中使用掩码。
答案 3 :(得分:1)
为了完整性,使用循环(这里使用qvd文件)的一种方式:
FOR Each db_schema in '2013-07','2013-08','2013-09'
LOAD ...., db_schema
FROM `x-$(db_schema)`.`qvd` (qvd);
next;
(知道名字。)
答案 4 :(得分:0)
如果文件名不同,这是另一种方法
选项卡: 从[data_1.csv]加载名称,编号; 加入(Tab) 从[data_2.csv]加载名称,编号;