このドキュメントでは、MySQL、SQL Server、Oracle などのサードパーティ ソースからメタデータを抽出するカスタム コネクタを構築するためのリファレンス テンプレートを提供します。このコネクタを使用すると、マネージド接続パイプラインを介してメタデータを Knowledge Catalog(以前の Dataplex Universal Catalog)にインポートできます。Oracle Database Express Edition(XE)用の Python コネクタの例が、出発点として含まれています。Java、Scala、R を使用してコネクタを開発することもできます。
コネクタの仕組み
コネクタは、サードパーティ データソースからメタデータを抽出して、メタデータを Knowledge Catalog ImportItem 形式に変換し、Knowledge Catalog によってインポートできるメタデータ インポート ファイルを生成します。
このコネクタは、マネージド接続パイプラインの一部です。マネージド接続パイプラインは、Knowledge Catalog のメタデータをインポートするために使用するオーケストレートされたワークフローです。マネージド接続パイプラインは、コネクタを実行し、インポート ワークフローの他のタスク(メタデータ インポート ジョブの実行、ログのキャプチャなど)を実行します。
マネージド接続パイプラインは、Managed Service for Apache Spark バッチジョブを使用してコネクタを実行します。Managed Service for Apache Spark は、サーバーレスの Spark 実行環境を提供します。Spark を使用しないコネクタを構築することもできますが、Spark を使用することをおすすめします。これにより、コネクタのパフォーマンスが向上します。
コネクタの要件
コネクタには次の要件があります。
- コネクタは、Managed Service for Apache Spark で実行できる Artifact Registry イメージであることが必要です。
- コネクタは、Knowledge Catalog メタデータ インポート ジョブ(
metadataJobs.createAPI メソッド)によってインポートできる形式のメタデータ ファイルを生成する必要があります。詳細な要件については、メタデータのインポート ファイルをご覧ください。 パイプラインから情報を受信するには、コネクタが次のコマンドライン引数を受け入れるようにする必要があります。
コマンドライン引数 パイプラインが指定する値 target_project_idPROJECT_ID target_location_idREGION target_entry_group_idENTRY_GROUP_ID output_bucketCLOUD_STORAGE_BUCKET_ID output_folderFOLDER_ID コネクタは、これらの引数を使用して、ターゲット エントリ グループ
projects/PROJECT_ID/locations/REGION/entryGroups/ENTRY_GROUP_IDでメタデータを生成し、Cloud Storage バケットgs://CLOUD_STORAGE_BUCKET_ID/FOLDER_IDに書き込みます。 パイプラインを実行するたびに、バケット CLOUD_STORAGE_BUCKET_ID に新しいフォルダ FOLDER_ID が作成されます。コネクタは、メタデータのインポート ファイルをこのフォルダに書き込む必要があります。
パイプライン テンプレートは PySpark コネクタをサポートしています。テンプレートでは、ドライバ(mainPythonFileUri)が main.py という名前のコネクタ イメージ上のローカル ファイルであると想定しています。Spark コネクタ、別のドライバ URI、その他のオプションなど、他のシナリオに合わせてパイプライン テンプレートを変更できます。
PySpark を使用してメタデータのインポート ファイルにインポート アイテムを作成する方法は次のとおりです。
"""PySpark schemas for the data."""
entry_source_schema = StructType([
StructField("display_name", StringType()),
StructField("source", StringType())])
aspect_schema = MapType(StringType(),
StructType([
StructField("aspect_type", StringType()),
StructField("data", StructType([
]))
])
)
entry_schema = StructType([
StructField("name", StringType()),
StructField("entry_type", StringType()),
StructField("fully_qualified_name", StringType()),
StructField("parent_entry", StringType()),
StructField("entry_source", entry_source_schema),
StructField("aspects", aspect_schema)
])
import_item_schema = StructType([
StructField("entry", entry_schema),
StructField("aspect_keys", ArrayType(StringType())),
StructField("update_mask", ArrayType(StringType()))
])
始める前に
このガイドは、Python と PySpark の知識があることを前提としています。
次の情報を確認します。
- Knowledge Catalog メタデータのコンセプト
- メタデータのインポート ジョブに関するドキュメント
次の操作を行います。すべてのリソースを同じ Google Cloudロケーションに作成します。
-
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Dataplex、Dataproc、Workflows、Artifact Registry の各 API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable dataplex.googleapis.com
dataproc.googleapis.com workflows.googleapis.com artifactregistry.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/resourcemanager.projectCreator, roles/billing.projectManager, roles/serviceusage.admin, roles/iam.serviceAccountCreator, roles/iam.securityAdmin, roles/storage.admin, roles/artifactregistry.writer, roles/dataplex.entryGroupOwner, roles/dataplex.entryOwner, roles/dataplex.aspectTypeOwnergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
次のように置き換えます。
PROJECT_ID: プロジェクト ID。USER_IDENTIFIER: ユーザー アカウントの識別子。例:myemail@example.com。ROLE: ユーザー アカウントに付与する IAM ロール。
-
認証を設定します。
-
サービス アカウントの作成 IAM ロール(
roles/iam.serviceAccountCreator)とプロジェクト IAM 管理者ロール(roles/resourcemanager.projectIamAdmin)があることを確認します。ロールを付与する方法を確認する。 -
サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAMEをサービス アカウントの名前に置き換えます。 -
サービス アカウントに
roles/ownerIAM ロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
以下を置き換えます。
SERVICE_ACCOUNT_NAME: サービス アカウントの名前PROJECT_ID: サービス アカウントを作成したプロジェクト ID
-
サービス アカウントの作成 IAM ロール(
-
メタデータのインポート ファイルを保存する Cloud Storage バケットを作成します。
-
同じプロジェクトに次のメタデータ リソースを作成します。
値の例については、このドキュメントの Oracle ソース用のメタデータ リソースの例をご覧ください。
- エントリ グループを作成します。
-
インポートするエントリのカスタム アスペクト タイプを作成します。
SOURCE-ENTITY_TO_IMPORTの命名規則を使用します。たとえば、Oracle データベースの場合は、
oracle-databaseという名前のアスペクト タイプを作成します。必要に応じて、他の情報を保存する追加のアスペクト タイプを作成できます。
-
インポートするリソースのカスタム エントリタイプを作成し、関連するアスペクト タイプを割り当てます。
SOURCE-ENTITY_TO_IMPORTの命名規則を使用します。たとえば、Oracle データベースの場合は、
oracle-databaseという名前のエントリタイプを作成します。oracle-databaseという名前のアスペクト タイプにリンクします。
- Google Cloud プロジェクトからサードパーティ ソースにアクセスできることを確認します。詳細については、Managed Service for Apache Spark のネットワーク構成をご覧ください。
基本的な Python コネクタを作成する
この基本的な Python コネクタの例では、Knowledge Catalog クライアント ライブラリ クラスを使用して Oracle データソースのトップレベル エントリを作成します。次に、入力フィールドに値を指定します。
コネクタは、次のエントリを含むメタデータのインポート ファイルを作成します。
- エントリタイプが
projects/PROJECT_ID/locations/LOCATION/entryTypes/oracle-instanceのinstanceエントリ。このエントリは Oracle Database XE システムを表します。 databaseエントリ。Oracle Database XE システム内のデータベースを表します。
基本的な Python コネクタを構築する手順は次のとおりです。
cloud-dataplexリポジトリのクローンを作成します。ローカル環境を設定します。仮想環境を使用することをおすすめします。
mkdir venv python -m venv venv/ source venv/bin/activatePython のアクティブ バージョンまたはメンテナンス バージョンを使用します。Python バージョン 3.7 以降がサポートされています。
Python プロジェクトを作成します。
インストール要件:
pip install -r requirements.txt次の要件がインストールされています。
プロジェクトのルートに
main.pyパイプライン ファイルを追加する。コードを Managed Service for Apache Spark にデプロイする場合、
main.pyファイルは実行のエントリ ポイントとして機能します。main.pyファイルに保存される情報の量を最小限に抑えることをおすすめします。このファイルは、コネクタ内で定義されている関数やクラス(src/bootstrap.pyクラスなど)を呼び出すために使用します。コネクタのロジックの大部分を保存する
srcフォルダを作成します。コマンドライン引数を受け入れるように Python クラスを使用して
src/cmd_reader.pyファイルを更新します。これを行うには、argeparse モジュールを使用します。本番環境では、パスワードを Secret Manager に保存することをおすすめします。
定数を作成するコードで
src/constants.pyファイルを更新します。コネクタが Oracle リソース用に作成するメタデータ リソースを構築するメソッドを使用して
src/name_builder.pyファイルを更新します。このドキュメントの Oracle ソース用のメタデータ リソースの例のセクションで説明されている規則を使用します。name_builder.pyファイルは Python コアコードと PySpark コアコードの両方に使用されるため、メソッドはクラスのメンバーではなく、純粋な関数として記述することをおすすめします。トップレベルのエントリにデータを入力するコードで
src/top_entry_builder.pyファイルを更新します。メタデータのインポート ファイルを生成し、コネクタを実行するコードで
src/bootstrap.pyファイルを更新します。コードをローカルで実行します。
output.jsonlという名前のメタデータ インポート ファイルが返されます。このファイルには 2 行あり、それぞれがインポート アイテムを表します。マネージド接続パイプラインは、メタデータ インポート ジョブの実行時にこのファイルを読み取ります。省略可: 前の例を拡張して、Knowledge Catalog クライアント ライブラリ クラスを使用して、テーブル、スキーマ、ビューのインポート アイテムを作成します。Managed Service for Apache Spark で Python の例を実行することもできます。
Spark を使用する(および Managed Service for Apache Spark で実行される)コネクタを作成することをおすすめします。これにより、コネクタのパフォーマンスが向上します。
PySpark コネクタを作成する
この例は PySpark DataFrame API に基づいています。Managed Service for Apache Spark で実行する前に、PySpark SQL をローカルにインストールして実行できます。PySpark をローカルにインストールして実行する場合は、pip を使用して PySpark ライブラリをインストールしますが、ローカル Spark クラスタをインストールする必要はありません。
パフォーマンス上の理由から、この例では PySpark ライブラリの事前定義クラスを使用していません。代わりに、この例では DataFrame を作成し、DataFrame を JSON エントリに変換してから、出力を JSON Lines 形式のメタデータ インポート ファイルに書き込み、Knowledge Catalog にインポートできるようにします。
PySpark を使用してコネクタを構築するには、次の操作を行います。
cloud-dataplexリポジトリのクローンを作成します。PySpark をインストールします。
pip install pysparkインストール要件:
pip install -r requirements.txt次の要件がインストールされています。
Oracle データソースからデータを読み取り、DataFrame を返すコードで
oracle_connector.pyファイルを更新します。インポートするメタデータを返す SQL クエリを追加します。クエリは次の情報を返す必要があります。
- データベース スキーマ
- これらのスキーマに属するテーブル
- これらのテーブルに属する列(列名、列データ型、列が null 可能かどうか、必須かどうかなど)
すべてのテーブルとビューのすべての列は、同じシステム テーブルに保存されます。列を選択するには、
_get_columnsメソッドを使用します。指定するパラメータに応じて、テーブルまたはビューの列を個別に選択できます。次の点にご注意ください。
- Oracle では、データベース スキーマはデータベース ユーザーが所有し、そのユーザーと同じ名前になります。
- スキーマ オブジェクトは、ユーザーが作成する論理構造です。テーブルやインデックスなどのオブジェクトはデータを保持できますが、ビューやシノニムなどのオブジェクトは定義のみで構成されます。
ojdbc11.jarファイルには、Oracle JDBC ドライバが含まれています。
Spark 変換を適用するための共有メソッドを使用して、
src/entry_builder.pyファイルを更新します。次の点にご注意ください。
- これらのメソッドは、コネクタが Oracle リソース用に作成するメタデータ リソースを構築します。このドキュメントの Oracle ソース用のメタデータ リソースの例のセクションで説明されている規則を使用します。
convert_to_import_itemsメソッドは、スキーマ、テーブル、ビューに適用されます。コネクタの出力が、個々のエントリではなく、metadataJobs.createメソッドで処理できる 1 つ以上のインポート アイテムであることを確認します。- ビュー内でも、列は
TABLE_NAMEと呼ばれます。
メタデータのインポート ファイルを生成し、コネクタを実行するコードで
bootstrap.pyファイルを更新します。この例では、メタデータのインポート ファイルを 1 つの JSON Lines ファイルとして保存します。
DataFrameWriterクラスなどの PySpark ツールを使用して、JSON のバッチを並列に出力できます。コネクタは、メタデータのインポート ファイルにエントリを任意の順序で書き込むことができます。
メタデータのインポート ファイルを Cloud Storage バケットにアップロードするコードで
gcs_uploader.pyファイルを更新します。コネクタ イメージを構築します。
コネクタに複数のファイルが含まれている場合や、デフォルトの Docker イメージに含まれていないライブラリを使用する場合は、カスタム コンテナを使用する必要があります。Managed Service for Apache Spark は、Docker コンテナ内でワークロードを実行します。コネクタのカスタム Docker イメージを作成し、イメージを Artifact Registry に保存します。Managed Service for Apache Spark は、Artifact Registry からイメージを読み取ります。
Dockerfile を作成します。
パッケージ管理システムとして Conda を使用します。Managed Service for Apache Spark は実行時に
pysparkをコンテナにマウントするため、カスタム コンテナ イメージに PySpark の依存関係をインストールする必要はありません。カスタム コンテナ イメージを構築して Artifact Registry に push します。
1 つのイメージに複数の名前を付けることができるため、Docker タグを使用してイメージにエイリアスを割り当てることができます。
Managed Service for Apache Spark でコネクタを実行します。カスタム コンテナ イメージを使用して PySpark バッチジョブを送信するには、
gcloud dataproc batches submit pysparkコマンドを実行します。gcloud dataproc batches submit pyspark main.py --project=PROJECT \ --region=REGION --batch=BATCH_ID \ --container-image=CUSTOM_CONTAINER_IMAGE \ --service-account=SERVICE_ACCOUNT_NAME \ --jars=PATH_TO_JAR_FILES \ --properties=PYSPARK_PROPERTIES \ -- PIPELINE_ARGUMENTS次の点にご注意ください。
- JAR ファイルは Spark のドライバです。Oracle、MySQL、Postgres から読み取るには、Apache Spark に特定のパッケージを指定する必要があります。パッケージは Cloud Storage 内またはコンテナ内に配置できます。JAR ファイルがコンテナ内にある場合、パスは
file:///path/to/file/driver.jarに類似したパスです。この例では、JAR ファイルのパスは/opt/spark/jars/です。 - PIPELINE_ARGUMENTS はコネクタのコマンドライン引数です。
コネクタは Oracle データベースからメタデータを抽出し、メタデータのインポート ファイルを生成して、そのメタデータのインポート ファイルを Cloud Storage バケットに保存します。
- JAR ファイルは Spark のドライバです。Oracle、MySQL、Postgres から読み取るには、Apache Spark に特定のパッケージを指定する必要があります。パッケージは Cloud Storage 内またはコンテナ内に配置できます。JAR ファイルがコンテナ内にある場合、パスは
メタデータ インポート ファイルのメタデータを Knowledge Catalog に手動でインポートするには、メタデータ ジョブを実行します。
metadataJobs.createメソッドを使用します。コマンドラインで環境変数を追加し、curl コマンドのエイリアスを作成します。
PROJECT_ID=PROJECT LOCATION_ID=LOCATION DATAPLEX_API=dataplex.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION_ID alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'インポートするエントリタイプとアスペクト タイプを渡して、API メソッドを呼び出します。
gcurl https://${DATAPLEX_API}/metadataJobs?metadata_job_id="JOB_ID" -d "$(cat <<EOF { "type": "IMPORT", "import_spec": { "source_storage_uri": "gs://BUCKET/FOLDER/", "entry_sync_mode": "FULL", "aspect_sync_mode": "INCREMENTAL", "scope": { "entry_groups": ["projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"], "entry_types": [ "projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-database", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-table", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-view"], "aspect_types": [ "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance", "projects/dataplex-types/locations/global/aspectTypes/schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view"], }, }, } EOF )"schemaアスペクト タイプは、Knowledge Catalog によって定義されたグローバル アスペクト タイプです。API メソッドを呼び出すときにアスペクト タイプ名に使用する形式は、コネクタコードで使用する形式とは異なります。
省略可: Cloud Logging を使用して、メタデータ ジョブのログを表示します。詳細については、Knowledge Catalog ログをモニタリングするをご覧ください。
パイプラインのオーケストレーションを設定する
前のセクションでは、サンプル コネクタを構築してコネクタを手動で実行する方法について説明しました。
本番環境では、Workflows などのオーケストレーション プラットフォームを使用して、マネージド接続パイプラインの一部としてコネクタを実行します。
サンプル コネクタを使用してマネージド接続パイプラインを実行するには、Workflows を使用してメタデータをインポートする手順に沿って操作します。次の手順を行います。
- ワークフローは、コネクタと同じ Google Cloud ロケーションに作成します。
ワークフロー定義ファイルで、作成したコネクタを使用して Oracle データベースからデータを抽出するように、
submit_pyspark_extract_job関数を次のコードで更新します。- submit_pyspark_extract_job: call: http.post args: url: ${"https://dataproc.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/batches"} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" headers: Content-Type: "application/json" query: batchId: ${WORKFLOW_ID} body: pysparkBatch: mainPythonFileUri: file:///main.py jars: file:///opt/spark/jars/ojdbc11.jar args: - ${"--host_port=" + args.ORACLE_HOST_PORT} - ${"--user=" + args.ORACLE_USER} - ${"--password=" + args.ORACLE_PASSWORD} - ${"--database=" + args.ORACLE_DATABASE} - ${"--project=" + args.TARGET_PROJECT_ID} - ${"--location=" + args.CLOUD_REGION} - ${"--entry_group=" + args.TARGET_ENTRY_GROUP_ID} - ${"--bucket=" + args.CLOUD_STORAGE_BUCKET_ID} - ${"--folder=" + WORKFLOW_ID} runtimeConfig: version: "2.0" containerImage: "us-central1-docker.pkg.dev/PROJECT/REPOSITORY/oracle-pyspark" environmentConfig: executionConfig: serviceAccount: ${args.SERVICE_ACCOUNT} result: RESPONSE_MESSAGEワークフロー定義ファイルで、エントリをインポートするように、
submit_import_job関数を次のコードで更新します。この関数は、metadataJobs.createAPI メソッドを呼び出してメタデータのインポート ジョブを実行します。- submit_import_job: call: http.post args: url: ${"https://dataplex.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/metadataJobs?metadata_job_id=" + WORKFLOW_ID} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" body: type: IMPORT import_spec: source_storage_uri: ${"gs://" + args.CLOUD_STORAGE_BUCKET_ID + "/" + WORKFLOW_ID + "/"} entry_sync_mode: FULL aspect_sync_mode: INCREMENTAL scope: entry_groups: - ${"projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/entryGroups/"+args.TARGET_ENTRY_GROUP_ID} entry_types: -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-view" aspect_types: -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance" -"projects/dataplex-types/locations/global/aspectTypes/schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view" result: IMPORT_JOB_RESPONSEAPI メソッドを手動で呼び出したときに追加したエントリタイプとアスペクト タイプを指定します。各文字列の末尾にカンマがないことを確認してください。
ワークフローを実行するときに、次のランタイム引数を指定します。
{ "CLOUD_REGION": "us-central1", "ORACLE_USER": "system", "ORACLE_HOST_PORT": "x.x.x.x:1521", "ORACLE_DATABASE": "xe", "ADDITIONAL_CONNECTOR_ARGS": [], }
省略可: Cloud Logging を使用して、マネージド接続パイプラインのログを表示します。ログペイロードには、関連する場合は、Managed Service for Apache Spark バッチジョブとメタデータ インポート ジョブのログへのリンクが含まれます。詳細については、ワークフローのログを表示するをご覧ください。
省略可: マネージド接続パイプラインのセキュリティ、パフォーマンス、機能を改善するには、次の操作の実行を検討してください。
- Secret Manager を使用して、サードパーティ データソースの認証情報を保存します。
- PySpark を使用して、JSON Lines 出力を複数のメタデータ インポート ファイルに並行して書き込みます。
- 接頭辞を使用して、大きなファイル(100 MB 超)を小さなファイルに分割します。
- ソースからビジネス メタデータとテクニカル メタデータを追加でキャプチャするカスタム アスペクトを追加します。
Oracle ソースのメタデータ リソースの例
このコネクタの例では、Oracle データベースからメタデータを抽出し、メタデータを対応する Knowledge Catalog メタデータ リソースにマッピングします。
階層に関する考慮事項
Knowledge Catalog のすべてのシステムには、システムの親エントリであるルートエントリがあります。通常、ルートエントリには instance エントリタイプがあります。次の表に、Oracle システムのエントリタイプとアスペクト タイプの階層の例を示します。たとえば、oracle-database エントリタイプは、oracle-database という名前のアスペクト タイプにリンクされています。
| エントリタイプ ID | 説明 | リンクされたアスペクト タイプ ID |
|---|---|---|
oracle-instance |
インポートされたシステムのルート。 | oracle-instance |
oracle-database |
Oracle データベース。 | oracle-database |
oracle-schema |
データベース スキーマ。 | oracle-schema |
oracle-table |
テーブル。 |
|
oracle-view |
ビュー。 |
|
schema アスペクト タイプは、Knowledge Catalog によって定義されたグローバル アスペクト タイプです。テーブル、ビュー、または列を持つその他のエンティティのフィールドの説明が含まれています。oracle-schema カスタム アスペクト タイプには、Oracle データベース スキーマの名前が含まれます。
インポート アイテム フィールドの例
コネクタは、Oracle リソースに次の規則を使用する必要があります。
-
完全修飾名: Oracle リソースの完全修飾名には、次の命名テンプレートを使用します。禁止されている文字はバッククォートを使用してエスケープされます。
リソース テンプレート 例 インスタンス SOURCE:ADDRESSシステムのホストとポート番号またはドメイン名を使用します。
oracle:`localhost:1521`またはoracle:`myinstance.com`データベース SOURCE:ADDRESS.DATABASEoracle:`localhost:1521`.xeスキーマ SOURCE:ADDRESS.DATABASE.SCHEMAoracle:`localhost:1521`.xe.sysテーブル SOURCE:ADDRESS.DATABASE.SCHEMA.TABLE_NAMEoracle:`localhost:1521`.xe.sys.ordersビュー SOURCE:ADDRESS.DATABASE.SCHEMA.VIEW_NAMEoracle:`localhost:1521`.xe.sys.orders_view -
エントリ名またはエントリ ID: Oracle リソースのエントリには、次の命名テンプレートを使用します。禁止されている文字は、許可されている文字に置き換えられます。リソースには接頭辞
projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP/entriesが使用されます。リソース テンプレート 例 インスタンス PREFIX/HOST_PORTprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521データベース PREFIX/HOST_PORT/databases/DATABASEprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xeスキーマ PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMAprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sysテーブル PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMA/tables/TABLEprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/tables/ordersビュー PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMA/views/VIEWprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/views/orders_view -
親エントリ: エントリがシステムのルートエントリでない場合、エントリには階層内の位置を記述する親エントリ フィールドを配置できます。このフィールドには、親エントリの名前を指定します。この値を生成することをおすすめします。
次の表に、Oracle リソースの親エントリを示します。
エントリ 親エントリ インスタンス ""(空の文字列)データベース インスタンス名 スキーマ データベース名 テーブル スキーマ名 ビュー スキーマ名 アスペクト マップ: アスペクト マップに、インポートするエンティティを記述するアスペクトを 1 つ以上配置する必要があります。Oracle テーブルのアスペクト マップの例を次に示します。
"example-project.us-central1.oracle-table": { "aspect_type": "example-project.us-central1.oracle-table", "path": "", "data": {} },
dataplex-typesプロジェクトのテーブルまたはビューの構造を定義する事前定義されたアスペクト タイプ(schemaなど)は、globalロケーションで確認できます。-
アスペクトキー: アスペクトキーは PROJECT.LOCATION.ASPECT_TYPE という命名形式を使用します。次の表に、Oracle リソースのアスペクトキーの例を示します。
エントリ アスペクトキーの例 インスタンス example-project.us-central1.oracle-instanceデータベース example-project.us-central1.oracle-databaseスキーマ example-project.us-central1.oracle-schemaテーブル example-project.us-central1.oracle-tableビュー example-project.us-central1.oracle-view