各製品の資料を入手。
詳細はこちら →Elasticsearch へLogstash 経由でWorkday のデータをロードする方法
全文検索サービスElasticsearch のETL モジュール「Logstash」とCData JDBC ドライバを使って、Workday のデータを簡単にロードする方法をご紹介。
最終更新日:2022-07-22
この記事で実現できるWorkday 連携のシナリオ
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Elasticsearch は、人気の分散型全文検索エンジンです。データを一元的に格納することで、超高速検索や、関連性の細かな調整、パワフルな分析が大規模に、手軽に実行可能になります。Elasticsearch にはデータのローディングを行うパイプラインツール「Logstash」があります。CData Drivers を利用することができるので、30日の無償評価版をダウンロードしてあらゆるデータソースを簡単にElasticsearch に取り込んで検索・分析を行うことができます。
この記事では、CData Driver for Workday を使って、Workday のデータをLogstash 経由でElasticsearch にロードする手順を説明します。
Elasticsearch Logstash でCData JDBC Driver for Workday を使用
- CData JDBC Driver for Workday をLogstash が稼働するマシンにインストールします。
-
以下のパスにJDBC Driver がインストールされます(2022J の部分はご利用される製品バージョンによって異なります)。後ほどこのパスを使います。この.jar ファイル(製品版の場合は.lic ファイルも)をLogstash に配置します。
C:\Program Files\CData\CData JDBC Driver for Workday 2022J\lib\cdata.jdbc.workday.jar
- 次に、Logstash とCData JDBC ドライバをつなぐ、JDBC Input Plugin をインストールします。JDBC Plugin は最新のLogstash だとデフォルトでついてきますが、バージョンによっては追加する必要があります。
https://www.elastic.co/guide/en/logstash/5.4/plugins-inputs-jdbc.html - CData JDBC ドライバの.jar ファイルと.lic ファイルを、Logstashの「/logstash-core/lib/jars/」に移動します。
Logstash でElasticsearch にWorkday のデータを送る
それでは、Logstash でElasticsearch にWorkday のデータの転送を行うための設定ファイルを作成していきます。
- Logstash のデータ処理定義であるlogstash.conf ファイルにWorkday のデータを取得する処理を書きます。Input はJDBC、Output はElasticsearch にします。データローディングジョブの起動間隔は30秒に設定しています。
- CData JDBC ドライバの.jar をjdbc driver ライブラリにして、クラス名を設定、Workday への接続プロパティをJDBC URL の形でせっていします。JDBC URL ではほかにも詳細な設定を行うことができるので、細かくは製品ドキュメントをご覧ください。
- https://domain.com/subdirectories/ はBaseURL です。
- mycompany(URL の最後のスラッシュの後の部分)はTenant です。
- Workday を開きます。
- 検索バーにView Domain と入力します。
- プロンプトにWorkday Query Language と入力します。
- Allowed Security Group Types のいずれかに、接続するユーザーが含まれていることを確認します。
Workday 接続プロパティの取得・設定方法
ここでは、4つのWorkday API の接続パラメータを設定する方法、およびTenant とBaseURL を取得する方法について説明します。必要なAPI のパラメータが設定され、カスタムOAuth および / またはAzure AD API クライアントを作成したら、接続の準備は完了です。
接続の前提条件
API / 前提条件 / 接続パラメータ
WQL / WQL サービスを有効化(下記参照) / ConnectionType: WQL
Reports as a Service / カタログレポートの設定(ヘルプドキュメントの「データアクセスのファインチューニング」参照) / ConnectionType:
Reports
REST / 自動で有効化 / ConnectionType: REST
SOAP / 自動で有効化 / ヘルプドキュメントのWorkday SOAP API への認証を参照
BaseURL およびTenant の取得
BaseURL およびTenant プロパティを取得するため、Workday にログインしてView API Clients を検索します。 この画面では、Workday はBaseURL とTenant の両方を含むURL であるWorkday REST API Endpoint を表示します。
REST API Endpoint のフォーマットは、
https://domain.com/subdirectories/mycompany です。ここで、
例えば、REST API エンドポイントがhttps://wd3-impl-services1.workday.com/ccx/api/v1/mycompany の場合、 BaseURL はhttps://wd3-impl-services1.workday.com であり、Tenant はmycompany です。
WQL サービスを有効化
Workday WQL API を介して接続するには、はじめにWQL Service を有効にする必要があります。
Workday への認証
Basic 認証以外のほとんどのWorkday 接続では、認証のためにOAuth ベースのカスタムAPI クライアントアプリケーションを作成する必要があります。これには、ユーザーがAzure AD 資格情報を介して接続するエンタープライズインストールも含まれます。 Workday への認証につての詳細は、ヘルプドキュメントの「Workday への認証」セクションを参照してください。
input { jdbc { jdbc_driver_library => "../logstash-core/lib/jars/cdata.jdbc.workday.jar" jdbc_driver_class => "Java::cdata.jdbc.workday.WorkdayDriver" jdbc_connection_string => "jdbc:workday:User=myuser;Password=mypassword;Tenant=mycompany_gm1;Host=https://wd3-impl-services1.workday.com" jdbc_user => "" jdbc_password => "" schedule => "*/30 * * * * *" statement => "SELECT Worker_Reference_WID, Legal_Name_Last_Name FROM Workers WHERE Legal_Name_Last_Name = 'Morgan'" } } output { Elasticsearch { index => "workday_Workers" document_id => "xxxx" } }
Logstash でWorkday のローディングを実行
それでは作成した「logstash.conf」ファイルを元にLogstash を実行してみます。
> logstash-7.8.0\bin\logstash -f logstash.conf
成功した旨のログが出ます。これでWorkday のデータがElasticsearch にロードされました。
例えばKibana で実際にElasticsearch に転送されたデータを見てみます。
GET workday_Workers/_search { "query": { "match_all": {} } }

データがElasticsearch に格納されていることが確認できました。

CData JDBC Driver for Workday をLogstash で使うことで、Workday コネクタとして機能し、簡単にデータをElasticsearch にロードすることができました。ぜひ、30日の無償評価版をお試しください。