ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →Workday Cmdlets の30日間無償トライアルをダウンロード
30日間の無償トライアルへ製品の詳細
Workday Data Cmdlets 相談したいPowerShell Cmdlets は、Workday へのリアルタイム連携機能を提供します。Cmdlets を使ってデータに直接連携し、DB と同感覚でデータを操作できます。
CData
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for Workday を使えば、PowerShell からWorkday データ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for Workday およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でWorkday への接続を行います。レプリケーションは4つのステップがあります。
ここでは、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 プロパティを取得するため、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 です。
モジュールのインストール:
Install-Module WorkdayCmdlets
Workday への接続:
$workday = Connect-Workday -User $User -Password $Password -Tenant $Tenant -Host $Host
取得ターゲットのリソースの取得:
$data = Select-Workday -Connection $workday -Table "Workers"
Invoke-Workday cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-Workday -Connection $workday -Query 'SELECT * FROM Workers WHERE Legal_Name_Last_Name = @Legal_Name_Last_Name' -Params @{'@Legal_Name_Last_Name'='Morgan'}
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
モジュールのインストール:
Install-Module MySQLCmdlets
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
Workday、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Workday のリソース(Workers)と同じテーブル名を持っている必要があります。
$data | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "Workers" -Columns $columns -Values $values
}
一度PowerShell でWorkday とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-Workday -Connection $workday -Table "Workers" | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "Workers" -Columns $columns -Values $values
}
別のPowerShell モジュールで、Workday を別のデータベースに複製する場合、Select-Workday cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
これで、Workday データをMySQL に複製できました。分析、BI などでWorkday データをMySQL から使うことができるようになります。