import (
"context"
"fmt"
"cloud.google.com/go/bigquery"
)
// createTableExternalHivePartitioned demonstrates creating an external table with hive partitioning.
func createTableExternalHivePartitioned(projectID, datasetID, tableID string) error {
// projectID := "my-project-id"
// datasetID := "mydatasetid"
// tableID := "mytableid"
ctx := context.Background()
client, err := bigquery.NewClient(ctx, projectID)
if err != nil {
return fmt.Errorf("bigquery.NewClient: %w", err)
}
defer client.Close()
// First, we'll define table metadata to represent a table that's backed by parquet files held in
// Cloud Storage.
//
// Example file:
// gs://cloud-samples-data/bigquery/hive-partitioning-samples/autolayout/dt=2020-11-15/file1.parquet
metadata := &bigquery.TableMetadata{
Description: "An example table that demonstrates hive partitioning against external parquet files",
ExternalDataConfig: &bigquery.ExternalDataConfig{
SourceFormat: bigquery.Parquet,
SourceURIs: []string{"gs://cloud-samples-data/bigquery/hive-partitioning-samples/autolayout/*"},
AutoDetect: true,
},
}