如需集成自定义数据源,请调用 Data Catalog API,以便创建和管理带有自定义数据资源类型的 Data Catalog 条目。在本文档中,自定义数据资源类型的条目称为“自定义条目”。
创建条目组和自定义条目
自定义条目必须位于用户创建的条目组中。您创建条目组,然后在条目组中创建自定义条目。 如需了解详情,请参阅条目和条目组。
创建条目后,您可以针对条目组设置 IAM 政策,以定义谁有权访问条目群组以及其中的条目。
Java
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Java 设置说明进行操作。 有关详情,请参阅 Data Catalog Java API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照Node.js Data Catalog 快速入门:使用 客户端库。 有关详情,请参阅 Data Catalog Node.js API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Python 设置说明进行操作。 有关详情,请参阅 Data Catalog Python API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST 和命令行
REST
请参阅以下示例,并参阅 DataGroup REST API entryGroups.create 和 entryGroups.entries.create 文档。
1.创建一个条目组
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 Google Cloud 项目 ID
- entryGroupId:ID 必须以字母或下划线开头,只能包含英文字母、数字和下划线,长度不超过 64 个字符。
- displayName:条目组的文本名称。
HTTP 方法和网址:
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 方法和网址:
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" }