SAS ViyaはAIプラットフォームです。その元になるデータソースとして、CSVやExcel、HTMLなどを指定できますが、さらにSQLite3をそのまま取り込むこともできます。今回はその手順を紹介します。
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")
SQLite3を準備する
SQLite3のデータベースを用意します。これはCSVから読み込む形で作ります。まずはライブラリのインポートから。
import csv
import sqlite3
次にテーブルを作ります。
sqlc = sqlite3.connect('iris.db')
cur = sqlc.cursor()
cur.execute('''CREATE TABLE iris (
sepal_length REAL,
sepal_width REAL,
petal_length REAL,
petal_width REAL,
species CHAR(10));
''')
そしてCSVファイルの内容をSQLite3のデータベースに取り込みます。データはpandas/iris.csvを使います。この処理はSAS ViyaではなくPythonのSQLite3ライブラリの機能です。
with open('iris.csv', 'r') as iris:
data = csv.DictReader(iris)
rows = [ (x['SepalLength'],
x['SepalWidth'],
x['PetalLength'],
x['PetalWidth'],
x['Name']) for x in data]
cur.executemany('''INSERT INTO iris (sepal_length,
sepal_width,
petal_length,
petal_width,
species)
VALUES (?, ?, ?, ?, ?);''', rows)
sqlc.commit()
SQLite3を取り込み
いよいよデータベースを取り込みます。ライブラリを読み込みます。
from swat.cas import datamsghandlers as dmh
dbdmh = dmh.DBAPI(sqlite3, cur, nrecs=10)
取り込みます。
conn.addtable(table='iris_db', caslib='casuser', **dbdmh.args.addtable)
データを確認する
ちゃんと取り込めたかデータを確認します。
conn.columninfo(table=dict(name='iris_db', caslib='casuser'))
Column | ID | Type | RawLength | FormattedLength | NFL | NFD |
---|---|---|---|---|---|---|
0 | sepal_length | 1 | double | 8 | 12 | 0 |
1 | sepal_width | 2 | double | 8 | 12 | 0 |
2 | petal_length | 3 | double | 8 | 12 | 0 |
3 | petal_width | 4 | double | 8 | 12 | 0 |
4 | species | 5 | varchar | 10 | 10 | 0 |
conn.fetch(table=dict(name='iris_db', caslib='casuser'), to=5)
sepal_length | sepal_width | petal_length | petal_width | species |
---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 |
1 | 4.9 | 3.0 | 1.4 | 0.2 |
2 | 4.7 | 3.2 | 1.3 | 0.2 |
3 | 4.6 | 3.1 | 1.5 | 0.2 |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
まとめ
データベースがそのままデータソースとして使えて、さらにSAS Viyaの強力なデータ管理機能が使えるようになります。ぜひお試しください。