2012-07-04 7 views
1

У меня есть несколько файлов по умолчанию: «data_YYYY.MM.xslx» Мне нужно загрузить все эти файлы в одну таблицу qlikview, но когда я это сделаю:Как загрузить скрипт загрузки, который загружает несколько файлов в одну таблицу

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

Я получаю Tab, Tab-1, файлы Tab-2 для каждого файла.

I`ve также судимое сделать:

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

с тем же эффектом.

Если кто-то знает способ, как это сделать, пожалуйста, помогите.

ответ

3

Этот хак работает для меня:

tmp: 
LOAD @1 inline [@1]; 
Tab: 
Concatenate load Name, Number from [data_*.csv]; 
+0

Спасибо, что конкатенация нагрузка работает. Для моего случая: load Name, Number from [data _ *. Csv]; теперь будет создавать только 2 таблицы, но они будут связаны с использованием синтетического ключа, который мне не нравится. – zhihong

0

Вот еще один способ, если имена файлов разные

Tab: нагрузки Имя, Номер с [data_1.csv]; join (Tab) load Name, Number from [data_2.csv];

+1

Спасибо за ответ. Ваш путь будет работать, если имена статические и известны раньше. Я уверен, что это будет полезно для кого-то. – gabba

1

Вы можете сделать это следующим образом:

Load * from data_*.csv; 

Просто используйте маску в имени файла.

+0

SPASIBO (Спасибо) Fedya! По пути я получаю таблицы Tab, Tab-1, Tab-2 для каждого файла. Посмотрите на мой вопрос. – gabba

5

Этот вопрос не имеет смысла, если вы не указали некоторые детали.

QlikView будет неявно добавляет все данные в исходной таблице 'Tab' заявлением, такие как:

Tab: нагрузки имя, номер из [данных _ * CSV.] (TXT);

Обратите внимание на формат файла, указанный в скобках.

Добавление данных неявно происходит, когда таблица всегда загружается точно такими же именами полей, как и уже созданная таблица. Таким образом, в вашем примере первый обнаруженный файл представляет собой загрузку данных из этого файла. Предполагая, что имена полей действительно указаны в соответствии с вашим вопросом, результирующая таблица должна содержать два поля: «Имя» и «Число». Когда второй файл встречается с помощью подстановочного подстановочного соответствия, происходит второй нагрузка, и он будет добавлять эти данные в таблицу «Tab».

Если вы хотите НЕ полагаться на конкатенацию IMPLICIT (терминология QlikView для добавления данных в существующую таблицу), вы можете написать цикл FOR, чтобы загружать ваши файлы вместо виста, используя явный префикс загрузки CONCATENATE, чтобы указать на таблицу, которую вы хотите для добавления данных в.

E.g.

// QV Хитрость 'объявить' столика

Tab: НАГРУЗКИ нуль() AS Название AutoGenerate (1) ГДЕ RecNo() < 0;

ДЛЯ КАЖДОГО файла IN filelist ('data_ *.csv ')

CONCATENATE (' Tab ') LOAD * FROM [$ (файл)] (txt);

следующий файл

1

И для полноты один путь с петлей (здесь с помощью QVD файлов):

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

(. Зная имена)