Проверка папки на наличие файлов (Qlikview, Qlik Sense)

Автор PadijVD, 19 марта 2016, 03:49:51

« назад - далее »

PadijVD

Добрый день форумчане!
Есть такая необходимость, проверить папку на наличие в ней файлов для загрузки, если есть файлы выполнить основной скрипт, если нет файлов то просто загрузить старые данные.
Вопрос заключается в том что как проверить папку на наличие файлов?

admin

Привет.
Для проверки на наличие файла используйте комбинацию функций len() и filesize().


SET vFileExists = if(len(FileSize($1)) > 0, 1, 0);

PadijVD

Привет!
Не могу понять как указать папку для проверки.
И оператор нужно использовать Let, а не Set или я не прав?

kvv

Цитата: PadijVD от 19 марта  2016, 10:52:22  
Привет!
Не могу понять как указать папку для проверки.
И оператор нужно использовать Let, а не Set или я не прав?

Привет.
Можно вот так:
Directory D:\QlikView\EachFiles;

PadijVD

Привет.
пробую так
//Директория хранения файлов
DIRECTORY d:\...\В Qlik\;

//Проверяем папку
LET vFileExists = if(len(FileSize($1))>0, 1, 0);

//Действие

if vFileExists=0 then
load
*
From D:\...\*.qvd (qvd);
exit script;
end if


В результате значение переменной всегда = 0


admin

Привет, сделайте проще
if len(filesize('путь'))>0 then
...
endif

PadijVD

Спасибо всем за помощь!
Сделал так:
Set a = 'd:\...\В Qlik\*.xml';

LET vFileSize = FileSize(a);
if vFileSize=0 or IsNull(vFileSize) then
load
*
From ...\*.qvd (qvd);
exit script;
end if

LoryMax

если приходится некоторые qvd занулять, чтобы места они не занимали. есть возможность удалять файлы из скрипта?

kvv

Привет.
Есть такая возможность.
1. Можно сделать таблицу с одной строки:
Data:
LOAD * Inline [
ERASE, 1
];

И данную таблицу выгрузить с тем названием, qvd-файл который нужно затереть:
STORE * From Data into last.qvd (qvd);
В результате создаться qvd-файл с маленьким размером.

2. Второй вариант:
EXECUTE cmd.exe /c del "last.qvd";

LoryMax


LoryMax

Цитата: kvv от 21 сентября  2016, 01:49:34  
2. Второй вариант:
EXECUTE cmd.exe /c del "last.qvd";

Сейчас решил прописать код по удалению файлов - в итоге идет ошибка:
EXECUTE statement not available in this script mode: [код]
Какие нюансы? использую QS.

admin

Привет.
В стандартном режиме скрипта Qlik Sense ( и Desktop в том числе) этот оператор не поддерживается.
Подробнее здесь.
Тоже предстоит столкнуться с подобной задачей. Планирую выгружать в csv перечень файлов для удаления, и обрабатывать этот перечень уже на сервере.

kvv

#12
Цитата: LoryMax от 25 сентября  2016, 07:42:03  
Цитата: kvv от 21 сентября  2016, 01:49:34  
2. Второй вариант:
EXECUTE cmd.exe /c del "last.qvd";

Сейчас решил прописать код по удалению файлов - в итоге идет ошибка:
EXECUTE statement not available in this script mode: [код]
Какие нюансы? использую QS.

Привет.
Да, есть нюанс в QlikView. С Qliksense, к сожалению, не работаю.
Смотреть прикрепленный файл 02.png

millik

Цитата: admin от 25 сентября  2016, 08:41:16  
Привет.
В стандартном режиме скрипта Qlik Sense ( и Desktop в том числе) этот оператор не поддерживается.
Подробнее здесь.
Тоже предстоит столкнуться с подобной задачей. Планирую выгружать в csv перечень файлов для удаления, и обрабатывать этот перечень уже на сервере.

Стандартный режим можно отключить как у десктопа так и у сервера.
И я давно его уже вырубил, потому что слишком уж много ограничений он накладывает. Самое банальное - невозможность обратиться к источнику данных напрямую, обязательно использовать lib.

LoryMax

Каким образом отключить стандартный режим?

Яндекс.Метрика