【メモ】Aspen SQLplusの使い方・Pythonでデータを読み込む

情報収集

プラントのプロセスデータ(温度、圧力、流量など)を読み込むために使用するソフトとして、Aspen Tech社のAspen Infoplus.21を使用していますが、日本語の情報があまりありません。そこで、ITど素人目線ではありますが、メモを残しておこうと思います。

データ分析に使う前段階として、Aspen SQLplusを用いてトレンドデータを取得し、Pythonで読み込むところまでを記載します。

まず初めに…

最初にお伝えしたいのは「Aspen Tech社のソフトの使い方は、Googleで検索するのではなくヘルプを見た方が良い。ヘルプでわからなければサポートサイトのQ&Aを検索すれば大抵のことがわかる。」ということです。サポートサイトに登録していない方はぜひアカウントを作成してみてください。eLearningも充実しています。

Aspen SQLplusの使い方

まず、SQLとは何か、基本的な使い方を下記のページでお勉強しました。

SQL文とは?基本命令文と書き方をわかりやすく解説!|ITトレンド
SQL文とはデータベースを操作する言語のことで、データの検索や追加などの命令を出す文を指します。Javaなどのプログラミング言語よりも比較的扱いやすく、基本の命令文は4種類しかありません。この記事ではSQL文の概要や基本の命令文、書き方をわかりやすく解説します。SQL文をマスターしてデータベースを管理しましょう。

基本は「SELECT 列名 FROM テーブル名 WHERE 条件;」だそうです。

Aspen SQLplus特有の使い方はヘルプに詳しく記載してあるのですが、最初はどこを見ればよいのかわからなかったので、そのヒントをお伝えします。

テーブル名

プロセスエンジニアとしては、使用するテーブルは「Aggregates Table」「History Table」の2種類に限られると感じました。Aggregates Tableはトレンドを等間隔で取得したいような場合に、History Tableは実際の指示値を取得する場合に使用するようです。

各テーブル名でヘルプを検索すると、各テーブルにおけるSQL文の例文や、列名やWHERE句の書き方の凡例を見ることができますので、真似して書いて実行してみましょう。

WHERE句での条件指定方法

WHERE句ではタグ名を指定することになりますが、複数タグを指定したい場合などどのように書いたらよいかヘルプには書いておらず、SQL文の文法を学ぶ必要がありました。下記のページが参考になります。

SELECT構文:WHEREで検索条件を設定する - 第3章 SQL構文 - [SMART]
SELECT構文の中でも特に重要なWHERE句を紹介します。WHEREを使えるようになると、膨大なレコードの中

これを見ると、下記のような書き方ができそうです。

  • WHERE name = ‘タグ名’
  • WHERE name like ‘タグ名の先頭%’
  • WHERE name in (‘タグ名1’, ‘タグ名2’, ‘タグ名3’)

SQLplusのデータをPythonで読み込む

SQLplusで取得したデータを解析することを想定すると、Pythonで読み込みたいので、方法を調べてみました。

(後ほどAspen公式サポートサイトのQ&Aを検索したところ、何件かヒットしましたので、そちらの情報の方が信頼できると思います)

参考にしたのは下記のQ&Aサイトです。

AspenTech InfoPlus 21 - How to connect and query data
I will be given access to an AspenTech InfoPlus 21 endpoint, but the systems seems to be quite legacy and not very well (publicly) documented.I will need to que...
How to query data from an AspenTech IP21 Historian using PHP?
Is it possible to query data from InfoPlus 21 (IP21) AspenTech using php?I am willing to create a php application that can access tags and historical data from ...

データベースへの接続にはpyodbcというライブラリを使用します。コード例は下記の通りです。

import pyodbc
import pandas as pd

#Aspen SQLplusデータベースに接続
conn = pyodbc.connect("DRIVER={AspenTech SQLplus};HOST=<サーバー名>;PORT=<ポート名>")

#SQL文の記述
sql = "SELECT ts, avg, min, max "\
"FROM aggregates "\
"WHERE name='タグ名' "\
"AND TS BETWEEN '20-NOV-21 00:00' AND '24-NOV-21 00:00'"\
"AND PERIOD = 0:05;"

#pandasで読み込む
data = pd.read_sql(sql,conn)

なお、ポート名はデータソースの設定に用いるAspen ADSAから確認することができます。デフォルトは10014みたいです。

コメント

タイトルとURLをコピーしました