LoginSignup
3
4

【OCI】Data Integrationでオブジェクトストレージ上のデータをADWにインポートしてみる

Last updated at Posted at 2024-02-29

はじめに

OCI Autonomous Database(ADB)にファイルをインポートするには
いくつか方法があるかと思いますが、今回はオブジェクトストレージ上に
アップロードされた複数のファイルをDate Integrationを使って
一括インポートする方法をご紹介したいと思います。

■Data Integrationとは?
そもそもData Integrationはどのようなものなのかというとデータの
ETL(抽出、変換、ロード)プロセスを簡素化するマネージドサービスとなります。
様々なソースからデータを抽出し、必要に応じて変換して目的のデータベースや
データウェアハウスにロードする作業を効率化します。
コーディング無しでデータパイプラインを構築できるため、
比較的簡単にデータ連携することが可能です。

Data Integrationについては、基本的に以下チュートリアルを見れば
詳しく手順が書いてあるので理解できるかと思いますが、
少しボリュームが多いため、本ブログではもう少し簡素化した形で
ご紹介したいと思います。

■参考
https://oracle-japan.github.io/ocitutorials/intermediates/ocidi-tutorials/

今回検証してみる環境はローカルPCからオブジェクトストレージに
アップロードしたjsonファイルをパブリックサブネットに作成した
Data Integrationを使ってADW(Autonomous Data Warehouse)に
インポートする構成となります。
※本来ADWはVCN上のプライべートサブネットに作成するのが望ましいですが、
今回はローカルPCからアクセスできるように
「アクセス・タイプ: すべての場所からのセキュア・アクセスを許可」
としています。

■構成
image.png

■事前準備
・アカウント
Data Integration, ADW, オブジェクトストレージが使用できるOCIアカウントを準備
(ポリシーを細かく設定したい場合はチュートリアルを参考にしてください)

・ネットワークの設定
VCN、プライベートサブネットを作成しておきます。
(NAT Gateway, Service Gatewayを設定し、外部及びオラクルネットワークに
アクセスできるように構成しておきます)

ネットワークの作成方法についてはこちらを参考にします。
https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/

◆目次
1.オブジェクトストレージのバケット作成
2.jsonファイルのアップロード
3.ADWのインスタンス作成
4.スキーマ/テーブル作成
5.Data Integration設定
6.データ・フローの実行テスト

1.オブジェクトストレージのバケット作成

最初にバケットの作成をしていきます。

左上メニュー[Ξ]からストレージ → バケットを選択
image.png

そのままバケットの作成を選択。
image.png

バケット名に任意の名前を入力して作成を選択
※ここではbucketDIという名前にしています。
image.png

これでバケットが作成されたので、名前のリンクを選択
image.png

バケット内に遷移すると下の方にアップロードボタンがあるので
ここからファイルをアップロード
image.png

以上でオブジェクトストレージのバケット作成は終了です。

2.jsonファイルのアップロード

続いてADWにjsonファイルをインポートするために
①~③のテストデータを準備します。

①data01.json

[
  {"id": 1, "col1": "a"},
  {"id": 2, "col1": "b"},
  {"id": 3, "col1": "c"},
  {"id": 4, "col1": "d"},
  {"id": 5, "col1": "e"}
]

②data02.json

[
  {"id": 6, "col1": "f"},
  {"id": 7, "col1": "g"},
  {"id": 8, "col1": "h"},
  {"id": 9, "col1": "i"},
  {"id": 10, "col1": "j"}
]

③data03.json

[
  {"id": 11, "col1": "k"},
  {"id": 12, "col1": "l"},
  {"id": 13, "col1": "m"},
  {"id": 14, "col1": "n"},
  {"id": 15, "col1": "o"}
]

作成したファイルをアップロードするため、バケット内のアップロードを選択し、
「ファイルをここにドロップします」のエリアにファイルをドラッグ&ドロップし
アップロード
image.png

アップロードが完了すると終了済みとなる
image.png

一覧に戻るとファイルがアップロードされていることが確認できる
image.png

以上でjsonファイルのアップロードは終了です。

3.ADWのインスタンス作成

次はjsonファイルのインポート先のADWインスタンスを作成します。

左上メニュー[Ξ]からOracle Database → Autonomous Data Warehouseを選択
image.png

Autonomous Databaseの作成を選択
image.png

ここからはADWインスタンスに必要な項目だけ入力
image.png

表示名: adw01(任意)
データベース名: adw01(任意)
ワークロード・タイプの選択: データ・ウェアハウス
デプロイメント・タイプの選択: サーバーレス

image.png

以下の項目はデフォルト
image.png

データベース・バージョンの選択: 19c
ECPU数: 2
ストレージ(TB): 1

続いて以下の項目を設定
image.png

パスワード: *****(任意)
ネットワーク・アクセスの選択: すべての場所からのセキュア・アクセス

他の項目について特に必要ないため、
そのままAutonomous Databaseの作成を選択
image.png

正常に作成されると以下一覧にADWインスタンスが表示されるので
名前のリンクを選択
image.png

最後にADWに接続するためのウォレットを予めダウンロードしておくので
データベース接続を選択し、インスタンス・ウォレットを選択後、
ウォレットのダウンロードを実行
image.png

※この後の手順でパスワードの入力を聞かれるので任意の値を設定

以上でADWのインスタンス作成は終了です。

4.スキーマ/テーブル作成

続いてスキーマ/テーブルを作成しますので、
ADWの詳細ページからデータベース・アクションのSQLを選択
image.png

SQLが実行可能なワークシートが表示されるので
ADMINでスキーマ(diuser)を作成
image.png

・スキーマ(ユーザ)作成SQL

CREATE USER diuser IDENTIFIED BY "<パスワード>";
GRANT CREATE SESSION TO diuser;
GRANT CREATE TABLE TO diuser;
GRANT UNLIMITED TABLESPACE TO diuser;

テーブルも作成します。
image.png

・テーブル作成SQL

create table diuser.tblDI
(
    id number(10) primary key, 
    col1 varchar2(50)
);

以上でスキーマ/テーブル作成は終了です。

5.Data Integration設定

ここではData Integrationの設定を説明したいと思いますが、
その前に構成がどうなっているかを図で表すと以下のような
イメージとなります。

image.png

■機能概要
・ワークスペース
Data Integration全体を管理する仮想スペース

・プロジェクト
タスク(データフロー等)の設計のまとまり
※プログラムのソースコードのようなもの

・アプリケーション
タスクの実行環境
※プログラムの実行ファイルのようなもの

・データアセット
データソース、ターゲットに対する接続ポイント

・手順の流れ
[1] ワークスペースの作成
[2] アプリケーションの作成
[3] データアセットの作成
 - データソース[オブジェクトストレージ]の接続ポイント作成
 - ターゲット[ADW]の接続ポイント作成
[4] プロジェクトの作成
 - データフローの作成
 - タスクの作成
[5] プロジェクトタスクのアプリケーションへのPublish(公開)


[1] ワークスペースの作成

左上メニュー[Ξ]からアナリティクスとAI → データ統合を選択
image.png

ワークスペースを選択
image.png

ワークスペースの作成を選択
image.png

名前(任意)、VCN、プライベートサブネットを選択し、作成を選択
image.png


[2] アプリケーションの作成

ワークスペースが作成されると一覧の表示されるので
名前のリンクを選択
image.png

アプリケーションを選択
image.png

アプリケーションの作成の新規作成を選択
image.png

ブランク・アプリケーションの作成の新規作成を選択
image.png

任意の名前をつけて作成を選択
ここではdi_ap01
image.png


[3] データアセットの作成

  • データソース[オブジェクトストレージ]の接続ポイント作成

データ・アセットの作成を選択
image.png

OCIオブジェクト・ストレージを選択
image.png

任意の名前を入力
ここではDA_ConOS01
image.png

接続テストで問題ないことを確認して作成を選択
image.png

  • ターゲット[ADW]の接続ポイント作成

再度ワークスペースのトップからデータ・アセットの作成を選択
image.png

今回はOracle ADWを選択
image.png

任意の名前をつけて、タイプがOracle Autonomous Data Warehouseに
なっていることを確認
ここではDA_ConADW01
image.png

ウォレットをアップロードし、パスワードを設定
image.png

ユーザ名 [admin] /パスワードを入力し、TNSを選択
image.png

下記の項目を入力・選択し、接続テストで問題がないことを確認して
作成を選択
オブジェクト・ストレージ・データ・アセット: 前段で設定したアセット (DA_ConOS01)
接続: デフォルト
コンパートメント: 任意
バケット: 先程設定したバケット(bucketDI)
image.png

再度ワークスペースのトップに戻り、プロジェクトを選択
image.png


[4] プロジェクトの作成

  • データフローの作成

プロジェクトの作成-新規作成を選択
image.png

任意の名前をつけて、作成を選択
ここではpjDI
image.png

データ・フローを選択
image.png

データ・フローの作成を選択
image.png

データ・フロー作成画面が表示されたら左のツールボックスから
ソースとターゲットのアイコンをそれぞれ中央エリアにドラッグ&ドロップ
image.png

ソースをマウスオーバーすると紐づけするための線が引っ張れるようになるので
ターゲットへドラッグ&ドロップしてリンク
image.png

リンクできたら、ソースを選択し、
下のプロパティ欄にあるデータ・アセットを選択
image.png

先程作成したオブジェクトストレージのデータ・アセット(DA_ConOS01)を選択
image.png

接続についてはデフォルト接続を選択
image.png

ここまでくるとバケットが選択できるようになるので
予めて作成しておいたバケット(bucktDI)を選択
image.png

続いてデータ・エンティティのパターンで参照を選択
image.png

パターン入力欄があるので今回はdataで始まるファイルを
対象するという意味で[data*]を入力し、パターンを選択
image.png

ファイルタイプはJSONにして、他はデフォルトのまま選択
image.png

次はターゲット側のデータ・アセットを選択
image.png

先程作成したADWのデータ・アセット(DA_ConADW01)を選択
image.png

オブジェクトストレージと同様にここまで来るとスキーマが選択可能となる
image.png

スキーマ選択ではすべてを表示で検索
image.png

スキーマ検索でDIUSERを絞り込んでから選択
image.png

データ・エンティティは予め作成しておいたテーブル(tblDI)を選択
image.png

ステージングの場所についてはデフォルトの設定のまま選択
image.png

マップタブでカラムのマッピングができているか確認
今回はカラムが同じなので自動でマッピングされている
image.png

そこまで終わったら検証ボタンで問題がないことを確認して作成を選択
image.png

プロジェクトのデータ・フローを見ると作成されていることが確認できる
image.png

  • タスクの作成

続いてタスクの作成で統合を選択
image.png

任意の名前を付けて、先ほど作成したデータ・フローを選択して作成
image.png

[5] プロジェクトタスクのアプリケーションへのPublish(公開)

タスク一覧に作成できていることが確認できるので
右端のプロパティからアプリケーションに公開を選択
image.png

アプリケーション名(di_ap01)を選択して公開
image.png

以上でData Integration設定は終了です。

6.データ・フローの実行テスト

最後にjsonファイルの一括インポートを実行してみたいと思います。

アプリケーション一覧からdi_ap01を選択
image.png

di_ap01内にタスクが作成されているので右プロパティから実行
image.png

タスクが正常終了するとステータスが成功となる
image.png

SQLで確認するとjsonファイル3つ全てがインポートされていることが確認できる
image.png

※スケジュール登録すれば定期的にタスクを実行することも可能です。

おわり

以上、Data Integrationを使って簡単にデータ連携をすることができました。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4