こんにちは。CData Software Japanリードエンジニアの杉本です。
今回はCData Garoon Driverで新しく追加された機能である「予定」データのユーザー指定、ユーザー横断で取得する機能を紹介したいと思います。
なお、この機能はすべてのテクノロジーラインナップが対象となっています。
ODBC・JDBC・ADO.NET・Excel Add-in 、CDataSyncなどで利用可能です。
通常の予定の取得
今回取得したいデータは以下のようなGaroonで管理されているユーザーの予定データです。
CData Driverでは以下のようなSQLで予定データを取得することができるのですが
SELECT * FROM [Events];
取得できる予定は接続に使っているユーザー情報に紐付いた予定データだけになっていました。
そのため、今までのバージョンでは他のユーザーの予定を取得したい場合、接続情報に指定しているユーザーを変更する必要があり、ちょっと手間でした。
ユーザー指定で予定を取得する場合
この予定の取得が最新バージョンのドライバーでユーザー指定ができるようになりました!
Where句の条件式に「TargetType」に「user」を指定し、「Target」で対象となるユーザーIDを指定します。
例えば、ユーザーIDが「1」となっているユーザーの予定を取得する場合は、以下のようなクエリになります。
SELECT * FROM [Events] WHERE [targetType] = 'user' AND [target] = 1;
なお、ユーザーIDは「Users」テーブルから取得できます。
SELECT * FROM [Users];
ユーザー横断で予定を取得する場合
ここで気になるのは、「すべてのユーザーの予定を取得したい時は、ユーザーの数分だけSQLを実行しないといけないの? UNION?」ということではないでしょうか。
最新バージョンでは、そこもシンプルにリクエストできるようになっています。
以下のようにサブクエリを使って、UsersテーブルからユーザーIDを取得し、INで条件指定を行います。
SELECT * FROM [Events] WHERE ([targetType] = 'user') AND ([target] IN (SELECT Id FROM [Users]));
これで以下のように複数ユーザーの予定を取得できます。
CDataSyncを使って、ユーザー横断で予定を複製
この機能はもちろん、CDataSyncでも利用できます。ユーザーの予定を横断的に取得して、活動状況を分析したい時とかに良いですね。
設定は簡単でGaroonの接続を作成し、
対象のジョブを作成したら、カスタムクエリの追加で以下のSQLを入力します。
REPLICATE [Events] SELECT * FROM [Events] WHERE ([targetType] = 'user') AND ([target] IN (SELECT Id FROM [Users]))
これで、ユーザー横断的な予定のレプリケーションが実施できます。
おわりに
これ以外にも日々様々な追加機能が登場していますので、「こんなことできないの?」「こういう機能がほしい」といったリクエストがあれば、お気軽にお問い合わせください。