|
|
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
neznau, покажите, что %put выводит. - вообще ничего не выдает :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 07:38 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFPАГ, Спасибо за ответ. Не получилось у меня добиться желаемого результата. Видимо далек от sql SAS EG Не может быть SAS EG далеким от sql, потому что там используется ansi sql (куда уж sqlние). Давайте по порядку. Изначально у Вас ругается на то, что в качестве t5 вы используете не подстановку макропеременной &lastdsn, а просто memname. Вы это как я понимаю поправили, теперь возникла проблема что макропеременная пуста. Я готов спорить на бутылку коньяку, что если убрать опцию INOBS=1, то она заполнится (сейчас у Вас, из-за этой опции, берется из таблицы sashelp.vstable только одна первая запись и она естественно может не содержать той таблицы что Вам надо). С какой целью Вы используете эту опцию? Нужна ли она Вам вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 09:49 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFP, для вас самый простой способ - попросить кого-нибудь помочь вам с sas-скриптом, кто в теме. либо прочитать хелп по каждой команде, которая в том листинге кода, что вы отправили. у вас не получается потому что недостаточно знаний по sas base\macro, а не потому что sas далёк от sql, ваш случай тривиальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 22:09 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFP, плюс к тому, я почти уверен, что вы неправильно поняли задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 22:28 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГ и neznau Я не писал что EG далек от sql, я имел ввиду себя(не являюсь программером). INOBS=1 - использована на этапе тестирования отработки скрипта. Чтобы не ждать пока отработает вся таблица с огромных кол-вом строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 03:24 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Добил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код. Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу: A_201309_BC A_201310_BC A_201311_BC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 04:18 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Попутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 03:28 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFPДобил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код. Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу: A_201309_BC A_201310_BC A_201311_BC Вот это упорство )) год бить код )) Я так понимаю вы хотите при расчете за ноябрь использовать таблицу за предыдущий месяц. Если так, то думаю достаточно использовать такой код (от текущей даты отнимаем месяц и оставляем только год месяц с записью в макропеременную): Код: sql 1. 2. 3. Это позволит получить макропеременную prev_month и использовать её потом при формировании имени таблицы A_&prev_month._BC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:31 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFPПопутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)? Я так понимаю вы хотите запоролить программу в проекте. На сколько мне известно это не возможно. Можно весь проект положить в директорию в SAS Folder доступ к которой имеют только определенные пользователи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:41 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГRomanFPДобил я таки код... оказалось всё действительно просто. Как и писалось ранее нужно было макропеременную &lastdsn правильно поместить в код. Теперь возник другой вопрос, как в коде прописать ссылку на предпоследнюю таблицу... Таблицы в библиотеках создаются по типу: A_201309_BC A_201310_BC A_201311_BC Вот это упорство )) год бить код )) Я так понимаю вы хотите при расчете за ноябрь использовать таблицу за предыдущий месяц. Если так, то думаю достаточно использовать такой код (от текущей даты отнимаем месяц и оставляем только год месяц с записью в макропеременную): Код: sql 1. 2. 3. Это позволит получить макропеременную 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" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 04:11 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГRomanFPПопутно вопрос. Есть ли возможность навесить пароль на модуль "Program" (в котором пишется sql код)? Я так понимаю вы хотите запоролить программу в проекте. На сколько мне известно это не возможно. Можно весь проект положить в директорию в SAS Folder доступ к которой имеют только определенные пользователи. Да, хотелось бы запаролить именно программу. Некоторые особо инициативные юзеры, пытаясь изучить код программы, могут его «поправить», после чего программа начинает выпадать в ошибку, но при этом «никто ничего не трогал» :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 04:21 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
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.)); - это предпоследняя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 12:03 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFPДа, хотелось бы запаролить именно программу. Некоторые особо инициативные юзеры, пытаясь изучить код программы, могут его «поправить», после чего программа начинает выпадать в ошибку, но при этом «никто ничего не трогал» :) Демократия не наш метод, только репрессии )), всех инициативных пользователей в отдельную группу и для данной группы разрешить только Read на проект и папку где лежит проект. Особо инициативных назначить ответственными за работоспособность проектов ))), проект не работает лишать премии ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 12:10 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГ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.)); - это предпоследняя Таблица является источником данных, а не создается. То есть таблица создается (администраторами единой БД), добавляется в список доступных, далее - используется в запросах, для получения необходимых пользователю данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 09:39 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFPP.S.: "Когда впервые поднял вопрос по этому коду, поменялось требование. Пользователь выбирал дату из календаря и бралась определенная таблица кодом: %let chdate=B_%sysfunc(inputn(&user_date,date9.0),yymmddn8.2)_DE" Как поменялось требование? Сейчас вообще дата не задается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:28 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=37771428&tid=1858307]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 166ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...