Obtén información sobre las vistas

En este documento, se describe cómo obtener información o metadatos acerca de las vistas en BigQuery.

Tienes las siguientes opciones para obtener metadatos de las vistas:

  • Usar Cloud Console o la IU web clásica de BigQuery
  • Usa el comando de CLI bq show
  • Realiza una llamada al método de la API tables.get
  • Con las bibliotecas cliente, sigue estos pasos:
  • Consultar las vistas INFORMATION_SCHEMA (Beta)

Permisos necesarios

Como mínimo, para obtener información sobre las vistas, debes tener permisos de bigquery.tables.get. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.get:

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

Además, si un usuario tiene permisos bigquery.datasets.create, se le otorga el acceso bigquery.dataOwner cuando crea un conjunto de datos. El acceso a bigquery.dataOwner brinda al usuario la capacidad de obtener información sobre las vistas del conjunto de datos.

Para obtener más información sobre las funciones y los permisos de Cloud IAM en BigQuery, consulta Control de acceso.

Obtén información de la vista

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

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.

    Detalles de una vista

IU clásica

  1. Expande tu conjunto de datos.

  2. Haz clic en el nombre de la vista.

  3. Haz clic en Details (Detalles). En la página Ver detalles, se muestran la descripción y la información de la vista, y la consulta de SQL que define la vista.

    Ver detalles

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 que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

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
}

Node.js

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

// 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 esta muestra, 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. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMA(Beta)

INFORMATION_SCHEMA es una serie de vistas que proporcionan acceso a metadatos sobre conjuntos de datos, rutinas, tablas, vistas, trabajos y reservas.

Vista VIEWS

Cuando consultas la vista INFORMATION_SCHEMA.VIEWS, los resultados contienen una fila por cada vista de un conjunto de datos.

La vista INFORMATION_SCHEMA.VIEWS tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
TABLE_CATALOG STRING El nombre del proyecto que contiene el conjunto de datos
TABLE_SCHEMA STRING El nombre del conjunto de datos que contiene la vista (también denominado id del conjunto de datos)
TABLE_NAME STRING El nombre de la vista (también denominado id de la tabla)
VIEW_DEFINITION STRING La consulta de SQL que define la vista
CHECK_OPTION STRING El valor que se muestra es siempre NULL
USE_STANDARD_SQL STRING YES si la vista se creó mediante una consulta de SQL estándar; NO si useLegacySql se establece en true

Ejemplos

Ejemplo 1:

En el ejemplo siguiente, se recuperan todas las columnas de la vista INFORMATION_SCHEMA.VIEWS, 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 (myproject).

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.view (por ejemplo, `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS).

Para ejecutar la consulta, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.

    Ir a Cloud Console

  2. Ingresa la siguiente consulta de SQL estándar en la casilla Editor de consulta. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. Haz clic en Ejecutar.

Línea de comandos

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

Los resultados deberían verse de la siguiente manera:

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

Ten en cuenta que los resultados muestran que esta vista se creó mediante una consulta de SQL heredado.

Ejemplo 2:

El ejemplo siguiente recupera la consulta de SQL y la sintaxis de la consulta que se usa para definir myview en mydataset en tu proyecto predeterminado (myproject).

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.view (por ejemplo, `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS).

Para ejecutar la consulta, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.

    Ir a Cloud Console

  2. Ingresa la siguiente consulta de SQL estándar en la casilla Editor de consulta. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. Haz clic en Ejecutar.

Línea de comandos

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

Los resultados deberían verse de la siguiente manera:

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

Ten en cuenta que los resultados muestran que esta vista se creó mediante una consulta de SQL estándar.

Próximos pasos