在数据集中创建视图。
包含此代码示例的文档页面
代码示例
Go
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档。
import (
"context"
"fmt"
"cloud.google.com/go/bigquery"
)
// createView demonstrates creation of a BigQuery logical view.
func createView(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: %v", err)
}
defer client.Close()
meta := &bigquery.TableMetadata{
// This example shows how to create a view of the shakespeare sample dataset, which
// provides word frequency information. This view restricts the results to only contain
// results for works that contain the "king" in the title, e.g. King Lear, King Henry V, etc.
ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus LIKE '%king%'",
}
if err := client.Dataset(datasetID).Table(tableID).Create(ctx, meta); err != nil {
return err
}
return nil
}
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.ViewDefinition;
// Sample to create a view
public class CreateView {
public static void main(String[] args) {
// TODO(developer): Replace these variables before running the sample.
String datasetName = "MY_DATASET_NAME";
String tableName = "MY_TABLE_NAME";
String viewName = "MY_VIEW_NAME";
String query =
String.format(
"SELECT TimestampField, StringField, BooleanField FROM %s.%s", datasetName, tableName);
createView(datasetName, viewName, query);
}
public static void createView(String datasetName, String viewName, String query) {
try {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests.
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
TableId tableId = TableId.of(datasetName, viewName);
ViewDefinition viewDefinition =
ViewDefinition.newBuilder(query).setUseLegacySql(false).build();
bigquery.create(TableInfo.of(tableId, viewDefinition));
System.out.println("View created successfully");
} catch (BigQueryException e) {
System.out.println("View was not created. \n" + e.toString());
}
}
}
Node.js
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档。
// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
async function createView() {
// Creates a new view named "my_shared_view" in "my_dataset".
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const myDatasetId = "my_table"
// const myTableId = "my_table"
// const projectId = "bigquery-public-data";
// const sourceDatasetId = "usa_names"
// const sourceTableId = "usa_1910_current";
const myDataset = await bigquery.dataset(myDatasetId);
// For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
const options = {
view: `SELECT name
FROM \`${projectId}.${sourceDatasetId}.${sourceTableId}\`
LIMIT 10`,
};
// Create a new view in the dataset
const [view] = await myDataset.createTable(myTableId, options);
console.log(`View ${view.id} created.`);
}
Python
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
# from google.cloud import bigquery
# client = bigquery.Client()
# project = 'my-project'
# source_dataset_id = 'my_source_dataset'
# source_table_id = 'us_states'
# shared_dataset_ref = bigquery.DatasetReference(project, 'my_shared_dataset')
# This example shows how to create a shared view of a source table of
# US States. The source table contains all 50 states, while the view will
# contain only states with names starting with 'W'.
view_ref = shared_dataset_ref.table("my_shared_view")
view = bigquery.Table(view_ref)
sql_template = 'SELECT name, post_abbr FROM `{}.{}.{}` WHERE name LIKE "W%"'
view.view_query = sql_template.format(project, source_dataset_id, source_table_id)
view = client.create_table(view) # API request
print("Successfully created view at {}".format(view.full_table_id))