はじめに
先日(10/11)に OCI Data Integration (以下 ODI)へ Export/Import 機能がリリースされました
これまで、開発環境でデータ・フローの実装・動作確認を行った後に、本番環境にリリースしようとしても、イチからデータ・フローを作成する必要があり、不必要な属性を除外し忘れてしまったり、属性名をタイポしてしまい意図しない動作となってしまうことがありました
しかし、 Export/Import 機能が実装されたことにより、開発用テナントで実装・動作確認を行ったデータ・フロー等を簡単な手順で本番環境へリリースすることが可能となりました
本記事では、Export/Import 機能を試してみましたので、ご紹介したいと思います
環境
本記事の環境は開発環境と本番環境のワークスペースを別にし、2つのワークスペース間でデータ・フローを移行してみたいと思います
また、ODIのワークスペースなどの作成に関しては割愛させて頂きますが、Export/Importを検証するデータ・フローに関しては、プロジェクトを作成する際に サンプル・アーティファクトの作成
にチェックを入れて作成されるデータ・フロー(Data Filter Enrich)を利用しております
ご興味のある方は OCI Data Integrationチュートリアル を参考にしつつ、プロジェクト作成時にサンプル・アーティファクトの作成にチェックを入れていただければと思います
なお、Export/Importを実施するにあたり、オブジェクトはObject Storageのバケット内にZipファイルとして作成されます
そのため、バケットへの読み書き権限が必要になるなどございますので、ドキュメントはご一読いただきますようお願いいたします
Export
1. Export対象の確認
サンプル・アーティファクトの作成にチェックを入れてプロジェクトを作成すると、v1_0というフォルダが作成され、画像のようにデータ・フローが6つ作成されます
本記事では、一番上のData Filter EnrichをExportしてみたいと思います
2. Export作業
Export対象の右端にある3点メニュー内に エクスポート
が追加されていますので、クリックします
エクスポートはオブジェクト・ストレージのバケット内にZipファイルで作成されますので、出力場所とZipファイルのプレフィックスを指定します
その際、エクスポートするオブジェクト種別により、ファイル拡張子部分が固定で付与されます
種別 | ファイル拡張子 |
---|---|
プロジェクト | .project.zip |
フォルダ | .folder.zip |
タスク | .task.zip |
データ・フロー | .dataflow.zip |
パイプライン | .pipeline.zip |
関数ライブラリ | .udflib.zip |
エクスポート作業は非同期で実行されるため、エクスポート・リクエストが作成されます
3. リクエストと結果確認
エクスポート・リクエストはリクエスト開始時のリンクか、TOPメニュー内の エクスポート/インポートのリクエスト
から確認することができます
エクスポートに成功していれば、出力場所に指定したバケット内にZipファイルとして出力されていることが確認できるかと思います
Import
1. Import作業
Import環境のプロジェクトの右端にある3点メニュー内に インポート
が追加されていますので、クリックします
また、プロジェクトと関数ライブラリの場合は、インポートメニューの場所が異なりますので注意が必要となります
- プロジェクトの場合
プロジェクトの作成
ボタンをクリックすると表示されるインポートより実行します
- 関数ライブラリの場合
ライブラリを作成
ボタン内のインポート、もしくはライブラリの3点メニュー内のインポートより実行
2. リクエストと結果確認
インポート・リクエストはリクエスト開始時のリンクか、TOPメニュー内の エクスポート/インポートのリクエスト
から確認することができます
インポートに成功していれば、インポートを実行したプロジェクトにデータ・フローが作成されていることが確認できるかと思います
問題点
プロジェクトの中には、v1_0というフォルダが作成されており、Data Filterというデータ・フローが作成されています
原因はおそらくですが、エクスポート時にZipファイルに含まれる情報にあるのではないかと考えます
指定した Data Filter Enrich
が含まれています
なぜか、Data Filter
が含まれています
おそらく、エクスポート時に 参照を含める
にチェックを入れたことが原因だと考えられますので、フォルダやデータ・アセットなどの関連情報が不要であれば、参照は含めないこととするのが良いかと思います
まとめ
まだ少し不可解な動作があるような気がしますが、参照を含めずに単体のデータ・フローを移行したい場合などには有効活用できるのではないでしょうか