製品をチェック

Paylocity Driver の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

Paylocity アイコン Paylocity JDBC Driver 相談したい

Paylocity のAccounts、Envelopes、Folders データに連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。

AWS Glue ジョブからPaylocity データにJDBC 経由で接続

Amazon S3 でホストされているCData JDBC ドライバーを使用してAWS Glue ジョブからPaylocity にデータ連携。

加藤龍彦
デジタルマーケティング

最終更新日:2023-09-07
paylocity ロゴ

CData

jdbc ロゴ画像
AWS Glue ロゴ

こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。

AWS Glue はAmazon のETL サービスであり、簡単にデータプレパレーションを実行してストレージおよび分析用に読み込むことができます。AWS Glue と一緒にPySpark モジュールを使用すると、JDBC 接続経由でデータを処理するジョブを作成し、そのデータをAWS データストアに直接読み込むことができます。ここでは、CData JDBC Driver for Paylocity をAmazon S3 バケットにアップロードし、Paylocity からデータを抽出してCSV ファイルとしてS3 に保存するためのAWS Glue ジョブを作成・実行する方法について説明します。

CData JDBC Driver for Paylocity をAmazon S3 バケットにアップロード

CData JDBC Driver for Paylocity をAWS Glue から使用するには、ドライバーの.jar ファイル(および必要なライセンスファイル)をAmazon S3 のバケットに配置する必要があります。

  1. Amazon S3 コンソールを開きます。
  2. バケットを選択、もしくは作成します。
  3. [アップロード]をクリックします。
  4. JDBC Driver の.jar ファイル(cdata.jdbc.paylocity.jar) をインストールディレクトリのlib フォルダから選択してアップロードします。

Amazon Glue Job を設定

  1. [分析]->[AWS Glue]をクリックします。
  2. AWS Glue コンソールで、[ETL]->[ジョブ]をクリックします。
  3. [ジョブの追加]をクリックして新しいGlue ジョブを作成します。
  4. ジョブのプロパティを設定します:
    • 名前: PaylocityGlueJob など任意のジョブ名
    • IAM ロール: AWSGlueServiceRole もしくは AmazonS3FullAccessSelect の権限があるIAM ロールを設定(JDBC Driver がAmazon S3 バケットにあるため)。
    • Type: [Spark]を選択。
    • Glue version: ドロップダウンからバージョンを選択。
    • このジョブ実行: [ユーザーが作成する新しいスクリプト]を選択。
      スクリプトプロパティの設定:
      • スクリプトファイル名: GluePaylocityJDBC などのスクリプトファイル名。
      • スクリプトが保存されているS3 パス: S3 バケットを入力もしくは選択。
      • 一時ディレクトリ: S3 バケットを入力もしくは選択
    • ETL 言語: [Python]を選択
    • セキュリティ設定、スクリプトライブラリおよびジョブパラメータを展開。依存JARS パスは、JDBC の.jar ファイルをアップロードしたS3 バケットに設定。.jar ファイル名 s3://mybucket/cdata.jdbc.paylocity.jar も含めます。
  5. [次へ]をクリックすると、ほかのAWS エンドポイントへの接続オプション追加ができます。Redshift、MySQL などに接続する際にはここで接続を作成できます。
  6. [ジョブの保存とスクリプトの編集]をクリックします。
  7. 開いたエディタで、Python スクリプトを記述します。サンプルは以下です。

サンプルGlue スクリプト

CData JDBC driver でPaylocity に接続するには、JDBC URL を作成します。さらにライセンスとしてJDBC URL にRTK プロパティを設定する必要があります。RTK は通常のライセンスと異なりますので、CData まで直接ご連絡をください。

Paylocity への接続を確立するには以下を設定します。

  • RSAPublicKey:Paylocity アカウントでRSA 暗号化が有効になっている場合は、Paylocity に関連付けられたRSA キーを設定。

    このプロパティは、Insert およびUpdate ステートメントを実行するために必須です。この機能が無効になっている場合は必須ではありません。

  • UseSandbox:サンドボックスアカウントを使用する場合はTrue に設定。
  • CustomFieldsCategory:Customfields カテゴリに設定。これは、IncludeCustomFields がtrue に設定されている場合は必須です。デフォルト値はPayrollAndHR です。
  • Key:Paylocity の公開鍵で暗号化されたAES 共通鍵(base 64 エンコード)。これはコンテンツを暗号化するためのキーです。

    Paylocity は、RSA 復号化を使用してAES 鍵を復号化します。
    これはオプションのプロパティで、IV の値が指定されていない場合、ドライバーは内部でキーを生成します。

  • IV:コンテンツを暗号化するときに使用するAES IV(base 64 エンコード)。これはオプションのプロパティで、Key の値が指定されていない場合、ドライバーは内部でIV を生成します。

OAuth

OAuth を使用してPaylocity で認証する必要があります。OAuth では認証するユーザーにブラウザでPaylocity との通信を要求します。詳しくは、ヘルプドキュメントのOAuth セクションを参照してください。

Pay Entry API

Pay Entry API はPaylocity API の他の部分と完全に分離されています。個別のクライアントID とシークレットを使用し、アカウントへのアクセスを許可するにはPaylocity から明示的にリクエストする必要があります。 Pay Entry API を使用すると、個々の従業員の給与情報を自動的に送信できます。 Pay Entry API によって提供されるものの性質が非常に限られているため、CData では個別のスキーマを提供しないことを選択しましたが、UsePayEntryAPI 接続プロパティを介して有効にできます。

UsePayEntryAPI をtrue に設定する場合は、CreatePayEntryImportBatch、MergePayEntryImportBatch、Input_TimeEntry、およびOAuth ストアドプロシージャのみ利用できることに注意してください。 製品のその他の機能を使用しようとするとエラーが発生します。また、OAuthAccessToken を個別に保存する必要があります。これは、この接続プロパティを使用するときに異なるOAuthSettingsLocation を設定することを意味します。

ビルトイン接続文字列デザイナー

JDBC URL の作成をサポートするビルトインの接続文字列デザイナーがあります。ドライバーの.jar ファイルをダブルクリックするか、コマンドラインで.jar ファイルを実行するとデザイナーが開きます。

java -jar cdata.jdbc.paylocity.jar

必要項目を入力すると、デザインs-下部に接続文字列が生成されますのでクリップボードにコピーして使います。

Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

CData JDBC driver をPySpark で使用して、AWS Glue モジュールでPaylocity データを取得して、S3 にCSV 形式で保存するシンプルなスクリプト例は以下です。

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.dynamicframe import DynamicFrame from awsglue.job import Job args = getResolvedOptions(sys.argv, ['JOB_NAME']) sparkContext = SparkContext() glueContext = GlueContext(sparkContext) sparkSession = glueContext.spark_session ##Use the CData JDBC driver to read Paylocity データ from the Employee table into a DataFrame ##Note the populated JDBC URL and driver class name source_df = sparkSession.read.format("jdbc").option("url","jdbc:paylocity:RTK=5246...;OAuthClientID=YourClientId;OAuthClientSecret=YourClientSecret;RSAPublicKey=YourRSAPubKey;Key=YourKey;IV=YourIV;").option("dbtable","Employee").option("driver","cdata.jdbc.paylocity.PaylocityDriver").load() glueJob = Job(glueContext) glueJob.init(args['JOB_NAME'], args) ##Convert DataFrames to AWS Glue's DynamicFrames Object dynamic_dframe = DynamicFrame.fromDF(source_df, glueContext, "dynamic_df") ##Write the DynamicFrame as a file in CSV format to a folder in an S3 bucket. ##It is possible to write to any Amazon data store (SQL Server, Redshift, etc) by using any previously defined connections. retDatasink4 = glueContext.write_dynamic_frame.from_options(frame = dynamic_dframe, connection_type = "s3", connection_options = {"path": "s3://mybucket/outfiles"}, format = "csv", transformation_ctx = "datasink4") glueJob.commit()

Glueジョブを実行する

スクリプト記述後、Glue ジョブを実行します。実行した取得/ロードのジョブが完了するとAWS Glue コンソールのジョブページでステータスが確認できます。成功するとS3 バケットにPaylocity データのCSV ファイルが生成されています。

このようにCData JDBC Driver for Paylocity をAWS Glue で使用することで、Paylocity データをAWS Glue で自在に扱うことができます。Glue の外部データへの接続性を拡張するJDBC Driver を是非お試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。