カスタム データソースを統合するには、Data Catalog API を呼び出します。これにより、カスタムデータ リソースタイプで Data Catalog エントリを作成および管理できます。このドキュメントでは、カスタムデータ リソースタイプのエントリを「カスタム エントリ」と呼びます。
エントリ グループとカスタム エントリを作成する
カスタム エントリは、ユーザーが作成したエントリ グループ内に配置する必要があります。エントリ グループを作成してから、エントリ グループ内にカスタム エントリを作成します。 詳細については、エントリとエントリ グループをご覧ください。
エントリを作成したら、エントリ グループに IAM ポリシーを設定して、エントリ グループと内部のエントリにアクセスできるユーザーを定義できます。
Java
このサンプルを試す前に、クライアント ライブラリを使用した Data Catalog のクイックスタートにある Java の設定手順を行ってください。 詳細については、Data Catalog Java API のリファレンス ドキュメントをご覧ください。
Data Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Data Catalog のクイックスタートにある Node.js の設定手順を行ってください。 詳細については、Data Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Data Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した Data Catalog のクイックスタートにある Python の設定手順を行ってください。 詳細については、Data Catalog Python API のリファレンス ドキュメントをご覧ください。
Data Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST とコマンドライン
REST
次の例を参照して、Data Catalog REST API の entryGroups.create と entryGroups.entries.create のドキュメントをご覧ください。
1. エントリ グループを作成する
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: Google Cloud プロジェクト ID
- entryGroupId: ID は、文字またはアンダースコアで始まり、英字、数字、アンダースコアのみを含み、64 文字以下である必要があります。
- displayName: エントリ グループのテキスト名。
HTTP メソッドと URL:
POST https://datacatalog.googleapis.com/v1/projects/project-id/locations/region/entryGroups?entryGroupId=entryGroupId
リクエストの本文(JSON):
{ "displayName": "Entry Group display name" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/my_projectid/locations/us-central1/entryGroups/my_entry_group", "displayName": "Entry Group display name", "dataCatalogTimestamps": { "createTime": "2019-10-19T16:35:50.135Z", "updateTime": "2019-10-19T16:35:50.135Z" } }
2. エントリ グループ内にカスタム エントリを作成する
リクエストのデータを使用する前に、次のように置き換えます。
- project_id: Google Cloud プロジェクト ID
- entryGroupId: 既存の entryGroup の ID。エントリはこの EntryGroup に作成されます。
- entryId: 新しいエントリの ID。ID は、文字またはアンダースコアで始まり、英字、数字、アンダースコアのみを含み、64 文字以下である必要があります。
- description: オプションのエントリの説明
- displayName: エントリのオプションのテキスト名。
- userSpecifiedType: カスタムタイプ名。タイプ名は、文字またはアンダースコアで始まり、文字、数字、アンダースコアのみを含み、64 文字以下である必要があります。
- userSpecifiedSystem: エントリの非 Google Cloud ソースシステム。これは、Data Catalog と統合されていません。ソースシステム名は、文字またはアンダースコアで始まり、文字、数字、アンダースコアのみを含み、64 文字以下である必要があります。
- linkedResource: エントリが参照するリソースのオプションのフルネーム。
- schema: オプションのデータスキーマ。JSON スキーマの例:
{ ... "schema": { "columns": [ { "column": "first_name", "description": "First name", "mode": "REQUIRED", "type": "STRING" }, { "column": "last_name", "description": "Last name", "mode": "REQUIRED", "type": "STRING" }, { "column": "address", "description": "Address", "mode": "REPEATED", "subcolumns": [ { "column": "city", "description": "City", "mode": "NULLABLE", "type": "STRING" }, { "column": "state", "description": "State", "mode": "NULLABLE", "type": "STRING" } ], "type": "RECORD" } ] } ... }
HTTP メソッドと URL:
POST https://datacatalog.googleapis.com/v1/projects/project_id/locations/region/entryGroups/entryGroupId/entries?entryId=entryId
リクエストの本文(JSON):
{ "description": "Description", "displayName": "Display name", "userSpecifiedType": "my_type", "userSpecifiedSystem": "my_system", "linkedResource": "example.com/def", "schema": { schema } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/my_project_id/locations/us-central1/entryGroups/my_entryGroup_id/entries/my_entry_id", "userSpecifiedType": "my-type", "userSpecifiedSystem": "my_system", "displayName": "On-prem entry", "description": "My entry description.", "schema": { "columns": [ { "type": "STRING", "description": "First name", "mode": "REQUIRED", "column": "first_name" }, { "type": "STRING", "description": "Last name", "mode": "REQUIRED", "column": "last_name" }, { "type": "RECORD", "description": "Address", "mode": "REPEATED", "column": "address", "subcolumns": [ { "type": "STRING", "description": "City", "mode": "NULLABLE", "column": "city" }, { "type": "STRING", "description": "State", "mode": "NULLABLE", "column": "state" } ] } ] }, "sourceSystemTimestamps": { "createTime": "2019-10-23T23:11:26.326Z", "updateTime": "2019-10-23T23:11:26.326Z" }, "linkedResource": "example.com/def" }