本文档介绍了如何创建自定义 Data Catalog 条目。如需集成自定义数据源,请调用 Data Catalog API,以便创建和管理带有自定义数据资源类型的 Data Catalog 条目。在本文档中,自定义数据资源类型的条目称为“自定义条目”。
创建条目组和自定义条目
自定义条目必须位于用户创建的条目组中。您创建条目组,然后在条目组中创建自定义条目。 如需了解详情,请参阅条目和条目组。
创建条目后,您可以针对条目组设置 IAM 政策,以定义谁有权访问条目群组以及其中的条目。
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 Data Catalog Java API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Data Catalog Node.js API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Data Catalog Python API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 " }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:project-id " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datacatalog.googleapis.com/v1/projects/project-id /locations/region /entryGroups?entryGroupId=entryGroupId "
PowerShell (Windows)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datacatalog.googleapis.com/v1/projects/project-id /locations/region /entryGroups?entryGroupId=entryGroupId " | Select-Object -Expand Content
您应该收到类似以下内容的 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 } }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:project_id " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datacatalog.googleapis.com/v1/projects/project_id /locations/region /entryGroups/entryGroupId /entries?entryId=entryId "
PowerShell (Windows)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project_id " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datacatalog.googleapis.com/v1/projects/project_id /locations/region /entryGroups/entryGroupId /entries?entryId=entryId " | Select-Object -Expand Content
您应该收到类似以下内容的 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" }