среда, 8 октября 2014 г.

SAS connect to Oracle. Part 1. Libname.

Сегодня рассмотрим способы взаимодействия SAS и Oracle.

Для начала нужно убедиться, что в вашу лицензию входит компонент SAS/ACCESS Interface to Oracle (сделать это можно запустив proc setinit; и убедиться что в перечне компонент есть описанный выше см предыдущий пост).

Есть несколько способов соединения:

Libname:





В таком случае можно обращаться к таблицам oracle следующими способами:

1. Data-set.











2. Proc sql.












Хочется отметь, что второй вариант более подходит для людей который изначально привыкли писать SQL запросы.

В следующем посте рассмотрим альтернативный способ соединения с БД Oracle.

SAS connect to Oracle. Part 2. Pass-Through.

Мы уже рассмотрели способ соединения с Oracle по средством libname.

Теперь рассмотрим способ Pass-Through или еще такой способ называют push down.

В данном случае выполняемый код "проваливается в базу данных" и обратно возвращается результат запроса.
















Прошу обратить внимание, что время выгрузки идентично примерам из предыдущего поста и составляет чуть меньше 10 секунд.

А теперь добавим еще один параметр readbuff=100000 в строку соединения и получим:













И лога видно, что время выгрузки меньше 5 секунд на 1 миллион записей. В принципе с этим параметром можно поиграть, но при такой конструкции про него лучше не забывать.

С уважением,
Николай.

SAS connect to Oracle. Part 3. BULKLOAD.

В предыдущих примерах мы рассматривали задачу загрузки данных из Oracle в SAS.
Теперь же давай попробуем из положить из SAS в Oracle.

1. Data set.














В данном примере мы видим, что время выгрузки данных в Oracle существенно больше чем время загрузки, а именно более 2-х минут против 10 секунд загрузки.

 2. Proc sql.















Здесь также видим превышение 2-х минут.

3. Proc sql + BULKLOAD
















В данном примере мы использовали опцию BULKLOAD и время выгрузки уменьшилось с более чем 2-х минут до 11 секунд.

P.S. Для работы параметра BULKLOAD вам необходимо чтобы стоял полный клиент Oracle, а именно в директории Oracle_HOME\\product\11.2.0\client_1\BIN находился файл: sqlldr.exe.
У меня изначально была поставлена легкая версия клиента и этот файл отсутствовал. Пришлось переставлять клиента.

SAS connect to Oracle. Part 4. Hints.

Всем добрый день.

Сегодня рассмотрим задачу использования Oracle Hints при обращении к БД Oracle из SAS.

Для этого вам потребуется всего лишь в строку соединения добавить следующие слова:

preserve_comments

А теперь рассмотрим примеры:
Пример довольно простой - мы хотим узнать сколько строк в некой таблице Oracle

1. Вариант (без preserve_comments)



















Прошу обратить внимание на Log данного запроса из которого видно, что наш parallel hint был вычеркнут из запроса.

2. Вариант (c preserve_comments)
















А в этом варианте видно, что выражение с hint дошло до oracle именно в том виде в котором мы написали.

P.S.

Для получения подробных логов  необходимо использовать подключение следующих опций:





Однако хочу предостеречь от постоянного использования данной опции, т.к. сильно раздуваются лог файлы.

Использовать данную опцию стоит лишь на этапе отладки кода. В дальнейшем ее нужно отключать.
Также данную опцию часто просят включать в службе поддержки SAS для предоставлении более детальных логов в случае возникновения вопросов(ошибок) связанных с взаимодействием с внешними базами данных.

Комментариев нет:

Отправить комментарий