» google_bigquery_table

Creates a table resource in a dataset for Google BigQuery. For more information see the official documentation and API.

» Example Usage

resource "google_bigquery_dataset" "default" {
  dataset_id                  = "foo"
  friendly_name               = "test"
  description                 = "This is a test description"
  location                    = "EU"
  default_table_expiration_ms = 3600000

  labels = {
    env = "default"

resource "google_bigquery_table" "default" {
  dataset_id = "${google_bigquery_dataset.default.dataset_id}"
  table_id   = "bar"

  time_partitioning {
    type = "DAY"

  labels = {
    env = "default"

  schema = "${file("schema.json")}"

» Argument Reference

The following arguments are supported:

  • dataset_id - (Required) The dataset ID to create the table in. Changing this forces a new resource to be created.

  • table_id - (Required) A unique ID for the resource. Changing this forces a new resource to be created.

  • project - (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

  • description - (Optional) The field description.

  • expiration_time - (Optional) The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed.

  • friendly_name - (Optional) A descriptive name for the table.

  • labels - (Optional) A mapping of labels to assign to the resource.

  • schema - (Optional) A JSON schema for the table.

  • time_partitioning - (Optional) If specified, configures time-based partitioning for this table. Structure is documented below.

  • view - (Optional) If specified, configures this table as a view. Structure is documented below.

The time_partitioning block supports:

  • expiration_ms - (Optional) Number of milliseconds for which to keep the storage for a partition.

  • field - (Optional) The field used to determine how to create a time-based partition. If time-based partitioning is enabled without this value, the table is partitioned based on the load time.

  • type - (Required) The only type supported is DAY, which will generate one partition per day based on data loading time.

  • require_partition_filter - (Optional) If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.

The view block supports:

  • query - (Required) A query that BigQuery executes when the view is referenced.

  • use_legacy_sql - (Optional) Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL.

» Attributes Reference

In addition to the arguments listed above, the following computed attributes are exported:

  • creation_time - The time when this table was created, in milliseconds since the epoch.

  • etag - A hash of the resource.

  • last_modified_time - The time when this table was last modified, in milliseconds since the epoch.

  • location - The geographic location where the table resides. This value is inherited from the dataset.

  • num_bytes - The size of this table in bytes, excluding any data in the streaming buffer.

  • num_long_term_bytes - The number of bytes in the table that are considered "long-term storage".

  • num_rows - The number of rows of data in this table, excluding any data in the streaming buffer.

  • self_link - The URI of the created resource.

  • type - Describes the table type.

» Import

BigQuery tables can be imported using the project, dataset_id, and table_id, e.g.

$ terraform import google_bigquery_table.default gcp-project:foo.bar