- невозможно использовать переменные подстановки (Substitution varaibles) т.к. изменение переменной одним пользователем, может отразиться в расчете другого пользователя
- необходимо дополнительно создавать имена файлов выгрузок с уникальными именами
Предлагаю вам вариант выгрузки данных из одного куба в другой без использования переменных постановки.
Для это нам надо создать шаблон MaxL скрипта, который будет выполнять выгрузку/загрузку и shell-скрипт, который будет создавать копию MaxL c уникальным именем, выставлять необходимые переменные и запускать его.
Шаблон MaxL-скрипта Export.mxl
login user identified by 'password' on localhost;
/* Export data from cube1 */
execute calculation '
FIX (
"VR_Work",
"ACT",
@RELATIVE("&vEntity",0)
)
DATAEXPORT "File" " " "./export_data_&file_id.txt" "#MI";
ENDFIX' on Test.Cube1;
/* Clear data to Cube2 */
execute calculation '
FIX (
"ACT",
@RELATIVE("&vEntity",0)
)
CLEARDATA "VR_Work";
ENDFIX' on TEST.Cube2;
/* Import data to Cube2 */
import database TEST.Cube2 data
from data_file "./export_data_&file_id.txt"
/*using rules_file "some_rule_if_necessary"*/
on error write to "./export_data_&file_id.err";
exit;Shell-скрипт Export.sh
#!/bin/bash #Создаем переменные R=$RANDOM #уникальный идентификатор файлов (можно в конец добавить $R) file_id=`date '+%Y%m%d_%H%M%S'` #создаем Maxl-скрипт из шаблона и проставляем переменые sed -e 's/&file_id/'${file_id}'/' ./export.mxl | sed -e 's/&vEntity/'$1'/' > ./export_${file_id}.mxl #запускаем MaxL ./startMax.sh ./export_${file_id}.mxl
Запускаем скрипт c параметром филиал:
./Export.sh EN_RUSSIA
У нас появятся файлы
- Export_20110909_180650.mxl (MaxL, все переменные уже проставлены)
- Export_20110909_180650.log
- Export_data_20110909_180650.txt - файл с данными
- открывает ./export.mxl
- заменяет &file_id на ${file_id} (в нашем случае 20110909_180650)
- заменяет &vEntity на $1 (в нашем случае EN_RUSSIA)
- записывает изменения в ./export_${file_id}.mxl
Листинг Export_20110909_180650.mxl
login user identified by 'password' on localhost;
/* Export data from cube1 */
execute calculation '
FIX (
"VR_Work",
"ACT",
@RELATIVE("EN_RUSSIA",0)
)
DATAEXPORT "File" " " "./export_data_20110909_180650.txt" "#MI";
ENDFIX' on Test.Cube1;
/* Clear data to Cube2 */
execute calculation '
FIX (
"ACT",
@RELATIVE("EN_RUSSIA",0)
)
CLEARDATA "VR_Work";
ENDFIX' on TEST.Cube2;
/* Import data to Cube2 */
import database TEST.Cube2 data
from data_file "./export_data_20110909_180650.txt"
/*using rules_file "some_rule_if_necessary"*/
on error write to "./export_data_20110909_180650.err";
exit;P.S. Как запустить shell-скрипт из бизнес-правила читай CDF