使用不同的标头加载多个文件

时间:2016-01-26 13:04:10

标签: qlikview

我已成功使用此脚本从多个文件加载数据:

SET ThousandSep=' ';
SET DecimalSep=',';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep=',';
SET MoneyFormat='# ##0,00 €;-# ##0,00 €';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';

Data:
LOAD *, SubField(FileName(), '-', 1) as Regul, FileName() as fileName FROM
[P:\Some\Path\*.csv]
(txt, codepage is 1252, embedded labels, delimiter is '|', msq);

效果很好。

现在我想加载具有不同标题名称的文件,让我们说file A得到以下内容:

HeadA | HeadB | HeadD
0     | 33    | 72

File B

HeadB | HeadC | HeadD
60    | 40    | 30

我爱QlikView将其解释为:

Headers: HeadA | HeadB | HeadC | HeadD
FileA:   0     | 33    | null  | 72
FileB:   null  | 60    | 40    | 30

有没有办法这样做(目前的剧本只用60ko的数据挂了12小时......)?或者我是否必须手动合并我的标题?

1 个答案:

答案 0 :(得分:1)

concatenate load ...功能可以满足您的需求。

诀窍是制作一个虚拟表,其中包含一个你不会首先使用的列(这样它在你可能使用的任何列中都会有空值),然后让* .xls部分运行。另外一行困扰你,你可以在完成后再次通过表并应用where isnull(NotTheHeader)子句

 Data:
 load 1 as NotTheHeader AutoGenerate(1);

 Concatenate 
 Load *, SubField(FileName(), '-', 1) as Regul, FileName() as fileName from
 [P:\Some\Path\*.csv]
 (txt, codepage is 1252, embedded labels, delimiter is '|', msq);