302 Views
October 21, 24
スライド概要
[第10回大阪sas勉強会]
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
大阪SAS勉強会 SASを用いてデータベース接続処理を実施する際の チューニング方法 2024/10/18 SAS Institute Japan Toshiaki Habu C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
注意事項 • 本プレゼンテーションの内容・発表は、私個人の意見や見解に基づくものであり、必ずし も所属会社の公式な立場や意見を代表するものではありません. • 前回の本勉強会に参加させて頂き、面白そうだからエントリーしてみました. 1SASプログラマーとしての発表になります. C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
はじめに • 皆さんが利用されているSASからデータベース(OracleやらPostgres)を利用してい る方はいらっしゃいますか? • 近年、治験以外のデータを取り扱うケースの問い合わせが増えております.どのように取 り扱うべきか?等を含め、色々とお問い合わせを頂く事がございます. (例:Real World Dataのデータ処理等) • 直ぐには使う事はないかもしれませんが、SASがどのようにデータベースを扱っているか? のアーキテクチャ含め説明させて頂ければと思います. • 目標:SASのDB処理のアーキテクチャを理解し、どのような対応が出来るか把握する C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
DBへのアクセスについて • SAS製品(SAS Foundation=Base SAS)からDB上のデータへアクセスする際は、SAS環境に導 入したDB接続クライアントソフトウェアを介して接続/アクセスします.よって、事前にSASサーバーへ接続 対象DBに合わせた接続クライアントソフトウェアをインストール、接続設定を行う必要があります. DBサーバー SAS環境(SASサーバー・PC SAS) Access製品 一部抜粋 紹介 ・Oracle ・DB2 ・SQL Server ・Redshift ・Teradata ・Netezza ・MySQL ・・・他 SAS Foundation ①Base SAS + ②Access製品 ③DB接続クライアントソフトウェア DBインスタンス • Oracleへアクセスする場合、①Base SAS、②Access Interface to Oracle or ODBCといった SAS製品以外に、③DB接続クライアントソフトウェアとしてOracle Clientソフトウェア、もしくはOracle ODBCドライバをSAS環境へインストールし、接続設定を行う必要があります C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
Access製品の仕組みについて SASのデータステップにおける処理ステップ DBサーバー SAS環境(SASサーバー・PC SAS) SAS Foundation Base SAS + Access製品 ①SASコードを実行 ②Access製品がSQLへ変換する (Push Down:暗黙的Passthrough) ⑥DB側にて処理が出来な かった内容をSASプログラムに て実施. C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d. ③DB接続クライアントソフトウェア DBインスタンス ③DB接続クライアントがDBに SQLを投げる ④SQLに従い処理をし,デー タをSAS側へ送る ⑤DBより送られてきたデータを 受信
Access製品の仕組みについて 実行処理速度を上げる為のポイント(ボトルネックになりやすい箇所) DBサーバー SAS環境(SASサーバー・PC SAS) ココ SAS Foundation Base SAS + Access製品 ①SASコードを実行 ②Access製品がSQLへ変換する (Push Down:暗黙的Passthrough) ⑥DB側にて処理が出来な かった内容をSASプログラムに て実施. C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d. ③DB接続クライアントソフトウェア DBインスタンス ③DB接続クライアントがDBに SQLを投げる ④SQLに従い処理をし,デー タをSAS側へ送る ⑤DBより送られてきたデータを 受信 ココ
Access製品の仕組みについて 実行処理速度を上げる為のポイント(ボトルネックになりやすい箇所) DBサーバー SAS環境(SASサーバー・PC SAS) ココ SAS Foundation Base SAS + Access製品 ③DB接続クライアントソフトウェア DBインスタンス SAS環境とのデータのやり取りを減らすこと大事. ① Passing Function(SASの機能をDB側にて実行できる変数)を使う. 公開されているマニュアルに例示あり SAS Help Center: Passing SAS Functions to Oracle ①DB側にて処理をしたいSQLを書けるのであれば、execute(明示的Pass-through)の機能を利用する. ②発行しているSQLを確認し、より最適な処理が実行できないか検討する options sastrace=',,,d' sastraceloc=saslog nostsuffix msglevel=i; C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
Passing Function • SASのプログラミングマニュアルにてData Accessの部分に記載あり SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc /jp/pgmsascdc /9.4_3.5/pgmsaswlcm /home.htm C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.
SQL Procedure: execute • 例文: SASのAccess製品は、SASのデータステップをSQLへ変 換していますが、このプロシジャを利用するとそのままDB側 へSubmitすることが可能です. Proc sql; Execute( DB側で処理をしたいSQL ) Quit; SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc/en/pgmsascdc/9.4 _3.5/sqlproc/n0tpd3yaqvep53n1g8wahav3hgco.htm C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d. DBにSubmitをしたい最適なSQLが解る方は、こちらの 方法にて実行する事により、より高速に処理が出来る可 能性があります.
SASTRACE= SAS System Option • 例文: options sastrace=',,,d' sastraceloc=saslog nostsuffix; 本Optionをつける事で、Data StepにてDBに SubmitしたSQLがログファイルに出力されます. libname mydblib oracle user=myusr1 password=mypwd1 schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear; SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc/en/pgmsascdc/9.4 _3.5/acreldb/n0732u1mr57ycrn1urf24gzo38sc.htm C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d. 発行しているSQLにて無駄な処理が無いか?を確 認する為に利用できます.
Thank you!! 貴社環境に適した高速化を検討したい場合、SASのコンサルティングサービス (有償支援)を活用する事も可能です. 私のような小童ではなく、ガチ勢が多くいますので、必要に応じご検討ください. C op yrig ht © SAS In st i t ut e In c . Al l ri gh t s res erv e d.