PI OLEDB Provider/EnterpriseはSQLベースでPIタグの値やAFの属性の情報を取得できる言語です。
PI OLEDBにはEnterpriseとProviderがあり、それぞれAF, Data Archiveへのアクセスを担当しています。
PI OLEDB Enterprise : AF
PI OLEDB Provider : PI Data Archive
また、OLEDBの言語以外に、JDBC, ODBCの言語も使用可能です。
それぞれの言語に対応した製品がございます。(PI JDBC Driver, PI ODBC Driver)
これらを総称してPI SQL Frameworkと呼びます。
これらの製品はPIのアセットや時系列データを抽出する際にPI Systemがあたかもリレーショナルデータベースであるかのように取得することが可能です。
これらの製品は主に他システムがSQLベースで作られている際にその別システムに統合する時などに使用されます。
今回はPI OLEDB Enterprise/ Providerを紹介します。しかし、これらのクエリはPI JDBC、PI ODBC Driversなどでも同様となります。
インストーラーはダウンロードセンターからダウンロードしてインストールします。
https://techsupport.osisoft.com/Downloads/All-Downloads/
SQLのクエリ作成方法
PI SQL Commanderが利用できます。
SQLのSelect文の知識があれば、PI SQL Frameworkを使用するのは難しくありません。
詳しくない方はインターネットで調べると沢山出てきます。以下は例です。
PI OLEDB Enterprise/ Providerインストール後、スタートよりすべてのプログラム > PI System > PI SQL Commanderを起動します。
まずはPI OLEDB Enterpriseを利用したAFへのアクセスをしてみます。
OLEDB Data Sources > AF Servers 内にあるAF Serverの接続したいサーバー名にて
右クリック > Connect またはダブルクリックで接続します。Windows Integrated Securityが選択されていることを確認してください。
「Catalogs」を開くと、複数のAFデータベースが確認できます。
特定のAF Databaseを展開し、Asset > Tables 以下のElementテーブルを右クリックします。
「Execute Predefined Query…」を選択します。
該当するデータベースのElementの情報が表示されます。
以下のような式がデフォルトで入ってきます。
SELECT * FROM [OSIsoft].[Asset].[Element] WHERE DBReferenceTypeID IS NOT NULL
Where以下を抜くとすべてのElementが表示されます。
SELECT * FROM [OSIsoft].[Asset].[Element]
今度は属性を確認してみます。
ElementAttributeテーブルを右クリックし、「Execute Predefined Query…」を選択します。
SELECT ea.* FROM [OSIsoft].[Asset].[ElementHierarchy] eh INNER JOIN [OSIsoft].[Asset].[ElementAttribute] ea ON ea.ElementID = eh.ElementID WHERE eh.Path = N'\' -- root elements OPTION (FORCE ORDER)
こちらもWHERE区を抜くとすべての属性が表示されます。
ElementAttributeテーブルはElementHierarchyテーブルと結合させてPathが確認できます。
INNER JOINがテーブル結合を行っている部分です。
よく使うので、慣れておく必要があります。
属性の値を確認したい場合、データベース > Data > Tables > Snapshot / Archive テーブルを利用します。
右クリックし、「Execute Predefined Query…」でクエリの確認が可能です。
利用できるテーブルについては以下をご参照ください。
利用できるStatementは以下です。
PI OLEDB ProviderによるPI Data Archiveへのアクセスもほとんど同様となります。
PI Servers > Server名より接続し、Catalogs > piarchive > Tables を利用すると、タグの値が取得できます。
picomp, picomp2はRecorded Valuesを取得できます。
piinterpはInterpolated Valuesとなります。
pisnapshotはsnapshot値となります。
それぞれのテーブルについては以下に記載がございます。
PI OLEDB Enterprise/ Providerのクエリはそんなに難しくありません。
PI SQL Commanderを利用してクエリの書き方をチェックし、他のRelational DatabaseやC#などでクエリを使用してみるのがよいでしょう。
以下はVisual Studioを利用してC#にてPI OLEDB Enterpriseを使用した例です。
PI OLEDB Enterpriseのin (プレースホルダ)の書き方(C#)
なお、PI OLEDB ProviderはPI Data Archiveに対して書き込みができますが、PI OLEDB Enterpriseは書き込み(Insert)をサポートしていない点は注意が必要です。
さらにサンプルを確認したい方はPI SQL Commanderのヘルプ > Query Compendiumを開いてみてください。
多くのサンプルクエリが表示されます。
詳細はユーザーマニュアルをご参照くださいませ。
疑問点がありましたら、Japan PI Square に質問をぜひ投稿してください。
AF SDK、 PI Web APIの使い方を学習したい方は以下を参考にしてください。
AF SDKにてPI Data Archiveから値を取得する(基礎)
PI Web APIの使い方(基礎)