SAS ViyaはAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。CASTableからデータを取得する際のパラメータをネストして与える方法について紹介します。
SAS Viyaに接続する
まずはSAS Viyaに接続します。
from swat import *
cashost='localhost'
casport=5570
useremail='dev@sas.com'
userpassword='password'
casauth='~/.authinfo'
conn = CAS(cashost, casport, useremail, userpassword, caslib="casuser")
データをアップロードする
CSVファイルのデータをアップロードします。今回は有名なIRISのデータです。
out = conn.upload('./iris.csv')
Fetchオブジェクトを取得する
Fetchオブジェクトをconnから取得します。
fa = conn.Fetch()
初期状態ではテーブルなども設定されていませんので、パラメータで設定するのですが、この際にプロパティを使ってみます。
fa.params.table.name = 'IRIS'
fa.params.table.caslib = 'casuser'
この時の fa
の内容は次の通りです。
?.table.Fetch(table=dict(caslib='casuser', name='IRIS'))
ソート条件も同様にプロパティとして適用します。
fa.params.sortby[0].name = 'PetalLength'
fa.params.sortby[0].formatted = 'raw'
fa.params.sortby[1].name = 'PetalWidth'
fa.params.sortby[1].formatted = 'raw'
paramsを変更することも、別途取り出して変更もできます。
sortby = fa.params.table.sortby
sortby[0].name = 'PetalWidth'
sortby[0].formatted = 'raw'
sortby[1].name = 'PetalLength'
sortby[1].formatted = 'raw'
sortby
結果は次のようになります。
{0: {'formatted': 'raw', 'name': 'PetalWidth'},
1: {'formatted': 'raw', 'name': 'PetalLength'}}
任意のパラメータを追加した場合
もし、popという要素を追加したとします。
fa.params.pop = 'corn'
この値は自動的にディクショナリ型になります。
fa.params.pop
<bound method xdict.pop of {'table': {'name': 'data.IRIS', 'caslib': 'casuser', 'sortby': {0: {'name': 'PetalWidth', 'formatted': 'raw'}, 1: {'name': 'PetalLength', 'formatted': 'raw'}}}, 'sortby': {0: {'name': 'PetalLength', 'formatted': 'raw'}, 1: {'name': 'PetalWidth', 'formatted': 'raw'}}, 'pop': 'corn'}>
ただし、キーでアクセスすると元の文字列が返ってきます。
fa.params['pop']
'corn'
このようにアクセス方法によって返ってくる値が異なるので注意してください。
まとめ
Fetchオブジェクトにはパラメータとしてアクセスする方法も用意されています。使いやすい方を選択してください。