[Oracle Cloud] Data Integration で Parameter を使い、入力と出力を柔軟に指定する

# はじめに

[前回の Data Integration チュートリアル](https://qiita.com/sugimount/items/155b13acf17e769c9d9f) では、Object Storage に格納されているファイルを読み取り、加工して、ADW に格納をしました。このデータ加工フローでは、Input に使う Object Storage のファイル名や、出力先の ADW は固定されています。特に、Input に使う Object Storage のファイルは、データ加工の度に好きなファイルを指定したくなります。こういうときに使えるのが、Parameter の指定です。入力ファイル名や出力ファイル名をパラメータ化して、好きな名前を指定できます。

それでは Parameter の指定方法を紹介します。



# 事前準備 : テストデータと、Data Flow の作成

Object Storage の `input` と `output` バケットに、csv テストデータを格納します。



paramtest01.csv

```
name,id,userrank
sugiyama,1,bronze
tanaka,2,gold
suzukii,3,silver
```



paramtest02.csv

```
name,id,userrank
satou,4,bronze
kimura,5,gold
takahashi,6,silver
```



次に、Data Integration でデータ加工を行う Data Flow を準備します。Object Storage の input Bucket から、csv ファイルを受け取り、データ加工を行い、output Bucket に出力する内容です。



**Input の指定**

![1600496046843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/0ea76e02-6071-4f4b-62a0-2df0448e2095.png)



Data Tab で、リアルタイムにデータを確認できます。

![1600496099281.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/7997fc61-0b5c-c5f8-aa69-3b8ed74cf055.png)



**Filter の指定**

userrank の値が、silver のデータのみフィルターを行います。

```
FILTER_1.SOURCE_1.userrank='silver'
```

![1600496294869.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/3fc3aa75-3c45-f93d-2193-06cd7aa60a77.png)



Data タブでリアルタイムにデータを確認できます
silver のみフィルターされています。

![1600496361494.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/30e31dc1-ea68-ef3a-0a92-7aad44f42ca0.png)



CREATE NEW ENTITY を入れて、Select を押します

![1600496489660.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/6d45ebfa-66af-146a-a976-6c9f1e8b1b60.png)



こんな感じで、出力先の Object Storage を指定します。NEW DIRECTORY NAME は、出力するディレクトリの名前です。後からパラメータ化しますが、動作確認のために指定した名前は憶えておきましょう。

![1600496660367.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/cf1719f7-b235-ce06-4786-0c2817a8d73b.png)



この段階で、作成した Data Flow を実行してみると、次のように Bucket にデータ加工されます。

![1600497066287.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/dc36fab7-7c68-883a-4e2b-ea10e329cf8a.png)



ディレクトリ名は、指定した `parametertest01` が作成されています。その下に格納されている `part-00000-37a3bc9a-31dc-491e-a521-4ae4c44b1b63-c000.csv` の中身は、Filter で設定したように、silver でフィルターされています。

```
name,id,userrank
suzukii,3,silver
```



# Parameter 化

それでは、ここからが本題です。Data Flow の編集画面へ移動し、input の入力ファイル名と、output の出力ディレクトリ名をパラメータ化しましょう。

input の入力ファイル名で、Assign Parameter を押します。

![1600497270207.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a98df052-f9cc-5b4d-bfe0-93d6bf9ed235.png)



Add New Parameter

![1599978016099.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/9031e539-baa2-0461-8993-ca13e95cb761.png)



Identifier は、後程パラメータとして表示される名前です。分かりやすい名前を入れておきましょう。今回は、`INPUT_OBJECT_NAME` とします。その他設定はデフォルトのままにしておきます。

![1600497402157.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/3d301406-3a50-951b-0248-c1aecf945bc7.png)



Assign

![1600497428433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/360d96be-f1c4-6c3e-36c1-3d2dc1403ff8.png)



表示が変わる。

![1600497460507.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/347b50b7-8d69-c26e-1bf2-20cf3538ac1d.png)



Output のディレクトリ名もパラメータ化をします。

![1600497561935.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a44da691-37f9-a3dd-5fd2-ea4c8b6d882f.png)





分かりやすい名前を入れましょう。今回は、`OUTPUT_DIRECTORY_NAME` とします。

![1599980094083.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/204cab20-be4a-fcde-1ad6-5ce3a14d6ca8.png)



Assign

![1599980157008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/0ee028d2-e559-879e-2b6b-a6b98c5c8f04.png)



Save and Close で閉じます。

![1599980210618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1224ec63-ae1e-531a-9736-c247488c3316.png)



# Parameter 動作確認

作成した Data Flow を使って、Create Integration Task を押します。

![1599979135723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a0a680ad-55bf-da05-0515-c3af5e2b9f99.png)



適当に名前を入れて作成します。Parameter をアサインしているので、ここの画面でパラメーターを変更できるように変わります。が、今回はここでは指定しません。実際にデータ加工タスクを実行する場面で、パラメータを指定してみましょう。

![1599979214140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1490815d-5626-78db-b5d3-9bf5aa8103c9.png)



Publish

![1599979357629.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1f4f9e9d-59af-b722-a4b7-6e0dcb9b7d2f.png)



Application を指定して Publish

![1599979379808.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1d988650-d725-b297-6946-50e6e8ac2728.png)



データ加工タスクを実行する画面を開きます。

![1599979423358.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/b6338c39-2548-521a-e41b-2e4f62865827.png)



Data Flow には、`INPUT_OBJECT_NAME` と `OUTPUT_DIRECTORY_NAME` の2つをパラメータ化しました。なので、タスクを実行する画面でも、パラメータを指定出来るようになっています。

`INPUT_OBJECT_NAME` を変更してみましょう。

![1600497973818.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1ea827c1-be59-eb06-35dc-c1cc5403f171.png)



変更して Select

![1599979539792.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/86d0404a-4f04-8d91-7af8-c01eb5b6d383.png)



`OUTPUT_DIRECTORY_NAME` も Edit してみます。

![1599980615249.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/9afc68db-b93a-c661-b5f8-11b306749253.png)



名前を入れて、Select をします。

![1600498070447.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/8fec4002-0bfe-b421-fb23-0ad8cbee59b0.png)



Run で実際のタスクを実行します。

![1600498098005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/b53413c9-0936-b1ff-b339-0d20dd5b7643.png)





Task Runs の画面に切り替わります。画面を更新するには、右側にある、`Refresh` を押します。一定時間後、Task が正常終了していることがわかります。

![1599980853676.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/7181e579-a9a3-c4e8-6c4e-007e8fb92430.png)





output を見ると、パラメータ化で指定した名前で出力されていることがわかります。

![1600498194538.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/38d9dc5a-541d-c518-1e81-bbd3b5644489.png)



実際の csv ファイルを見てみると、Input パラメータで指定したファイルが使われていることが分かります。

```
name,id,userrank
takahashi,6,silver
```



# 参考URL

Integration Tasks の紹介
https://blogs.oracle.com/dataintegration/integration-tasks-in-oracle-cloud-infrastructure-oci-data-integration

PM Blogs
https://blogs.oracle.com/dataintegration/oracle-cloud-infrastructure-data-integration

Blogs
https://medium.com/@dave.allan.us