Obtén información sobre las vistas

En este documento, se describe cómo enumerar, obtener información y ver metadatos para vistas en BigQuery.

Puedes enumerar vistas en conjuntos de datos de las siguientes formas:

  • Usa la consola de Google Cloud
  • Usa el comando bq ls en la herramienta de línea de comandos de bq
  • Llamar al método de la API tables.list
  • Usa bibliotecas cliente.

Antes de comenzar

Otorga roles de administración de identidades y accesos (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento.

Vistas de lista

El proceso para hacer una lista de las vistas es igual al proceso para hacer una lista de las tablas.

Permisos necesarios

Para mostrar las vistas en un conjunto de datos, necesitas el permiso bigquery.tables.list de IAM.

Cada uno de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para mostrar las vistas en un conjunto de datos:

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

Para obtener más información sobre los roles de IAM y los permisos en BigQuery, consulta Roles y permisos predefinidos.

Muestra una lista de las vistas de un conjunto de datos

Para mostrar una lista de las vistas de un conjunto de datos, sigue estos pasos:

Console

  1. En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.

  2. Desplázate por la lista para ver las tablas en el conjunto de datos. Las tablas y las vistas están identificadas con íconos diferentes.

    Íconos de tabla y vista

SQL

Usa la vista INFORMATION_SCHEMA.VIEWS:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ingresa la siguiente sentencia:

    SELECT table_name
    FROM DATASET_ID.INFORMATION_SCHEMA.VIEWS;
    

    Reemplaza DATASET_ID por el nombre del conjunto de datos.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

bq

Ejecuta el comando bq ls. Se puede usar la marca --format para controlar el resultado. Si enumeras vistas en un proyecto que no es el predeterminado, agrega el ID del proyecto al conjunto de datos en el siguiente formato: project_id:dataset.

bq ls --format=pretty project_id:dataset

En el ejemplo anterior, se ilustra lo siguiente:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos.

Cuando ejecutas el comando, el campo Type muestra TABLE o VIEW. Por ejemplo:

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

Ejemplos:

Ingresa el siguiente comando para enumerar las vistas en el conjunto de datos mydataset en tu proyecto predeterminado.

bq ls --format=pretty mydataset

Ingresa el siguiente comando para enumerar las vistas en el conjunto de datos mydataset en myotherproject.

bq ls --format=pretty myotherproject:mydataset

API

Para enumerar vistas con la API, llama al método tables.list.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

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)
	}
	defer client.Close()

	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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.


from google.cloud import bigquery

# 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))

Puedes obtener metadatos de vista de la siguiente manera:

  • Usa la consola de Google Cloud
  • Usar el comando bq show de la herramienta de línea de comandos de bq
  • Realiza una llamada al método de la API tables.get
  • Usa bibliotecas cliente.
  • Consulta las vistas INFORMATION_SCHEMA

Obtén información sobre las vistas

La obtención de información sobre las vistas es igual al proceso para obtener información sobre tablas.

Permisos necesarios

Para obtener información sobre una vista, necesitas el permiso bigquery.tables.get de IAM.

Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para obtener información sobre una vista:

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Además, si tienes el permiso bigquery.datasets.create, puedes obtener información sobre las vistas de los conjuntos de datos que crees.

Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.

Si deseas obtener información sobre las vistas, haz lo siguiente:

Console

  1. Expande tu conjunto de datos.

  2. Haz clic en el nombre de la vista.

  3. Haz clic en Detalles (Details). En la pestaña Detalles, se muestran la descripción y la información de la vista, y la consulta de SQL que define la vista.

    Ver detalles

SQL

Consulta la vista INFORMATION_SCHEMA.VIEWS. En el ejemplo siguiente, se recuperan todas las columnas, excepto check_option, que se reserva para uso futuro. Los metadatos que se muestran corresponden a todas las vistas de mydataset en tu proyecto predeterminado.

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ingresa la siguiente sentencia:

      SELECT
        * EXCEPT (check_option)
      FROM
        mydataset.INFORMATION_SCHEMA.VIEWS;
      

    Reemplaza DATASET_ID por el nombre del conjunto de datos.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

bq

Ejecuta el comando bq show. La marca --format se puede usar para controlar el resultado. Si quieres obtener información sobre una vista en un proyecto que no sea tu proyecto predeterminado, agrega el ID del proyecto al conjunto de datos en el formato siguiente: [PROJECT_ID]:[DATASET].

bq show \
--format=prettyjson \
project_id:dataset.view

En el ejemplo anterior, se ilustra lo siguiente:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos.
  • view es el nombre de la vista.

Ejemplos:

Ingresa el comando siguiente para mostrar información sobre myview en el conjunto de datos mydataset de tu proyecto predeterminado.

bq show --format=prettyjson mydataset.myview

Ingresa el comando siguiente para mostrar información sobre myview en el conjunto de datos mydataset en myotherproject.

bq show --format=prettyjson myotherproject:mydataset.myview

API

Llama al método tables.get y proporciona los parámetros relevantes.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getView demonstrates fetching the metadata from a BigQuery logical view and printing it to an io.Writer.
func getView(w io.Writer, projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)
	return nil
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

// Sample to get a view
public class GetView {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String viewName = "MY_VIEW_NAME";
    getView(datasetName, viewName);
  }

  public static void getView(String datasetName, String viewName) {
    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);
      Table view = bigquery.getTable(tableId);
      System.out.println("View retrieved successfully" + view.getDescription());
    } catch (BigQueryException e) {
      System.out.println("View not retrieved. \n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getView() {
  // Retrieves view properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_view";

  // Retrieve view
  const dataset = bigquery.dataset(datasetId);
  const [view] = await dataset.table(tableId).get();

  const fullTableId = view.metadata.id;
  const viewQuery = view.metadata.view.query;

  // Display view properties
  console.log(`View at ${fullTableId}`);
  console.log(`View query: ${viewQuery}`);
}
getView();

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
# Make an API request to get the table resource.
view = client.get_table(view_id)

# Display view properties
print(f"Retrieved {view.table_type}: {str(view.reference)}")
print(f"View Query:\n{view.view_query}")

Ver la seguridad

Para controlar el acceso a las vistas en BigQuery, consulta Vistas autorizadas.

¿Qué sigue?