【CDI】Informatica Cloud Data IntegrationでParamSetCliを使ってタスクフロー起動時にパラメータセットから値を取得してみた

Informatica IDMC CDIでParamSetCliを使用したパラメータセットからの値取得を試してみました。
2024.01.24

こんにちは、データアナリティクス事業本部ビジネスソリューション部SAチームの渡部です。

今回はInformaticaのCloud Data Integration(以下、CDI)でParamSetCliを使用して、タスクフロー実行時にパラメータセットから値を取得してみます。
パラメータファイルではなくて、パラメータセットというのがミソです。
もしもパラメータ取得用のマッピングタスクから入出力パラメータを使用してパラメータファイルの値を取得している、、、という場合は今回の記事が参考になるかと思います。

やってみる

ParamSetCliの準備

ParamSetCliは、Informatica管理のクラウドリポジトリへ、パラメータセットをアップロードなどの操作をするための、Informaticaコマンドラインインターフェースツールです。
CDIでパラメータを取得するためにSecureAgentサーバーに配置していたものをパラメータファイルと呼称するのに対して、ParamSetCliでクラウドリポジトリにアップロードしたものはパラメータセットと呼称するようです。

ParamSetCliをダウンロード

まずはParamSetCliユーティリティをダウンロードします。
ダウンロードは以下のサイトのファイルから可能です。
HOW TO: Configure a parameter set in a Taskflow

その次にダウンロードしたファイルを、SecureAgentにインストールします。
scpコマンドを使用してSecureAgentのインストールディレクトリの配下に配置します。
配置をしたらば、unzipコマンドでファイルを解凍しましょう。
私は<SecureAgentインストールディレクトリ>/apps/に配置をしました。

ParamSetCliのパスワード設定

ParamSetCliで使用するユーザーとパスワードの認証情報をrestenv.propertiesに書き込みます。
ユーザーとパスワードについてはInformaticaのログイン時に使用するものを使います。
実際のプロジェクトでは退職や離任があることを考えて、個人に紐づかないアカウントを使用すると良いでしょう。

なおパスワードについてはハードコードではなく暗号化した文字列に置き換えて、書き込むことが可能です。
その際はrestenv.propertiesの"password"に暗号化文字列を、"use.encryption"にtrueを記載します。
暗号化文字列についてはParamSetCliで取得できるようになっています。

以下は私が実際に打ったコマンドです(申し遅れましたがOSはLinuxです)。
OSがWindowsの場合は、paramsetcli.shの箇所をparamsetcli.batと読み替えてWin仕様のコマンドを打ち込んでください。

paramsetcli.settings

$ chmod +x paramsetcli.sh    ## paramsetcli.shに実行権限を付与
$ ./paramsetcli.sh encryptText -t <パスワード>    ## パスワードを暗号化(パスワードはシングルアポストロフィで囲む)
.
Encrypted Password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    ## 暗号化された文字列が出力される
$ vi restenv.properties    ## restenv.propertiesに書き込み
$ cat restenv.properties
baseUrl=https://dm-us.informaticacloud.com/ma
username=<ユーザー名>
password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ACTIVITYMONITORWAIT=2000
TOTALWAIT=5000
PROXYHOST=
PROXYPORT=
RETRYCOUNT=
use.encryption=true
paramSetBaseUrl=https://na1.dm-us.informaticacloud.com/active-bpel

Java Runtime Environmentをインストール

ParamSetCliを使用するためにはJava Runtime Environmentが必要なため、SecureAgentにインストールします。
JavaについてはSecureAgentサーバーのOSに合ったJavaをダウンロードしてください。
ちょっとここはどのJavaを選べば良いか難しいポイントです。

https://www.java.com/ja/download/manual.jsp

ダウンロードをしたらParamSetCliと同様にSecureAgentサーバーにインストール・解凍をします。
配置場所についてはParamSetCliと同じ階層で良いかと思います。

ParamSetCliでパラメータセットをアップロード

パラメータセットの作成

パラメータセットについては、パラメータファイルと同じように作成します。

Paramset-watanabe.params

#USE_SECTIONS
[Global]
$$mail_to=<私のメールアドレス>
$$text=helloParamSetCli

[cm-watanabe].[create-target-at-run-time-new].[tf_create_file_at_run_time_new]
$$data_source_backet=create-file-at-run-time-2

パラメータセットのアップロード

パラメータセットを作成したら、ParamSetCliでInformatica管理のクラウドリポジトリへアップロードします。
unではパラメータセット名、pfではアップロードするパラメータのファイル名、pdではパラメータのファイルのディレクトリを渡します。
例えば「これまではパラメータファイルを使用していたけれど、パラメータセットも使用してみたい」ということであれば、パラメータファイルをパラメータセットとしてアップロードということが可能です。

paramset-upload

$ paramsetcli.sh runParamSetCli -un Paramset-watanabe.params -pf watanabe.prm -pd ~/infaagent/apps/Data_Integration_Server/data/userparameters -a upload
.
0    [main] INFO  com.activee.rt.hub.tf.paramset.cli.plugin.AeBaseCliPlugin  - Welcome to Informatica CLI tool.
6081 [main] INFO  com.activee.rt.hub.tf.paramset.cli.task.AeParamSetTask  - 1/23/24 10:44 PM: Running upload action on Paramset-watanabe.params
6738 [main] INFO  com.activee.rt.hub.tf.paramset.cli.task.AeParamSetTask  - Successfully completed upload action. {
  "paramSetName" : "Paramset-watanabe.params",
  "parameterFileName" : "watanabe.prm",
  "parameterDir" : "/home/infa/infaagent/apps/Data_Integration_Server/data/userparameters"
}

こちらにParamSetCliについての詳しい使い方の記載があるので、ご参照ください。
アップロード以外にもダウンロードや削除・リスト化が可能です。

タスクフロー作成 & 実行

以下のようなパラメータセットを使用するタスクフローを準備しました。
今回はデータタスクを失敗させて、通知タスクでメールを飛ばす処理にしています。
宛先・件名をパラメータセットからの設定とします。

まずはパラメータセットにparamSetNameの名前を記載します。

タスクフローの入力フィールドにパラメータセットのパラメータと同名のフィールドを用意します。

通知タスクにて宛先・件名を入力フィールドで設定します。

実行すると無事メールが届きました。
パラメータセットからパラメータが渡っていることがわかりました。

まとめ

以上、ParamSetCliを使用してパラメータセットからパラメータ取得をやってみました。

パラメータセットからの値取得の何が嬉しいかというと、タスクフロー実行時に入力フィールドへの値代入が可能になることです。

これまでタスクフローでは、入力フィールドへの値代入はJSONおよびXMLを通してのみ可能でした。
そのためタスクフローでパラメータファイルの値を使用する場合は、マッピングタスクで指定している入出力パラメータにパラメータファイルから値を代入してから、その入出力パラメータを使用するというような作りとしていました。
イメージとしては、パラメータファイルから値を取得するためのダミーのデータタスクを用意する、という感じです。

それがParamSetCliを使用したパラメータセットで解決するようになった!ということです。

Informatica前身のPowerCenterにおいては、ワークフロー実行時にパラメータファイルを読み込んで変数への値代入が可能でした。
パラメータセットを使用することで、CDIでもPowerCenterのような処理が実現できるということで、IDMCへの移行にも役立つでしょう。

ぜひ使ってみてください!