こんにちは。CData Software Japanリードエンジニアの杉本です。
本記事では、各種 Web API を ODBC / JDBC / ADO.NET といった標準のDB接続規格でアクセスできるようにするCData API Driverを用いて、IEYASUの API を各種ツールから接続する方法を紹介します。
ExcelやAccess・Power BIなどのエンドユーザーが利用するUIベースのツールはもちろん、Visual StduioやEclipseといった開発ツールからも接続することが可能です。
対象 API
IEYASUは無料から初められるクラウドベースの勤怠管理システムです。
IEYASU APIでは、ユーザー情報や日次・月次の勤怠データ、勤怠レポートなどを取得するAPIが提供されています。
https://ieyasu.co/docs/api.html
実現イメージ
この記事では IEYASU APIに対してBIツールやIDEでから接続します。しかしながら、各APIは単純にツールと接続・連携することはできません。
各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料や各種認証方法の処理、メタデータの情報等が無いためです。そのためには基本的にカスタムコネクタを作るか、プログラムを組まなければいけません。
そこで、CData API Driver を用いて、このボトルネックを解決します。
まず、各ツールからはODBCやJDBCインタフェースでSQL(Select文)をCData API Driverに向けて発行してもらいます。そのリクエストを受け取った CData API Driverは、IEYASU の API のエンドポイントに対して、SQL文を解釈し、HTTPリクエスト発行します。
リクエスト後、JSONフォーマットで返ってきたデータをCData API Driverが各種インタフェースフォーマットにデータを変換してツールに返します。
これにより、各種ツールからアドホックにSQLによるリクエストがあったタイミングで最新のデータをIEYASU API から取得することが可能となります。
各種接続シナリオと必要なツール
CData API Driver は様々なツールとの接続に利用できますが、今回は以下のツールを用いて接続する方法を解説していきます。
上記以外のツールからの接続に関しては、以下のページで各種接続方法記事を公開しています。
テーブル一覧
IEYASU API Profileでは、以下のテーブルを提供しています。用途に合わせて、接続してみてください。
テーブル名 | 対応API | 備考 |
---|---|---|
StampLogsByDaily | 日付指定の打刻履歴の一覧 | デフォルトでは現在の日付のデータを取得します。 |
StampLogsByUsers | ユーザー指定の打刻履歴の一覧 | 対象ユーザーを指定する必要があります。 |
Users | ユーザー一覧 | |
WorkOutputsDaily | 指定された日の日次勤怠データの一覧 | デフォルトでは現在の日付のデータを取得します。 |
WorkOutputsMonthly | 指定された月の日次勤怠データの一覧 | デフォルトでは現在の月のデータを取得します。 |
WorkOutputsMonthlyReport | 月次レポートの一覧 | デフォルトでは現在の月のデータを取得します。 |
IEYASU API 利用準備
最初にIEYASUのAPIを利用するために、IEYASU側でAPIの有効化設定を行います。
IEYASUにログインし、「システム管理」画面から「システム設定」に移動して、「編集」ボタンをクリックします。
一覧の中のAPI KEYの設定にある「API KEYの生成」をクリックします。
生成されると以下のようにSecret Keyが表示されるので、これを控えておいて、登録を行います。以上で設定は完了です。
API データ処理用 設定ファイルを作成
続いて、IEYASU の API を CData API Deiver が解釈できるように設定ファイル(API Profile)を作成します。
すでに私が作成したものがあるので、以下のURLからダウンロードしてください。
https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/APIProfiles/IEYASU.apip
保存先フォルダは後ほど使用するので「C:\API Profiles\IEYASU」といった書き込み可能な任意のフォルダに配置してください。
CData API Driver のインストール
各種ツールと IEYASU API を繋ぐために必要となる CData API Driverをインストールします。
基本的なインストール・設定方法は各種Driver共通ですので、ここではODBC Driverを例に説明します。
まず、CData API ODBC Driverの30日間の評価版をダウンロードします。ダウンロードの際には、Emailの登録が必要となります。
https://www.cdata.com/jp/apidriver/download/
ダウンロードしたsetup.exeファイルをBIツールがインストールされているマシンにインストールします。インストールウィザードに従い、EULAを確認した上でインストールを完了します。
※途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。
インストールが完了すると、ODBCのDSN設定のウィンドウが立ち上がります。
以下の項目をセットし、保存します。
プロパティ名 | 値 | 備考 |
---|---|---|
Profile | C:\API Profiles\IEYASU.apip | 予めダウンロードしたIEYASU.apipのパスを指定します。 |
ProfileSettings | APIKey=XXXXX;CompanyName=cdatatest; | APIKeyには予め取得したKeyを指定します。 CompanyNameには接続先のIEYASU ログインURLに含まれる会社のIDを指定します。 |
以上で、CData API Driverの準備は完了です。
Excel から IEYASU API に接続(Excel Add-in for API)
CData Excel Add-in for API をインストール後、Excelを立ち上げるとCDataタブが追加されていることがわかります。このタブから各種操作を実施します。
接続を開始するには、CDataタブから[取得元 API]をクリックします。
最初に接続するためのウィザードが表示されるので、「CData API Driverのインストール」の内容と同様に各種パラメータを入力します。
接続後、対象テーブルを選択し、「OK」をクリックします。また、ここの画面で細かなフィルターやJOINの指定を行うことも可能です。
クリック後、対象のデータが一括で取得できます。
Access リンクテーブル から IEYASU API に接続(CData REST ODBC Driver)
次はCData ODBC Driverを利用して、Access リンクテーブルから接続してみたいと思います。
あらかじめ新規にAccessを立ち上げて、空のデータベースを作成しておきましょう。
続いて「外部データ」タブから「新しいデータ ソース」→「他のソースから」→「ODBC データベース」を選択します。
ウィザードが表示されるので「リンクテーブルを作成」を選択し、「OK」をクリックします。
データソースの選択では「コンピューターデータソース」から事前に作成したCData API Driver用DSNを選択し「OK」をクリック
テーブルの一覧が表示されるので、任意のテーブルを選択し「OK」をクリックします。
設定後、リンクテーブルが追加され、以下のようにIEYASUのデータを閲覧することができるようになります。もちろん、通常通りクエリデザイナーでも使用可能です。
なお、Accessでうまくデータが取得できない場合は「Other」の項目に「SupportAccessLinkedMode = False;」を設定してみてください。
PowerBI から IEYASU API に接続(CData API Driver for Power BI)
最後にCData ODBC Driverを用いて、Power BIからIEYASUの勤怠データを取得します。
PowerBI Desktopを起動して、「データを取得」をクリックします。
データ接続先一覧の中から「CData API」を選択し、「接続」をクリックします。
データソース名は先程登録したIEYASUのDSNを入力し「OK」をクリックします。
テーブルの一覧から対象となるテーブルを選択し「読み込み」をクリックします。
以下のようにIEYASUのデータを読み込みことができます。
あとはPoewr BIの機能を用いて、ビジュアライズに利用することができます。
Tips:対象月や日付の絞り込み方法
「WorkOutputsMonthly」や「WorkOutputsMonthlyReport」はデフォルトで現在の日付の月を元にデータ取得を行います。
もし任意の月を指定したい場合は、「TargetMonth」の項目に対して「=(次の値に等しい)」で任意の月を指定してください。例えば「[TargetMonth] = '2020-11'」
「WorkOutputsDaily」や「StampLogsByDaily」の場合も同様です。「[TargetDay] = '2020-11-20'」といった形式で取得対象の日付を指定できます。
「StampLogsByUsers」の場合は、UserIdを指定します。UserIdは「Users」テーブルで確認することができます。
終わりに
いかがでしたでしょうか。
これ以外にもCData API Driverは各種ETLツールや帳票ツールなどからも接続することが可能です。
以下のCData オンラインナレッジベースには、各種ツールからの接続方法を紹介した記事が多数掲載されているので、是非見てみてください。