Create a dataset and grant access to it
Stay organized with collections
Save and categorize content based on your preferences.
The following example creates a dataset named mydataset, then uses the google_bigquery_dataset_iam_policy resource to grant access to it.
Explore further
For detailed documentation that includes this code sample, see the following:
Code sample
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis code example demonstrates how to create a BigQuery dataset named "mydataset" using Terraform.\u003c/p\u003e\n"],["\u003cp\u003eThe dataset is configured with specific settings, such as a 30-day default partition expiration, a 365-day default table expiration, a description, a location (US), and a 4 day time travel window.\u003c/p\u003e\n"],["\u003cp\u003eIAM policies are defined to grant roles like \u003ccode\u003eroles/bigquery.dataOwner\u003c/code\u003e, \u003ccode\u003eroles/bigquery.admin\u003c/code\u003e, \u003ccode\u003eroles/bigquery.user\u003c/code\u003e, and \u003ccode\u003eroles/bigquery.dataViewer\u003c/code\u003e to different users, groups, and service accounts.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003egoogle_bigquery_dataset_iam_policy\u003c/code\u003e resource applies the defined IAM policies to the created dataset, controlling access and permissions.\u003c/p\u003e\n"]]],[],null,["# Create a dataset and grant access to it\n\nThe following example creates a dataset named mydataset, then uses the google_bigquery_dataset_iam_policy resource to grant access to it.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Create datasets](/bigquery/docs/datasets)\n\nCode sample\n-----------\n\n### Terraform\n\n\nTo learn how to apply or remove a Terraform configuration, see\n[Basic Terraform commands](/docs/terraform/basic-commands).\n\n\nFor more information, see the\n[Terraform provider reference documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs).\n\n resource \"google_bigquery_dataset\" \"default\" {\n dataset_id = \"mydataset\"\n default_partition_expiration_ms = 2592000000 # 30 days\n default_table_expiration_ms = 31536000000 # 365 days\n description = \"dataset description\"\n location = \"US\"\n max_time_travel_hours = 96 # 4 days\n\n labels = {\n billing_group = \"accounting\",\n pii = \"sensitive\"\n }\n }\n\n # Update the user, group, or service account\n # provided by the members argument with the\n # appropriate principals for your organization.\n data \"google_iam_policy\" \"default\" {\n binding {\n role = \"roles/bigquery.dataOwner\"\n members = [\n \"user:raha@altostrat.com\",\n ]\n }\n binding {\n role = \"roles/bigquery.admin\"\n members = [\n \"user:raha@altostrat.com\",\n ]\n }\n binding {\n role = \"roles/bigquery.user\"\n members = [\n \"group:analysts@altostrat.com\",\n ]\n }\n binding {\n role = \"roles/bigquery.dataViewer\"\n members = [\n \"serviceAccount:bqcx-1234567891011-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com\",\n ]\n }\n }\n\n resource \"google_bigquery_dataset_iam_policy\" \"default\" {\n dataset_id = google_bigquery_dataset.default.dataset_id\n policy_data = data.google_iam_policy.default.policy_data\n }\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=bigquery)."]]