powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Кубы в SAS
42 сообщений из 42, показаны все 2 страниц
Кубы в SAS
    #37536465
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Существует ли возможность работы с кубами в SAS без SAS cube studio? Скажем, загрузить его из teradata или oracle в SAS enterprise guide и потом провести аналитику? Буду благодарен любой литературе.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37545966
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Не совсем понятно, что значит загрузить из teradata или oracle. Импортировать? Импортировать нельзя.

По своему опыту могу предложить два варианта:
1) С помощью SAS\ACCESS можно подключаться как к teradata, так и к oracle. Собственно замутить ETL который вытащит данные в SAS, а потом на этих данных построить куб.
2) В SAS 9.2 появился SAS Analytics Accelerator 1.2 for Teradata он вроде позволяет делать запросы из SAS на прямую к teradata. Т.е. можно строить куб прямо на данных teradata. Но я ещё не разбирался с этим новым продуктом. Если интересно вот guide по нему http://support.sas.com/documentation/onlinedoc/analyticsaccel/index.html
...
Рейтинг: 0 / 0
Кубы в SAS
    #37547827
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
замутить ETL который вытащит данные в SAS, а потом на этих данных построить куб.

Как раз это и хотелось сделать... Можно поподробнее о методах построения куба в SAS на основе SAS наборов без SAS OLAP CUBE STUDIO.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37548513
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поподробнее это можно. Если есть табличка с набором фактов для куба (ну или на чем вы там хотите строить куб), и есть желание строить его скриптом на SAS Base, а не с помощью всякой визуальной цыганщины, то тут надо использовать оператор proc olap. Если в двух словах, то этот оператор позволяет создавать, обновлять и удалять кубы, дизайнить его структуру и прочее. По большому счету OLAP CUBE STUDIO генерить proc olap и выполняет его. Собственно, зачастую можно не писать proc olap с нуля, а создать куб в STUDIO (или воспользоваться уже существующим), сделать Export Code (будет в контекстном меню, если жмакнуть правой кнопрой на куб) и поправить полученное руками по вкусу. То что получилось использовать для построения\обновления\удаления куба скриптом. Подробно про proc olap можно почитать здесь http://support.sas.com/documentation/onlinedoc/olap/ (выбрав SAS XX OLAP Server: User's Guide, где XX - номер нужной версии SAS).
...
Рейтинг: 0 / 0
Кубы в SAS
    #37549313
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что нужно. Огромное спасибо.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37549330
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не за что, если что обращайтесь.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37554085
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может вопрос покажется очень глупым... но существует ли кардинальное отличие между ETL-процессом с использованием SAS Data Integration Studio и им же на SAS/BASE? Скажем, является ли скрипт на извлечение данных из исходной СУБД с использованием SAS SQL, а затем последующая очистка данных на BASE SAS ETL-процессом? и можно ли настроить календарное автоматическое извлечение данных из исходной СУБД на base SAS (допустим данные должны обновляться раз в неделю)?
...
Рейтинг: 0 / 0
Кубы в SAS
    #37555568
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И так по порядку:
1) Принципиального различия в ETL-процессе созданном в SAS DI Studio и им же на SAS/BASE нет. Собственно, SAS DI по графической схеме процесса генерит код на SAS/BASE и выполняет его. Другой вопрос что он это делает по определенным алгоримтам и не всегда оптимально (генерит много лишнего т.е. код избыточен), а ручками можно завернуть код похитрей (как по архитектуре, так и по логике), да поотимальней. Ну если не требуется каких-то хитрых решений при создании ETL-процессов, а так же требуется наглядность реализации ETL (для бизнесов), то без SAS DI никуда.
2) Естесственно, скрипт на SAS/SQL и SAS/BASE это ETL-процесс, если этот скрипт (набор скриптов) делает "извличение, передачу, загрузку". ETL-процесс - это все же некая совокупность действий для решения задачи ETL, а на чем и как он реализован это дело десятое.
3) Настроить автоматическое обновление конечно можно. Обычно пишется скрипт (набор скриптов) на SAS/BASE, SAS/MACRO, SAS/SQL, etc и потом ставится на регламентное выполнение в batch mode, стандартными средсвами ОС (например, cron для nix или task scheduler для win).
...
Рейтинг: 0 / 0
Кубы в SAS
    #37556342
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы меня прямо выручили, спасибо)
...
Рейтинг: 0 / 0
Кубы в SAS
    #37560646
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, можно завести тему "вопросы-ответы по SAS" и там постить различные вопросы, а народ будет давать различные ответы)) может и будет кому-нибудь полезна, такая тема. Текущие вопросы-ответы переросли тему кубы в SAS.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37560824
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГ,

Пока вопросы не накопились). А на будущее я только за) вот только в каком разделе создать такую тему...
...
Рейтинг: 0 / 0
Кубы в SAS
    #37561967
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так как раздела по BI я не нашёл, то думаю можно создать в текущем разделе OLAP и DWH
...
Рейтинг: 0 / 0
Кубы в SAS
    #37754354
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
proc olap cube=mycube
	NO_NWAY
	fact=Mylib.MyFactTable
;
metasvr host=localhost
	port=8561
	protocol=bridge
	userid="sasadm"
	pw="admin"
	repository=Foundation
	olap_schema="OLAP Schema"
;

...



в логе
ERROR: The PROC OLAP statement is missing a cube path.

Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал.

Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37755075
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610,

В данном случае SAS ругается на то, что вы не указали путь к директории куда он будет сохранять построенный куб. А куб не зависимо от того MOLAP, ROLAP или HOLAP в любом случае надо куда-то сохранить.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37755170
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610,

по поводу разницы между MOLAP или ROLAP. Разница между ними в способах хранения представляемых данных и доступу к ним. В MOLAP у нас есть детальная табличка, а всякие агрегации создаются при построении куба. В ROLAP детальную табличку и агрегации храняться в реляционной БД (они должны быть созданы заранее и потом просто цепляются при построении куба, при построении куба не создаются). Более подробно можно почитать в документе SAS X.X OLAP Server: User's Guide (X.X - нужная вам версия SAS), который можно найдти и скачать на support.sas.com.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37756079
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, я наверное неправильно сформулировал вопрос... Я не пойму, почему с использованием опции NO_NWAY куб считается MOLAP (см картинку)

http://imglink.ru/show-image.php?id=427afac723deb1013523b5ce969ced36


Обновятся ли (будут ли доступны для mdx запросов) автоматически данные в кубе построенного таким образом при добавлении данных в БД (с учетом того что куб строится по технологии звезда, где таблицами измерений и фактов являются вьюшки из БД) или все-таки Rolap куб в SAS строится каким-то другим образом?
...
Рейтинг: 0 / 0
Кубы в SAS
    #37756562
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610,

сама по себе опция NO_NWAY не делает куб ROLAP, она указывает на то что не надо делать агрегационные таблички автоматически. Кроме этой опции для ROLAP необходимо создать агрегационые таблицы (с пердсуммироваными данными для всех комбинации измерений) и сослаться на них при построении куба.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37756593
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610,

и опять же очень рекомендую почитать указанный мной мануал SAS X.X OLAP Server: User's Guide (X.X - нужная вам версия SAS), там я думаю вы найдете много интересного ))
...
Рейтинг: 0 / 0
Кубы в SAS
    #37756759
alex1610
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГ,

Спасибо
...
Рейтинг: 0 / 0
Кубы в SAS
    #37760282
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите, плиз, как в SAS EG прописать "взять последнюю таблицу"CNUM" из библиотеки "A_SRV". Моя попытка неудачно прошла...

PROC SQL INOBS=1;

select max(catt(libname,".",memname))
into :lastdsn
from sashelp.vstable
where libname eq 'A_SRV'
and memname like 'CNUM%MR'
;
%put >>> &lastdsn;


CREATE TABLE WORK.TST001(label="TST001") AS
SELECT DISTINCT t1._date_,
t1.uni_id,
t2.acc_n,
t4.Blo_code,
t5.call_dir,
t5.con_type
FROM EBD_MAR t1 LEFT JOIN WORK.MK_BAD t2 ON (t1.con_typ = t2.Code) LEFT JOIN
EBD_MAR_1 t4 ON (t1.acc_n = t4.ACC_N) INNER JOIN memname t5 ON (t1.app_n =
t5.app_n)

;
quit;



Ошибка: ERROR: File WORK.MEMNAME.DATA does not exist.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37760414
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFP,

не совсем понятно что вы имеет ввиду под "взять последнюю таблицу CNUM"? Судя по коду, вы выбрали некую таблицу из библиотеки "A_SRV" в макропеременную &lastdsn (кстати интересно было бы видеть что вам вывел %put), но потом вы эту переменную во втором запросе не используете, а пишете "INNER JOIN memname t5" (естественно SAS ищет табличку memname в библиотеки work). Я думаю что Вам следует писать следующим образом "INNER JOIN &lastdsn t5" и сразу полегчает.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37767535
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPДобрый день!
Подскажите, плиз, как в SAS EG прописать "взять последнюю таблицу"CNUM" из библиотеки "A_SRV". Моя попытка неудачно прошла...

PROC SQL INOBS=1;

select max(catt(libname,".",memname))
into :lastdsn
from sashelp.vstable
where libname eq 'A_SRV'
and memname like 'CNUM%MR'
;
%put >>> &lastdsn;


CREATE TABLE WORK.TST001(label="TST001") AS
SELECT DISTINCT t1._date_,
t1.uni_id,
t2.acc_n,
t4.Blo_code,
t5.call_dir,
t5.con_type
FROM EBD_MAR t1 LEFT JOIN WORK.MK_BAD t2 ON (t1.con_typ = t2.Code) LEFT JOIN
EBD_MAR_1 t4 ON (t1.acc_n = t4.ACC_N) INNER JOIN memname t5 ON (t1.app_n =
t5.app_n)

;
quit;



Ошибка: ERROR: File WORK.MEMNAME.DATA does not exist.


покажите, что %put выводит.
У вас там like не с проста, видимо в названии таблицы прячется ответ...
...
Рейтинг: 0 / 0
Кубы в SAS
    #37767536
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
proc olap cube=mycube
	NO_NWAY
	fact=Mylib.MyFactTable
;
metasvr host=localhost
	port=8561
	protocol=bridge
	userid="sasadm"
	pw="admin"
	repository=Foundation
	olap_schema="OLAP Schema"
;

...



в логе
ERROR: The PROC OLAP statement is missing a cube path.

Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал.

Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический.

Посмотрите юзер-гайд.
Там даны примеры proc olap-ов, которые можно просто скопировать и подправить "под себя".
Половина вопросов отпадёт.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37767537
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex1610Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
proc olap cube=mycube
	NO_NWAY
	fact=Mylib.MyFactTable
;
metasvr host=localhost
	port=8561
	protocol=bridge
	userid="sasadm"
	pw="admin"
	repository=Foundation
	olap_schema="OLAP Schema"
;

...



в логе
ERROR: The PROC OLAP statement is missing a cube path.

Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал.

Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический.

Там, кстати, метаданные ещё настроить надо...
...
Рейтинг: 0 / 0
Кубы в SAS
    #37769678
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГ,

Спасибо за ответ. Не получилось у меня добиться желаемого результата. Видимо далек от sql SAS EG
...
Рейтинг: 0 / 0
Кубы в SAS
    #37769679
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
neznau,

покажите, что %put выводит. - вообще ничего не выдает :-(
...
Рейтинг: 0 / 0
Кубы в SAS
    #37769823
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPАГ,

Спасибо за ответ. Не получилось у меня добиться желаемого результата. Видимо далек от sql SAS EG

Не может быть SAS EG далеким от sql, потому что там используется ansi sql (куда уж sqlние). Давайте по порядку. Изначально у Вас ругается на то, что в качестве t5 вы используете не подстановку макропеременной &lastdsn, а просто memname. Вы это как я понимаю поправили, теперь возникла проблема что макропеременная пуста. Я готов спорить на бутылку коньяку, что если убрать опцию INOBS=1, то она заполнится (сейчас у Вас, из-за этой опции, берется из таблицы sashelp.vstable только одна первая запись и она естественно может не содержать той таблицы что Вам надо). С какой целью Вы используете эту опцию? Нужна ли она Вам вообще?
...
Рейтинг: 0 / 0
Кубы в SAS
    #37771422
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFP,

для вас самый простой способ - попросить кого-нибудь помочь вам с sas-скриптом, кто в теме.
либо прочитать хелп по каждой команде, которая в том листинге кода, что вы отправили.
у вас не получается потому что недостаточно знаний по sas base\macro, а не потому что sas далёк от sql, ваш случай тривиальный.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37771428
neznau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFP,

плюс к тому, я почти уверен, что вы неправильно поняли задачу.
...
Рейтинг: 0 / 0
Кубы в SAS
    #37775329
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГ и neznau
Я не писал что EG далек от sql, я имел ввиду себя(не являюсь программером).
INOBS=1 - использована на этапе тестирования отработки скрипта. Чтобы не ждать пока отработает вся таблица с огромных кол-вом строк.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Кубы в SAS
    #38453904
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код.
Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу:
A_201309_BC
A_201310_BC
A_201311_BC
...
Рейтинг: 0 / 0
Кубы в SAS
    #38457251
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)?
...
Рейтинг: 0 / 0
Кубы в SAS
    #38461883
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPДобил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код.
Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу:
A_201309_BC
A_201310_BC
A_201311_BC

Вот это упорство )) год бить код ))

Я так понимаю вы хотите при расчете за ноябрь использовать таблицу за предыдущий месяц. Если так, то думаю достаточно использовать такой код (от текущей даты отнимаем месяц и оставляем только год месяц с записью в макропеременную):
Код: sql
1.
2.
3.
data _null_;
    call symput("prev_month", put(intnx('MONTH', today(), -1), YYMMn6.));
run;



Это позволит получить макропеременную prev_month и использовать её потом при формировании имени таблицы A_&prev_month._BC
...
Рейтинг: 0 / 0
Кубы в SAS
    #38461927
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPПопутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)?

Я так понимаю вы хотите запоролить программу в проекте. На сколько мне известно это не возможно. Можно весь проект положить в директорию в SAS Folder доступ к которой имеют только определенные пользователи.
...
Рейтинг: 0 / 0
Кубы в SAS
    #38462913
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГRomanFPДобил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код.
Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу:
A_201309_BC
A_201310_BC
A_201311_BC

Вот это упорство )) год бить код ))

Я так понимаю вы хотите при расчете за ноябрь использовать таблицу за предыдущий месяц. Если так, то думаю достаточно использовать такой код (от текущей даты отнимаем месяц и оставляем только год месяц с записью в макропеременную):
Код: sql
1.
2.
3.
data _null_;
    call symput("prev_month", put(intnx('MONTH', today(), -1), YYMMn6.));
run;



Это позволит получить макропеременную prev_month и использовать её потом при формировании имени таблицы A_&prev_month._BC


АГ, спасибо, как Вы описали - работает "на ура!". Тут в другом загвоздка... Таблицы создаются ~ в середине след. месяца и ссылаться точно на "-1" некорректно. То есть в начале месяца (когда ещё не создана таблица за предыдущий месяц) данный код выпадет в ошибку. И опять же, если потребуется взять последнюю и предпоследнюю таблицы...

Например: 05.11.2013 должны:
A_201308_BC
A_201309_BC
(болеее поздних версий не доступно)

А ~ 15.11.2013 (дата может сдвигаться на +/- 4 дня) взялись:
A_201309_BC
A_201310_BC
(доступна более поздняя версия)

P.S.: "Когда впервые поднял вопрос по этому коду, поменялось требование. Пользователь выбирал дату из календаря и бралась определенная таблица кодом: %let chdate=B_%sysfunc(inputn(&user_date,date9.0),yymmddn8.2)_DE"
...
Рейтинг: 0 / 0
Кубы в SAS
    #38462915
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГRomanFPПопутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)?

Я так понимаю вы хотите запоролить программу в проекте. На сколько мне известно это не возможно. Можно весь проект положить в директорию в SAS Folder доступ к которой имеют только определенные пользователи.

Да, хотелось бы запаролить именно программу. Некоторые особо инициативные юзеры, пытаясь изучить код программы, могут его «поправить», после чего программа начинает выпадать в ошибку, но при этом «никто ничего не трогал» :)
...
Рейтинг: 0 / 0
Кубы в SAS
    #38464745
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPАГ, спасибо, как Вы описали - работает "на ура!". Тут в другом загвоздка... Таблицы создаются ~ в середине след. месяца и ссылаться точно на "-1" некорректно. То есть в начале месяца (когда ещё не создана таблица за предыдущий месяц) данный код выпадет в ошибку. И опять же, если потребуется взять последнюю и предпоследнюю таблицы...

Например: 05.11.2013 должны:
A_201308_BC
A_201309_BC
(болеее поздних версий не доступно)

А ~ 15.11.2013 (дата может сдвигаться на +/- 4 дня) взялись:
A_201309_BC
A_201310_BC
(доступна более поздняя версия)

P.S.: "Когда впервые поднял вопрос по этому коду, поменялось требование. Пользователь выбирал дату из календаря и бралась определенная таблица кодом: %let chdate=B_%sysfunc(inputn(&user_date,date9.0),yymmddn8.2)_DE"

Тогда нужно отталкиваться не от today(), а от даты используемой для именования создаваемой таблицы. Скрипт как-то определяет за какой месяц формировать таблицу? И тогда формируем:

call symput("last_month", put(intnx('MONTH', <дата за которую создаем таблицу>, -1), YYMMn6.)); - это последняя
call symput("prelast_month", put(intnx('MONTH', <дата за которую создаем таблицу>, -2), YYMMn6.)); - это предпоследняя
...
Рейтинг: 0 / 0
Кубы в SAS
    #38464761
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPДа, хотелось бы запаролить именно программу. Некоторые особо инициативные юзеры, пытаясь изучить код программы, могут его «поправить», после чего программа начинает выпадать в ошибку, но при этом «никто ничего не трогал» :)

Демократия не наш метод, только репрессии )), всех инициативных пользователей в отдельную группу и для данной группы разрешить только Read на проект и папку где лежит проект. Особо инициативных назначить ответственными за работоспособность проектов ))), проект не работает лишать премии )))
...
Рейтинг: 0 / 0
Кубы в SAS
    #38472393
RomanFP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АГRomanFPАГ, спасибо, как Вы описали - работает "на ура!". Тут в другом загвоздка... Таблицы создаются ~ в середине след. месяца и ссылаться точно на "-1" некорректно. То есть в начале месяца (когда ещё не создана таблица за предыдущий месяц) данный код выпадет в ошибку. И опять же, если потребуется взять последнюю и предпоследнюю таблицы...

Например: 05.11.2013 должны:
A_201308_BC
A_201309_BC
(болеее поздних версий не доступно)

А ~ 15.11.2013 (дата может сдвигаться на +/- 4 дня) взялись:
A_201309_BC
A_201310_BC
(доступна более поздняя версия)

P.S.: "Когда впервые поднял вопрос по этому коду, поменялось требование. Пользователь выбирал дату из календаря и бралась определенная таблица кодом: %let chdate=B_%sysfunc(inputn(&user_date,date9.0),yymmddn8.2)_DE"

Тогда нужно отталкиваться не от today(), а от даты используемой для именования создаваемой таблицы. Скрипт как-то определяет за какой месяц формировать таблицу? И тогда формируем:

call symput("last_month", put(intnx('MONTH', <дата за которую создаем таблицу>, -1), YYMMn6.)); - это последняя
call symput("prelast_month", put(intnx('MONTH', <дата за которую создаем таблицу>, -2), YYMMn6.)); - это предпоследняя


Таблица является источником данных, а не создается. То есть таблица создается (администраторами единой БД), добавляется в список доступных, далее - используется в запросах, для получения необходимых пользователю данных.
...
Рейтинг: 0 / 0
Кубы в SAS
    #38480078
АГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanFPP.S.: "Когда впервые поднял вопрос по этому коду, поменялось требование. Пользователь выбирал дату из календаря и бралась определенная таблица кодом: %let chdate=B_%sysfunc(inputn(&user_date,date9.0),yymmddn8.2)_DE"

Как поменялось требование? Сейчас вообще дата не задается?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Кубы в SAS
    #39433716
Chervon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Биннинг в сас
...
Рейтинг: 0 / 0
Кубы в SAS
    #39433727
Chervon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Chervon, разные сас макросы
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Кубы в SAS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]