Create taxonomy

Create a new taxonomy.

Code sample

Go

Before trying this sample, follow the Go setup instructions in the Data Catalog quickstart using client libraries. For more information, see the Data Catalog Go API reference documentation.

import (
	"context"
	"fmt"
	"io"

	datacatalog "cloud.google.com/go/datacatalog/apiv1beta1"
	datacatalogpb "google.golang.org/genproto/googleapis/cloud/datacatalog/v1beta1"
)

// createTaxonomy creates a taxonomy resource, which holds the collection of policy tags.
//
// This example marks the taxonomy as valid for defining fine grained access control, also
// known as column-level access control when used in conjunction with BigQuery.
func createTaxonomy(w io.Writer, projectID, location, displayName string) (string, error) {
	// projectID := "my-project-id"
	// location := "us"
	// displayName := "example-taxonomy"
	ctx := context.Background()
	policyClient, err := datacatalog.NewPolicyTagManagerClient(ctx)
	if err != nil {
		return "", fmt.Errorf("datacatalog.NewPolicyTagManagerClient: %v", err)
	}
	defer policyClient.Close()

	req := &datacatalogpb.CreateTaxonomyRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		Taxonomy: &datacatalogpb.Taxonomy{
			DisplayName: displayName,
			Description: "Taxonomy created via basic snippet testing",
			ActivatedPolicyTypes: []datacatalogpb.Taxonomy_PolicyType{
				datacatalogpb.Taxonomy_FINE_GRAINED_ACCESS_CONTROL,
			},
		},
	}
	resp, err := policyClient.CreateTaxonomy(ctx, req)
	if err != nil {
		return "", fmt.Errorf("CreateTaxonomy: %v", err)
	}

	fmt.Fprintf(w, "Taxonomy %s was created.\n", resp.Name)
	return resp.Name, nil
}

Node.js

Before trying this sample, follow the Node.js setup instructions in the Data Catalog quickstart using client libraries. For more information, see the Data Catalog Node.js API reference documentation.

// Import the Google Cloud client library.
const {DataCatalogClient, PolicyTagManagerClient} =
  require('@google-cloud/datacatalog').v1;
const dataCatalog = new DataCatalogClient();
const policyTagManager = new PolicyTagManagerClient();

async function createTaxonomy() {
  // const location = 'us';
  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const projectId = 'my_project'; // Google Cloud Platform project
  // const location = 'us'
  // const displayName = 'my_display_name'; // Display name for new taxonomy.

  // Parent project location format is `projects/${projectId}/locations/${location}`
  const parent = dataCatalog.locationPath(projectId, location);

  const request = {
    parent: parent,
    taxonomy: {
      displayName: displayName,
      activatedPolicyTypes: ['FINE_GRAINED_ACCESS_CONTROL'],
    },
  };

  try {
    const [metadata] = await policyTagManager.createTaxonomy(request);
    console.log(`Created taxonomy: ${metadata.name}`);
  } catch (e) {
    console.error(e);
    process.exitCode = 1;
  }
}

Python

Before trying this sample, follow the Python setup instructions in the Data Catalog quickstart using client libraries. For more information, see the Data Catalog Python API reference documentation.

from google.cloud import datacatalog_v1


def create_taxonomy(
    # TODO(developer): Set project_id to the ID of the project the
    #  taxonomy will belong to.
    project_id: str = "your-project-id",
    # TODO(developer): Specify the geographic location where the
    #  taxonomy should reside.
    location_id: str = "us",
    # TODO(developer): Set the display name of the taxonomy.
    display_name: str = "example-taxonomy",
):
    # TODO(developer): Construct a Policy Tag Manager client object. To avoid
    # extra delays due to authentication, create a single client for your
    # program and share it across operations.
    client = datacatalog_v1.PolicyTagManagerClient()

    # Construct a full location path to be the parent of the taxonomy.
    parent = datacatalog_v1.PolicyTagManagerClient.common_location_path(
        project_id, location_id
    )

    # TODO(developer): Construct a full Taxonomy object to send to the API.
    taxonomy = datacatalog_v1.Taxonomy()
    taxonomy.display_name = display_name
    taxonomy.description = "This Taxonomy represents ..."

    # Send the taxonomy to the API for creation.
    taxonomy = client.create_taxonomy(parent=parent, taxonomy=taxonomy)
    print(f"Created taxonomy {taxonomy.name}")

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.