在条目组中创建一个自定义条目
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
Java
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Java 设置说明进行操作。如需了解详情,请参阅 Data Catalog Java API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
import com.google.cloud.datacatalog.v1.ColumnSchema;
import com.google.cloud.datacatalog.v1.CreateEntryGroupRequest;
import com.google.cloud.datacatalog.v1.CreateEntryRequest;
import com.google.cloud.datacatalog.v1.DataCatalogClient;
import com.google.cloud.datacatalog.v1.Entry;
import com.google.cloud.datacatalog.v1.EntryGroup;
import com.google.cloud.datacatalog.v1.LocationName;
import com.google.cloud.datacatalog.v1.Schema;
import java.io.IOException;
// Sample to create custom entry
public class CreateCustomEntry {
public static void main(String[] args) throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "my-project";
String entryGroupId = "onprem_entry_group";
String entryId = "onprem_entry_id";
createCustomEntry(projectId, entryGroupId, entryId);
}
public static void createCustomEntry(String projectId, String entryGroupId, String entryId)
throws IOException {
// Currently, Data Catalog stores metadata in the us-central1 region.
String location = "us-central1";
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (DataCatalogClient dataCatalogClient = DataCatalogClient.create()) {
// Construct the EntryGroup for the EntryGroup request.
EntryGroup entryGroup =
EntryGroup.newBuilder()
.setDisplayName("My awesome Entry Group")
.setDescription("This Entry Group represents an external system")
.build();
// Construct the EntryGroup request to be sent by the client.
CreateEntryGroupRequest entryGroupRequest =
CreateEntryGroupRequest.newBuilder()
.setParent(LocationName.of(projectId, location).toString())
.setEntryGroupId(entryGroupId)
.setEntryGroup(entryGroup)
.build();
// Use the client to send the API request.
EntryGroup createdEntryGroup = dataCatalogClient.createEntryGroup(entryGroupRequest);
// Construct the Entry for the Entry request.
Entry entry =
Entry.newBuilder()
.setUserSpecifiedSystem("onprem_data_system")
.setUserSpecifiedType("onprem_data_asset")
.setDisplayName("My awesome data asset")
.setDescription("This data asset is managed by an external system.")
.setLinkedResource("//my-onprem-server.com/dataAssets/my-awesome-data-asset")
.setSchema(
Schema.newBuilder()
.addColumns(
ColumnSchema.newBuilder()
.setColumn("first_column")
.setDescription("This columns consists of ....")
.setMode("NULLABLE")
.setType("DOUBLE")
.build())
.addColumns(
ColumnSchema.newBuilder()
.setColumn("second_column")
.setDescription("This columns consists of ....")
.setMode("REQUIRED")
.setType("STRING")
.build())
.build())
.build();
// Construct the Entry request to be sent by the client.
CreateEntryRequest entryRequest =
CreateEntryRequest.newBuilder()
.setParent(createdEntryGroup.getName())
.setEntryId(entryId)
.setEntry(entry)
.build();
// Use the client to send the API request.
Entry createdEntry = dataCatalogClient.createEntry(entryRequest);
System.out.printf("Custom entry created with name: %s", createdEntry.getName());
}
}
}
Node.js
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Data Catalog Node.js API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
// Import the Google Cloud client library.
const {DataCatalogClient} = require('@google-cloud/datacatalog').v1;
const datacatalog = new DataCatalogClient();
async function createCustomEntry() {
// Create a custom entry within an entry group.
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my_project';
// const entryGroupId = 'my_entry_group';
// const entryId = 'my_entry';
// const tagTemplateId = 'my_tag_template';
// Currently, Data Catalog stores metadata in the us-central1 region.
const location = 'us-central1';
// Delete any pre-existing Entry with the same name
// that will be used to create the new Entry.
try {
const entryName = datacatalog.entryPath(
projectId,
location,
entryGroupId,
entryId
);
await datacatalog.deleteEntry({name: entryName});
console.log(`Deleted Entry: ${entryName}`);
} catch (err) {
console.log('Entry does not exist.');
}
// Delete any pre-existing Entry Group with the same name
// that will be used to construct the new EntryGroup.
try {
const entryGroupName = datacatalog.entryGroupPath(
projectId,
location,
entryGroupId
);
await datacatalog.deleteEntryGroup({name: entryGroupName});
console.log(`Deleted Entry Group: ${entryGroupName}`);
} catch (err) {
console.log('Entry Group does not exist.');
}
// Delete any pre-existing Template with the same name
// that will be used to create a new Template.
const tagTemplateName = datacatalog.tagTemplatePath(
projectId,
location,
tagTemplateId
);
let tagTemplateRequest = {
name: tagTemplateName,
force: true,
};
try {
await datacatalog.deleteTagTemplate(tagTemplateRequest);
console.log(`Deleted template: ${tagTemplateName}`);
} catch (error) {
console.log(`Cannot delete template: ${tagTemplateName}`);
}
// Construct the EntryGroup for the EntryGroup request.
const entryGroup = {
displayName: 'My awesome Entry Group',
description: 'This Entry Group represents an external system',
};
// Construct the EntryGroup request to be sent by the client.
const entryGroupRequest = {
parent: datacatalog.locationPath(projectId, location),
entryGroupId: entryGroupId,
entryGroup: entryGroup,
};
// Use the client to send the API request.
const [createdEntryGroup] =
await datacatalog.createEntryGroup(entryGroupRequest);
console.log(`Created entry group: ${createdEntryGroup.name}`);
// Construct the Entry for the Entry request.
const entry = {
userSpecifiedSystem: 'onprem_data_system',
userSpecifiedType: 'onprem_data_asset',
displayName: 'My awesome data asset',
description: 'This data asset is managed by an external system.',
linkedResource: '//my-onprem-server.com/dataAssets/my-awesome-data-asset',
schema: {
columns: [
{
column: 'first_column',
description: 'This columns consists of ....',
mode: 'NULLABLE',
type: 'STRING',
},
{
column: 'second_column',
description: 'This columns consists of ....',
mode: 'NULLABLE',
type: 'DOUBLE',
},
],
},
};
// Construct the Entry request to be sent by the client.
const entryRequest = {
parent: datacatalog.entryGroupPath(projectId, location, entryGroupId),
entryId: entryId,
entry: entry,
};
// Use the client to send the API request.
const [createdEntry] = await datacatalog.createEntry(entryRequest);
console.log(`Created entry: ${createdEntry.name}`);
// Create a Tag Template.
// For more field types, including ENUM, please refer to
// https://cloud.google.com/data-catalog/docs/quickstarts/quickstart-search-tag#data-catalog-quickstart-nodejs.
const fieldSource = {
displayName: 'Source of data asset',
type: {
primitiveType: 'STRING',
},
};
const tagTemplate = {
displayName: 'Demo Tag Template',
fields: {
source: fieldSource,
},
};
tagTemplateRequest = {
parent: datacatalog.locationPath(projectId, location),
tagTemplateId: tagTemplateId,
tagTemplate: tagTemplate,
};
// Use the client to send the API request.
const [createdTagTemplate] =
await datacatalog.createTagTemplate(tagTemplateRequest);
console.log(`Created template: ${createdTagTemplate.name}`);
// Attach a Tag to the custom Entry.
const tag = {
template: createdTagTemplate.name,
fields: {
source: {
stringValue: 'On-premises system name',
},
},
};
const tagRequest = {
parent: createdEntry.name,
tag: tag,
};
// Use the client to send the API request.
const [createdTag] = await datacatalog.createTag(tagRequest);
console.log(`Created tag: ${createdTag.name}`);
}
createCustomEntry();
Python
在试用此示例之前,请按照 Data Catalog 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Data Catalog Python API 参考文档。
如需向 Data Catalog 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
# Import required modules.
from google.cloud import datacatalog_v1
# Google Cloud Platform project.
project_id = "my-project"
# Entry Group to be created.
entry_group_id = "my_new_entry_group_id"
# Entry to be created.
entry_id = "my_new_entry_id"
# Currently, Data Catalog stores metadata in the us-central1 region.
location = "us-central1"
datacatalog = datacatalog_v1.DataCatalogClient()
# Create an Entry Group.
entry_group_obj = datacatalog_v1.types.EntryGroup()
entry_group_obj.display_name = "My awesome Entry Group"
entry_group_obj.description = "This Entry Group represents an external system"
entry_group = datacatalog.create_entry_group(
parent=datacatalog_v1.DataCatalogClient.common_location_path(
project_id, location
),
entry_group_id=entry_group_id,
entry_group=entry_group_obj,
)
entry_group_name = entry_group.name
print("Created entry group: {}".format(entry_group_name))
# Create an Entry.
entry = datacatalog_v1.types.Entry()
entry.user_specified_system = "onprem_data_system"
entry.user_specified_type = "onprem_data_asset"
entry.display_name = "My awesome data asset"
entry.description = "This data asset is managed by an external system."
entry.linked_resource = "//my-onprem-server.com/dataAssets/my-awesome-data-asset"
# Create the Schema, this is optional.
entry.schema.columns.append(
datacatalog_v1.types.ColumnSchema(
column="first_column",
type_="STRING",
description="This columns consists of ....",
mode=None,
)
)
entry.schema.columns.append(
datacatalog_v1.types.ColumnSchema(
column="second_column",
type_="DOUBLE",
description="This columns consists of ....",
mode=None,
)
)
entry = datacatalog.create_entry(
parent=entry_group_name, entry_id=entry_id, entry=entry
)
print("Created entry: {}".format(entry.name))
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。