CData Software Blog

クラウド連携のCData Software の技術ブログです。

esa API を各種ツールから連携可能なコネクタ・ドライバー化:CData API Driver

f:id:sugimomoto:20210514142358p:plain

こんにちは。CData Software Japanリードエンジニアの杉本です。

本記事では、各種 Web APIODBC / JDBC / ADO.NET といった標準のDB接続規格でアクセスできるようにするCData API Driverを用いて、esaAPI を各種ツールから接続する方法を紹介します。

ExcelAccess・Power BIなどのUIベースのツールやAsteriaなどのETLツールはもちろん、Visual StduioやEclipseといった開発ツールからも接続することが可能です。

esa とは?

esaクラウドベースの情報共有サービスです。

esa.io

f:id:sugimomoto:20210514142113p:plain

親しみやすいUIと、「情報を育てる」という観点でチームがどんどん情報を育てていけるような仕組み・機能が充実しているところが特徴的なサービスですね

f:id:sugimomoto:20210514142120p:plain

また外部から記事の投稿や取得を行うためのAPIをも充実しています。

docs.esa.io

f:id:sugimomoto:20210514142127p:plain

今回はこのAPIを使って、様々なツールとの連携を実現しています。

実現イメージ

この記事では esa APIに対して Excel や Power BI・Asteria といった各種ツールからの接続方法を紹介します。しかしながら、各APIは単純にツールと接続・連携することはできません。

各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料や各種認証方法の処理、メタデータの情報等が無いためです。そのためには基本的にカスタムコネクタを作るか、プログラムを組まなければいけません。

f:id:sugimomoto:20210514142417p:plain

そこで、CData API Driver を用いて、このボトルネックを解決します。

まず、各ツールからはODBCJDBCインタフェースでSQL(Select文)をCData API Driverに向けて発行してもらいます。そのリクエストを受け取った CData API Driverは、esaAPI のエンドポイントに対して、SQL文を解釈し、HTTPリクエスト発行します。

リクエスト後、JSONフォーマットで返ってきたデータをCData API Driverが各種インタフェースフォーマットにデータを変換してツールに返します。

f:id:sugimomoto:20210514142424p:plain

これにより、各種ツールからアドホックSQLによるリクエストがあったタイミングで最新のデータをesa API から取得することが可能となります。

各種接続シナリオと必要なツール

CData API Driver は様々なツールとの接続に利用できますが、今回は以下のツールを用いて接続する方法を解説していきます。

上記以外のツールからの接続に関しては、以下のページで各種接続方法記事を公開しています。

www.cdata.com

f:id:sugimomoto:20201124135144p:plain

テーブル(ビュー)一覧

esa API Profileでは、以下のテーブル(ビュー)を提供しています。用途に合わせて、接続してみてください。

テーブル名 対応API 備考
CommentStargazers コメント-スター
Emojis Emoji
Invitations 招待
Members メンバー
PostComments 記事-コメント Numberの条件指定が必須
Posts 記事
PostStargazers 記事-スター Numberの条件指定が必須
PostWatchers 記事-Watch Numberの条件指定が必須
Stats 統計情報
Teams チーム
TeamsComments チーム-コメント
Users ユーザー

esa API 利用準備

esaAPIに接続するにはAPI用のアクセスキーが必要となります。

アクセスキーはesaの画面の「ユーザー設定」画面で生成できます。

f:id:sugimomoto:20210514142434p:plain

「Application」に移動し「Personal Access Tokens」にある「Generate new token」をクリックしましょう。

f:id:sugimomoto:20210514142439p:plain

任意のToken Description を入力し「Save」をクリックします。なお、CData API DriverではRead APIのみ使用しています。

f:id:sugimomoto:20210514142445p:plain

保存後、以下のようにPersonal Access Tokenが生成されるので控えておきます。

f:id:sugimomoto:20210514142451p:plain

API データ処理用 設定ファイルを作成

続いて、esaAPI を CData API Deiver が解釈できるように設定ファイル(API Profile)を作成します。

すでに私が作成したものがあるので、以下のURLからダウンロードしてください。

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/APIProfiles/esa.apip

保存先フォルダは後ほど使用するので「C:\API Profiles」といった書き込み可能な任意のフォルダに配置してください。

f:id:sugimomoto:20210514142634p:plain

CDataSyncの場合は手順を後述します。

CData API Driver のインストール

各種ツールと esa API を繋ぐために必要となる CData API Driverをインストールします。

基本的なインストール・設定方法は各種Driver共通ですので、ここではODBC Driverを例に説明します。

まず、CData API ODBC Driverの30日間の評価版をダウンロードします。ダウンロードの際には、Emailの登録が必要となります。

https://www.cdata.com/jp/apidriver/download/

f:id:sugimomoto:20201027111336p:plain

ダウンロードしたsetup.exeファイルをBIツールがインストールされているマシンにインストールします。インストールウィザードに従い、EULAを確認した上でインストールを完了します。

f:id:sugimomoto:20201027111341p:plain

※途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。

インストールが完了すると、ODBCのDSN設定のウィンドウが立ち上がります。

以下の項目をセットし、保存します。

プロパティ名 備考
Profile C:\API Profiles\esa.apip 予めダウンロードしたesa.apipのパスを指定します。
ProfileSettings TeamName=YOUR_TEAM;APIKey=_gt0KD8pqpJT-fbXPvsxhfAxWkXLzNSDn2nNjz-mr34; 予め取得したアクセスキーとTeamNameを指定します。

f:id:sugimomoto:20210514142642p:plain

※APIKeyはダミーの値です。

入力後、接続テストをクリックし以下のようなメッセージが表示されればOKです。

f:id:sugimomoto:20210408170804p:plain

以上で、CData API Driverの準備は完了です。

Excel から esa API に接続(Excel Add-in for API

CData Excel Add-in for API をインストール後、Excelを立ち上げるとCDataタブが追加されていることがわかります。このタブから各種操作を実施します。

接続を開始するには、CDataタブから[取得元 API]をクリックします。

f:id:sugimomoto:20201116171024p:plain

最初に接続するためのウィザードが表示されるので、「CData API Driverのインストール」の内容と同様に各種パラメータを入力します。

f:id:sugimomoto:20210514142649p:plain

接続後、対象テーブルを選択し、「OK」をクリックします。また、ここの画面で細かなフィルターやJOINの指定を行うことも可能です。

f:id:sugimomoto:20210514142654p:plain

f:id:sugimomoto:20210514142659p:plain

クリック後、対象のデータが一括で取得できます。

f:id:sugimomoto:20210514142705p:plain

Access リンクテーブル から esa API に接続(CData REST ODBC Driver)

次はCData ODBC Driverを利用して、Access リンクテーブルから接続してみたいと思います。

あらかじめ新規にAccessを立ち上げて、空のデータベースを作成しておきましょう。

f:id:sugimomoto:20210514142713p:plain

続いて「外部データ」タブから「新しいデータ ソース」→「他のソースから」→「ODBC データベース」を選択します。

f:id:sugimomoto:20210514142719p:plain

ウィザードが表示されるので「リンクテーブルを作成」を選択し、「OK」をクリックします。

f:id:sugimomoto:20210514142724p:plain

データソースの選択では「コンピューターデータソース」から事前に作成したCData API Driver用DSNを選択し「OK」をクリック

f:id:sugimomoto:20210514142730p:plain

テーブルの一覧が表示されるので、任意のテーブルを選択し「OK」をクリックします。

f:id:sugimomoto:20210514142734p:plain

設定後、リンクテーブルが追加され、以下のようにesaのデータを閲覧することができるようになります。もちろん、通常通りクエリデザイナーでも使用可能です。

f:id:sugimomoto:20210514142739p:plain

なお、Accessでうまくデータが取得できない場合は接続プロパティの「Other」の項目に「SupportAccessLinkedMode = False;」を設定してみてください。

f:id:sugimomoto:20201124134536p:plain

PowerBI から esa API に接続(CData API Driver for Power BI)

続いて CData Power BI Connector を用いて、Power BIからesaのデータを取得します。

PowerBI Desktopを起動して、「データを取得」をクリックします。

f:id:sugimomoto:20201027111449p:plain

データ接続先一覧の中から「CData API」を選択し、「接続」をクリックします。

f:id:sugimomoto:20201027111519p:plain

データソース名は先程登録したesaのDSNを入力し「OK」をクリックします。

f:id:sugimomoto:20210514142748p:plain

テーブルの一覧から対象となるテーブルを選択し「読み込み」をクリックします。

f:id:sugimomoto:20210514142752p:plain

以下のようにesaのデータを読み込みことができます。

f:id:sugimomoto:20210514142758p:plain

あとはPoewr BIの機能を用いて、ビジュアライズに利用することができます。

f:id:sugimomoto:20210514142805p:plain

ASTERIA Warp から esa API に接続(CData JDBC API Driver)

ASTERIA Warpでは、フローデザイナーを使って、データ処理のプロセスを作成します。

フローデザイナーの基本的な利用方法についてはWarpフローデザイナー操作ガイドをご覧ください。

CData JDBC API Driver はインストール後、「cdata.jdbc.api.jar」と「cdata.jdbc.api.lic」のファイルをAsteriaのドライバーフォルダ(asteriahome5\system\lib\drivers)に登録します。

f:id:sugimomoto:20210218152238p:plain

その後、ASTERIA Warpを立ち上げて、フローデザイナーにアクセスし、CData JDBC Driverを使用するために接続を追加します。

画面左のコネクションペイン上にある電源ボタンをクリックをクリックすると、「コネクションの作成」ダイアログが表示されます。

f:id:sugimomoto:20210216154030p:plain

「接続種別」として「RDB」を選択、「名前」に分かりやすい名前を設定し「OK」をクリックします。

f:id:sugimomoto:20210514142812p:plain

作成したコネクションをダブルクリックすると、画面右のインスペクタに接続プロパティが表示されます。 「基本」タブでドライバーのパスとURLをそれぞれ設定します。

プロパティ名 備考
ドライバーのパス 例)C:\asteriahome5\system\lib\drivers\cdata.jdbc.api.jar 前節でインストールした API JDBC Driverファイルへの参照を指定します。
URL jdbc:api:Profile=C:\API Profiles\esa.apip;
ProfileSettings="TeamName=YOUR_TEAM;APIKey=_gt0KD8pqpJT-fbXPvsxhfAxWkXLzNSDn2nNjz-mr34;";
esaに接続するための接続文字列を指定します。

f:id:sugimomoto:20210514142817p:plain

これでコネクションの作成は完了です。あとは、フロー上でデータベースタブにある「RDBGet」のコンポーネントを使って、データの取得が行なえます。

「RDBGet」フローに配置し、ダブルクリックします。

f:id:sugimomoto:20210216180653p:plain

コネクションの選択ウインドウが表示されるので、先程作成したesaのコネクションを選択しましょう。

f:id:sugimomoto:20210514142826p:plain

その後、SQLビルダーが表示されるので、取得したいデータが格納されている、任意のテーブルとカラムを選択します。

f:id:sugimomoto:20210514142831p:plain

あとは、「モデルにSQLを適用する」をクリックし「SELECTテスト」でデータが正常に取得できているかを確認します。

以下のようにデータが参照できれいればOKです。設定を保存してSQLビルダーを閉じます。

f:id:sugimomoto:20210514142837p:plain

取得した結果を使って後続のフローが構成できます。

CDataSync から esa に接続

www.cdata.com

CDataSyncではデータソースとして、esaに接続することができます。

なお、CDataSync Windows版の場合は「esa.apip」のプロファイルをSyncの本体が存在するフォルダの「www\app_data\profiles」に配置してください。profilesフォルダが存在しない場合は手動で作成してください。

C:\ProgramData\CData\sync\profiles

f:id:sugimomoto:20210514142842p:plain

Cross-Platform版の組み込みJettyで構成している場合は、以下のフォルダにapipファイルを配置します。

/opt/sync/profiles

配置後、CDataSyncを起動すると以下のようにデータソースとして esaが利用できるようになります。

f:id:sugimomoto:20210514142848p:plain

接続プロパティは以下の通り設定します。

プロパティ名 備考
Profile Settings TeamName=YOUR_TEAM;APIKey=_gt0KD8pqpJT-fbXPvsxhfAxWkXLzNSDn2nNjz-mr34;

f:id:sugimomoto:20210514142855p:plain

入力後、「接続」ボタンをクリックし、esaへのログインが完了すればOKです。

併せて、任意の同期先の接続情報も構成しておきましょう。

f:id:sugimomoto:20210311162106p:plain

接続完了後、新しくジョブを作成します。

f:id:sugimomoto:20210311162114p:plain

先程作成したesaのコネクションを選択します。

f:id:sugimomoto:20210514142902p:plain

ジョブを作成した後は、esa の同期対象となる任意のテーブルを選択しましょう。

f:id:sugimomoto:20210514142907p:plain

データのプレビュー画面で、実際に取得が成功しているかどうかを確認できました。

f:id:sugimomoto:20210514142913p:plain

あとは、任意のスケジュールを指定してデータのレプリケーションを実行できます。

f:id:sugimomoto:20210311162149p:plain

終わりに

これらツール以外にもCData API Driverは各種ETLツールや帳票ツールなどからも接続することが可能です。

以下のCData オンラインナレッジベースには、各種ツールからの接続方法を紹介した記事が多数掲載されているので、是非見てみてください。

www.cdata.com

また、こういったツールとはどう連携すればいいの? といった問い合わせはテクニカルサポートフォームまでお気軽にどうぞ!

https://www.cdata.com/jp/support/submit.aspx