powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Кубы в SAS
17 сообщений из 42, страница 2 из 2
Кубы в 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
17 сообщений из 42, страница 2 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Кубы в SAS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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