|
|
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Добрый день. Существует ли возможность работы с кубами в SAS без SAS cube studio? Скажем, загрузить его из teradata или oracle в SAS enterprise guide и потом провести аналитику? Буду благодарен любой литературе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 11:49 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не совсем понятно, что значит загрузить из 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 23:42 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
замутить ETL который вытащит данные в SAS, а потом на этих данных построить куб. Как раз это и хотелось сделать... Можно поподробнее о методах построения куба в SAS на основе SAS наборов без SAS OLAP CUBE STUDIO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 14:29 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Поподробнее это можно. Если есть табличка с набором фактов для куба (ну или на чем вы там хотите строить куб), и есть желание строить его скриптом на 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). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 17:48 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
То что нужно. Огромное спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 10:23 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Не за что, если что обращайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 10:33 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Может вопрос покажется очень глупым... но существует ли кардинальное отличие между ETL-процессом с использованием SAS Data Integration Studio и им же на SAS/BASE? Скажем, является ли скрипт на извлечение данных из исходной СУБД с использованием SAS SQL, а затем последующая очистка данных на BASE SAS ETL-процессом? и можно ли настроить календарное автоматическое извлечение данных из исходной СУБД на base SAS (допустим данные должны обновляться раз в неделю)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2011, 14:15 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
И так по порядку: 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). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 11:02 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Вы меня прямо выручили, спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2011, 16:04 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Вообще, можно завести тему "вопросы-ответы по SAS" и там постить различные вопросы, а народ будет давать различные ответы)) может и будет кому-нибудь полезна, такая тема. Текущие вопросы-ответы переросли тему кубы в SAS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 12:02 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГ, Пока вопросы не накопились). А на будущее я только за) вот только в каком разделе создать такую тему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:11 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Ну так как раздела по BI я не нашёл, то думаю можно создать в текущем разделе OLAP и DWH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 22:14 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. в логе ERROR: The PROC OLAP statement is missing a cube path. Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал. Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2012, 02:04 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610, В данном случае SAS ругается на то, что вы не указали путь к директории куда он будет сохранять построенный куб. А куб не зависимо от того MOLAP, ROLAP или HOLAP в любом случае надо куда-то сохранить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 10:02 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610, по поводу разницы между MOLAP или ROLAP. Разница между ними в способах хранения представляемых данных и доступу к ним. В MOLAP у нас есть детальная табличка, а всякие агрегации создаются при построении куба. В ROLAP детальную табличку и агрегации храняться в реляционной БД (они должны быть созданы заранее и потом просто цепляются при построении куба, при построении куба не создаются). Более подробно можно почитать в документе SAS X.X OLAP Server: User's Guide (X.X - нужная вам версия SAS), который можно найдти и скачать на support.sas.com. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:13 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, я наверное неправильно сформулировал вопрос... Я не пойму, почему с использованием опции NO_NWAY куб считается MOLAP (см картинку) http://imglink.ru/show-image.php?id=427afac723deb1013523b5ce969ced36 Обновятся ли (будут ли доступны для mdx запросов) автоматически данные в кубе построенного таким образом при добавлении данных в БД (с учетом того что куб строится по технологии звезда, где таблицами измерений и фактов являются вьюшки из БД) или все-таки Rolap куб в SAS строится каким-то другим образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 20:03 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610, сама по себе опция NO_NWAY не делает куб ROLAP, она указывает на то что не надо делать агрегационные таблички автоматически. Кроме этой опции для ROLAP необходимо создать агрегационые таблицы (с пердсуммироваными данными для всех комбинации измерений) и сослаться на них при построении куба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 09:33 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610, и опять же очень рекомендую почитать указанный мной мануал SAS X.X OLAP Server: User's Guide (X.X - нужная вам версия SAS), там я думаю вы найдете много интересного )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 09:58 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите, плиз, как в 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2012, 04:09 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
RomanFP, не совсем понятно что вы имеет ввиду под "взять последнюю таблицу CNUM"? Судя по коду, вы выбрали некую таблицу из библиотеки "A_SRV" в макропеременную &lastdsn (кстати интересно было бы видеть что вам вывел %put), но потом вы эту переменную во втором запросе не используете, а пишете "INNER JOIN memname t5" (естественно SAS ищет табличку memname в библиотеки work). Я думаю что Вам следует писать следующим образом "INNER JOIN &lastdsn t5" и сразу полегчает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2012, 09:29 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
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 не с проста, видимо в названии таблицы прячется ответ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 09:47 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. в логе ERROR: The PROC OLAP statement is missing a cube path. Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал. Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический. Посмотрите юзер-гайд. Там даны примеры proc olap-ов, которые можно просто скопировать и подправить "под себя". Половина вопросов отпадёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 09:49 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
alex1610Решил попробовать создать куб с помощью rolap сценария. В документации написано используйте NO_NWAY опцию, но примера почему-то нету... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. в логе ERROR: The PROC OLAP statement is missing a cube path. Если использовать опцию path= то все нормально, но тогда я не вижу разницы между обычным Olap сценарием и Rolap. Растолкуйте пожалуйста или ткните в нужный мануал. Вообще задумка создать представления таблиц из БД (view) в SAS и по ним построить rolap-куб с помощью proc olap (измерения и таблица фактов построены на основе sql запросов к БД). Интерес чисто академический. Там, кстати, метаданные ещё настроить надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 09:50 |
|
||
|
Кубы в SAS
|
|||
|---|---|---|---|
|
#18+
АГ, Спасибо за ответ. Не получилось у меня добиться желаемого результата. Видимо далек от sql SAS EG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2012, 07:36 |
|
||
|
Кубы в 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?all=1&fid=49&tid=1858307]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 189ms |

| 0 / 0 |

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