データを取得するFetchオブジェクトの使い方

SAS ViyaはAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです（CASはCloud Analytic Servicesの略です）。CASTableからデータを取得する方法は幾つかありますが、今回はFetchオブジェクトを使う方法について紹介します。

## SAS Viyaに接続する

まずはSAS Viyaに接続します。

```python
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のデータです。

```python
out = conn.upload('./iris.csv')
```

## Fetchオブジェクトを取得する

Fetchオブジェクトをconnから取得します。

```python
fa = conn.Fetch()
```

## Fetchを実行する

Fetchは例えば次のように使います。nameがテーブル名、toは件数です。

```python
fa(table=dict(name='IRIS', caslib='casuser'), to=5)
```

<div class="cas-results-key"><b>&#167; Fetch</b></div>
<div class="cas-results-body">
<div>
<table border="1" class="dataframe"><caption>Selected Rows from Table IRIS</caption>
  <thead>
    <tr style="text-align: right;">
      <th title=""></th>
      <th title="SepalLength">SepalLength</th>
      <th title="SepalWidth">SepalWidth</th>
      <th title="PetalLength">PetalLength</th>
      <th title="PetalWidth">PetalWidth</th>
      <th title="Name">Name</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>5.1</td>
      <td>3.5</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>1</th>
      <td>4.9</td>
      <td>3.0</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4.7</td>
      <td>3.2</td>
      <td>1.3</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4.6</td>
      <td>3.1</td>
      <td>1.5</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5.0</td>
      <td>3.6</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
  </tbody>
</table>
</div>
</div>
<div class="cas-output-area"></div>
<p class="cas-results-performance"><small><span class="cas-elapsed">elapsed 0.00276s</span> &#183; <span class="cas-user">user 0.002s</span> &#183; <span class="cas-sys">sys 0.001s</span> &#183; <span class="cas-memory">mem 0.865MB</span></small></p>

## ソートを指定する

並び替えを実行します。sortbyを指定します。

```python
fa(table=dict(name='IRIS', caslib='casuser'), to=5, sortby=['SepalLength', 'SepalWidth'])
```


<div class="cas-results-key"><b>&#167; Fetch</b></div>
<div class="cas-results-body">
<div>
<table border="1" class="dataframe"><caption>Selected Rows from Table IRIS</caption>
  <thead>
    <tr style="text-align: right;">
      <th title=""></th>
      <th title="SepalLength">SepalLength</th>
      <th title="SepalWidth">SepalWidth</th>
      <th title="PetalLength">PetalLength</th>
      <th title="PetalWidth">PetalWidth</th>
      <th title="Name">Name</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>4.3</td>
      <td>3.0</td>
      <td>1.1</td>
      <td>0.1</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>1</th>
      <td>4.4</td>
      <td>2.9</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4.4</td>
      <td>3.0</td>
      <td>1.3</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4.4</td>
      <td>3.2</td>
      <td>1.3</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4.5</td>
      <td>2.3</td>
      <td>1.3</td>
      <td>0.3</td>
      <td>Iris-setosa</td>
    </tr>
  </tbody>
</table>
</div>
</div>
<div class="cas-output-area"></div>
<p class="cas-results-performance"><small><span class="cas-elapsed">elapsed 0.00236s</span> &#183; <span class="cas-user">user 0.002s</span> &#183; <span class="cas-memory">mem 2.81MB</span></small></p>

## パラメータを記録する

`set_params` を使うとパラメータを保存しておけます。

```python
fa.set_params('table', dict(name='IRIS', caslib='casuser'), 'to', 5)
```

このようにすると、faの内容が固定になります。繰り返し使う時に便利です。

```python
fa
# ?.table.Fetch(table=dict(caslib='casuser', name='IRIS'), to=5)
```

そして、保存しておけば呼び出す際にパラメータ指定も不要になります。

```python
fa()
```

<div class="cas-results-key"><b>&#167; Fetch</b></div>
<div class="cas-results-body">
<div>
<table border="1" class="dataframe"><caption>Selected Rows from Table IRIS</caption>
  <thead>
    <tr style="text-align: right;">
      <th title=""></th>
      <th title="SepalLength">SepalLength</th>
      <th title="SepalWidth">SepalWidth</th>
      <th title="PetalLength">PetalLength</th>
      <th title="PetalWidth">PetalWidth</th>
      <th title="Name">Name</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>5.1</td>
      <td>3.5</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>1</th>
      <td>4.9</td>
      <td>3.0</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4.7</td>
      <td>3.2</td>
      <td>1.3</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4.6</td>
      <td>3.1</td>
      <td>1.5</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5.0</td>
      <td>3.6</td>
      <td>1.4</td>
      <td>0.2</td>
      <td>Iris-setosa</td>
    </tr>
  </tbody>
</table>
</div>
</div>
<div class="cas-output-area"></div>
<p class="cas-results-performance"><small><span class="cas-elapsed">elapsed 0.00194s</span> &#183; <span class="cas-user">user 0.001s</span> &#183; <span class="cas-sys">sys 0.001s</span> &#183; <span class="cas-memory">mem 0.865MB</span></small></p>

## まとめ

Fetchの簡単な使い方を紹介しました。直感的に使えるようになっていますので、すぐに使いこなせるはずです。データ分析の際にお役立てください。