PowerShell からWorkday のデータに接続してデータの取得・更新・挿入・削除・CSV エクスポートを実行する方法
CData Cmdlets for Workday を使えば、PowerShell からWorkday に手軽に連携して、データのCRUD やエクスポートを実行できます。
本記事では、Workday への接続方法からCSV エクスポート、データの操作までサンプルコード付きで解説していきます。
Workday への接続を設定
それでは、まずはWorkday への接続設定からはじめていきましょう。接続設定にはCData Workday Cmdlets が必要となります。右側のサイドバーから製品の全機能が使える30日間の無償トライアルがダウンロードできるので、ぜひご利用ください。
インストールが完了したら、プロファイルに以下の行を追加してください。次のPowerShell セッションでモジュールがロードされます。
Import-Module WorkdayCmdlets;
Connect-Workday コマンドを使ってWorkday との接続を設定します。各接続プロパティの取得方法は次に説明します。
$conn = Connect-Workday -User "$User" -Password "$Password" -Tenant "$Tenant" -BaseURL "$BaseURL" -ConnectionType "$ConnectionType"
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/
- https://domain.com(URL のサブディレクトリと会社名の前の部分)はBaseURL です。
- mycompany(URL の最後のスラッシュの後の部分)はTenant です。
例えば、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 を開きます。
- 検索バーにView Domain と入力します。
- プロンプトにWorkday Query Language と入力します。
- Allowed Security Group Types のいずれかに、接続するユーザーが含まれていることを確認します。
Workday への認証
Basic 認証以外のほとんどのWorkday 接続では、認証のためにOAuth ベースのカスタムAPI クライアントアプリケーションを作成する必要があります。これには、ユーザーがAzure AD 資格情報を介して接続するエンタープライズインストールも含まれます。 Workday への認証につての詳細は、ヘルプドキュメントの「Workday への認証」セクションを参照してください。
これで接続設定は完了です。
Workday のデータを取得してCSV にパイプライン
接続が完了したので、Workers テーブルデータを取得して結果をCSV ファイルにエクスポートします。
Select-Workday -Connection $conn -Table Workers | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myWorkersData.csv -NoTypeInformation
このコードでは、Select-Workday から取得した結果をSelect-Object に流して、Export-Csv に渡す前にいくつかのプロパティを除外しています。これは、CData Cmdlets が接続情報、テーブル、およびカラム情報を結果セットのそれぞれの行に挿入するためです。それらの情報を表示したくない場合に、Export-Csv コマンドに渡す前に除外を先に行い、そのあとでCSV ファイルにエクスポートします。
それでは、続いてデータの削除や挿入・更新を実行してみます。
データの削除
以下のように、フィルタリングで合致するレコードを削除することができます。
Select-Workday -Connection $conn -Table Workers -Where "Legal_Name_Last_Name = Morgan" | Remove-Workday
データの挿入と更新
データの挿入や更新を使って、加工やクレンジングも行えます。以下の手順では、CSV ファイルのデータを読み込んで挿入対象のオブジェクトに同じレコードが存在するかを確認した上で、存在する場合にはデータを更新、存在しない場合にはデータの挿入を行います。
Import-Csv -Path C:\MyWorkersUpdates.csv | %{
$record = Select-Workday -Connection $Workday -Table Workers -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-Workday -Connection $workday -Table Workers -Columns ("Worker_Reference_WID","Legal_Name_Last_Name") -Values ($_.Worker_Reference_WID, $_.Legal_Name_Last_Name) -Where ("Id = `'"+$_.Id+"`'")
}else{
Add-Workday -Connection $workday -Table Workers -Columns ("Worker_Reference_WID","Legal_Name_Last_Name") -Values ($_.Worker_Reference_WID, $_.Legal_Name_Last_Name)
}
}
おわりに
このように、CData Cmdlets を使えばPowerShell でのWorkday のデータへの連携をシンプルに実現できます。ぜひCData PowerShell Cmdlets の30日間無償トライアルをダウンロードして、シンプルかつパワフルなデータ連携をお試しください。