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/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 миллион записей. В принципе с этим параметром можно поиграть, но при такой конструкции про него лучше не забывать.
С уважением,
Николай.
Теперь рассмотрим способ 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 в 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 для предоставлении более детальных логов в случае возникновения вопросов(ошибок) связанных с взаимодействием с внешними базами данных.
Сегодня рассмотрим задачу использования Oracle Hints при обращении к БД Oracle из SAS.
Для этого вам потребуется всего лишь в строку соединения добавить следующие слова:
preserve_comments
А теперь рассмотрим примеры:
Пример довольно простой - мы хотим узнать сколько строк в некой таблице Oracle
1. Вариант (без preserve_comments)
Прошу обратить внимание на Log данного запроса из которого видно, что наш parallel hint был вычеркнут из запроса.
2. Вариант (c preserve_comments)
А в этом варианте видно, что выражение с hint дошло до oracle именно в том виде в котором мы написали.
P.S.
Для получения подробных логов необходимо использовать подключение следующих опций:
Однако хочу предостеречь от постоянного использования данной опции, т.к. сильно раздуваются лог файлы.
Использовать данную опцию стоит лишь на этапе отладки кода. В дальнейшем ее нужно отключать.
Также данную опцию часто просят включать в службе поддержки SAS для предоставлении более детальных логов в случае возникновения вопросов(ошибок) связанных с взаимодействием с внешними базами данных.
Комментариев нет:
Отправить комментарий