列出视图

本文档介绍了如何在 BigQuery 中列出视图。

您可以通过以下方式列出数据集中的视图:

  • 使用 Cloud Console 或经典版 BigQuery 网页界面
  • 使用 bq ls CLI 命令
  • 调用 tables.list API 方法
  • 使用客户端库

所需权限

如需列出数据集中的视图,您至少必须获得 bigquery.tables.list 权限。以下预定义的 Cloud IAM 角色可提供 bigquery.tables.list 权限:

  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

如需详细了解 BigQuery 中的 Cloud IAM 角色和权限,请参阅预定义的角色和权限

列出视图

列出视图的过程与列出表的过程完全相同。

要列出数据集中的视图,请执行以下操作:

控制台

  1. 在导航面板的资源部分,展开您的项目并点击数据集。此时会显示数据集中的表和视图。

  2. 滚动列表,查看数据集中的表。表和视图由不同的图标进行标识。

    表和视图图标

经典版界面

  1. 在 BigQuery 网页界面的导航窗格中,点击数据集左侧的蓝色箭头或双击数据集名称展开数据集。这将显示数据集中的表和视图。

  2. 滚动列表,查看数据集中的表。表和视图由不同的图标进行标识。

    查看表

CLI

发出 bq ls 命令。--format 标志可用于控制输出。如果您要列出非默认项目中的视图,请按照以下格式将项目 ID 添加到数据集:project_id:dataset

bq ls --format=pretty project_id:dataset

其中:

  • project_id 是您的项目 ID。
  • dataset 是数据集的名称。

运行该命令时,Type 字段会显示 TABLEVIEW。例如:

+-------------------------+-------+----------------------+-------------------+
|         tableId         | Type  |        Labels        | Time Partitioning |
+-------------------------+-------+----------------------+-------------------+
| mytable                 | TABLE | department:shipping  |                   |
| myview                  | VIEW  |                      |                   |
+-------------------------+-------+----------------------+-------------------+

示例:

输入以下命令可列出默认项目的数据集 mydataset 中的视图。

bq ls --format=pretty mydataset

输入以下命令可列出 myotherproject 的数据集 mydataset 中的视图。

bq ls --format=pretty myotherproject:mydataset

API

要使用 API 列出视图,请调用 tables.list 方法。

Go

尝试此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listTables demonstrates iterating through the collection of tables in a given dataset.
func listTables(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}

	ts := client.Dataset(datasetID).Tables(ctx)
	for {
		t, err := ts.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "Table: %q\n", t.TableID)
	}
	return nil
}

Python

尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档

# TODO(developer): Import the client library.
# from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the tables you are listing.
# dataset_id = 'your-project.your_dataset'

tables = client.list_tables(dataset_id)  # Make an API request.

print("Tables contained in '{}':".format(dataset_id))
for table in tables:
    print("{}.{}.{}".format(table.project, table.dataset_id, table.table_id))

后续步骤