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

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

« предыдущая - следующая »

PadijVD

марта 19, 2016, 03:49:51 pm Последнее редактирование: сентября 28, 2016, 07:13:49 am от admin
Добрый день форумчане!
Есть такая необходимость, проверить папку на наличие в ней файлов для загрузки, если есть файлы выполнить основной скрипт, если нет файлов то просто загрузить старые данные.
Вопрос заключается в том что как проверить папку на наличие файлов?

admin

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


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

PadijVD

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

kvv

Цитата: PadijVD от марта 19, 2016, 10:52:22 pm
Привет!
Не могу понять как указать папку для проверки.
И оператор нужно использовать 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 pm
2. Второй вариант:
EXECUTE cmd.exe /c del "last.qvd";


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

admin

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

kvv

сентября 26, 2016, 01:42:12 pm #12 Последнее редактирование: сентября 26, 2016, 01:44:07 pm от kvv
Цитата: LoryMax от сентября 25, 2016, 07:42:03 pm
Цитата: kvv от сентября 21, 2016, 01:49:34 pm
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 pm
Привет.
В стандартном режиме скрипта Qlik Sense ( и Desktop в том числе) этот оператор не поддерживается.
Подробнее здесь.
Тоже предстоит столкнуться с подобной задачей. Планирую выгружать в csv перечень файлов для удаления, и обрабатывать этот перечень уже на сервере.


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

LoryMax

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

Рейтинг@Mail.ru Яндекс.Метрика