こんにちは、データアナリティクス事業本部ビジネスソリューション部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への移行にも役立つでしょう。
ぜひ使ってみてください!