Crear vistas lógicas
En este documento se describe cómo crear vistas lógicas en BigQuery.
Puede crear una vista lógica de las siguientes formas:
- Con la Google Cloud consola.
- Usando el comando
bq mk
de la herramienta de línea de comandos bq. - Llamar al método de API
tables.insert
. - Usar las bibliotecas de cliente.
- Enviar una
CREATE VIEW
declaración del lenguaje de definición de datos (DDL).
Ver limitaciones
Las vistas de BigQuery están sujetas a las siguientes limitaciones:
- Las vistas son de solo lectura. Por ejemplo, no puedes ejecutar consultas que inserten, actualicen o eliminen datos.
- El conjunto de datos que contiene la vista y el conjunto de datos que contiene las tablas a las que hace referencia la vista deben estar en la misma ubicación.
- Una referencia dentro de una vista debe estar cualificada con un conjunto de datos. El conjunto de datos predeterminado no afecta al cuerpo de una vista.
- No puedes usar el método
TableDataList
de la API JSON para obtener datos de una vista. Para obtener más información, consulta Tabledata: list. - No puedes combinar consultas de GoogleSQL y de SQL antiguo cuando usas vistas. Una consulta de GoogleSQL no puede hacer referencia a una vista definida con sintaxis de Legacy SQL.
- No puede hacer referencia a parámetros de consulta en las vistas.
- Los esquemas de las tablas subyacentes se almacenan con la vista cuando se crea. Si se añaden, eliminan o modifican columnas después de crear la vista, esta no se actualizará automáticamente y el esquema registrado seguirá siendo incorrecto hasta que se cambie la definición SQL de la vista o se vuelva a crear. Aunque el esquema notificado puede ser impreciso, todas las consultas enviadas producen resultados precisos.
- No puedes actualizar automáticamente una vista de SQL antiguo a la sintaxis de GoogleSQL. Para modificar la consulta utilizada para definir una vista, puede usar lo siguiente:
- La opción Editar consulta de la Google Cloud consola
- El comando
bq update --view
de la herramienta de línea de comandos bq - Las bibliotecas de cliente de BigQuery
- Los métodos de la API update o patch.
- No puedes incluir una función definida por el usuario temporal ni una tabla temporal en la consulta SQL que define una vista.
- No puedes hacer referencia a una vista en una consulta de tabla con comodín.
Para obtener información sobre las cuotas y los límites que se aplican a las vistas, consulta Límites de las vistas.
Antes de empezar
Concede roles de gestión de identidades y accesos (IAM) que proporcionen a los usuarios los permisos necesarios para realizar cada tarea de este documento.
Permisos obligatorios
Las vistas se tratan como recursos de tabla en BigQuery, por lo que para crear una vista se necesitan los mismos permisos que para crear una tabla. También debe tener permisos para consultar cualquier tabla a la que haga referencia la consulta de SQL de la vista.
Para crear una vista, necesita el permiso bigquery.tables.create
IAM. El rol de gestión de identidades y accesos predefinido roles/bigquery.dataEditor
incluye los permisos que necesitas para crear una vista.
Además, si tienes el permiso bigquery.datasets.create
, puedes crear vistas en los conjuntos de datos que crees. Para crear una vista de datos que no sean de tu propiedad, debes tener permiso de bigquery.tables.getData
en esa tabla.
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Nombre de la vista
Cuando creas una vista en BigQuery, el nombre de la vista debe ser único por conjunto de datos. El nombre de la vista puede:
- Contener caracteres con un total de hasta 1024 bytes UTF-8.
- Contener caracteres Unicode de las categorías L (letra), M (marca), N (número), Pc (conector, incluido el guion bajo), Pd (guion) y Zs (espacio). Para obtener más información, consulta la sección Categoría general.
Estos son algunos ejemplos de nombres de vista válidos:
view 01
, ग्राहक
, 00_お客様
y étudiant-01
.
Desventajas:
- Los nombres de tabla distinguen entre mayúsculas y minúsculas de forma predeterminada.
mytable
yMyTable
pueden coexistir en el mismo conjunto de datos, a menos que formen parte de un conjunto de datos con la opción de distinción entre mayúsculas y minúsculas desactivada. - Algunos nombres y prefijos de nombres de vista están reservados. Si recibe un error que indica que el nombre o el prefijo de la vista está reservado, seleccione otro nombre y vuelva a intentarlo.
Si incluyes varios operadores de punto (
.
) en una secuencia, los operadores duplicados se eliminan implícitamente.Por ejemplo, este:
project_name....dataset_name..table_name
Se convierte en lo siguiente:
project_name.dataset_name.table_name
Crear una vista
Para crear una vista, escribe una consulta de SQL que se use para definir los datos a los que puede acceder la vista. La consulta de SQL debe constar de una instrucción SELECT
.
No se permiten otros tipos de instrucciones (como las instrucciones DML) ni las consultas de varias instrucciones en las consultas de vistas.
Para crear una vista, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página BigQuery.
Haz clic en
Consulta de SQL.En el editor de consultas, introduce una consulta de SQL válida.
También puedes abrir una consulta guardada.
Haz clic en
Guardar > Guardar vista.
En el cuadro de diálogo Guardar vista, haz lo siguiente:
- En el menú Proyecto, selecciona un proyecto en el que almacenar la vista.
- En el menú Conjunto de datos, selecciona un conjunto de datos o crea uno para almacenar la vista. La vista se debe guardar en un conjunto de datos de la misma región que los datos de origen.
- En el campo Tabla, introduce el nombre de la vista.
- Haz clic en Guardar.
SQL
Usa la instrucción CREATE VIEW
.
En el siguiente ejemplo se crea una vista llamada usa_male_names
a partir del conjunto de datos público USA names:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE VIEW mydataset.usa_male_names(name, number) AS ( SELECT name, number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = 'M' ORDER BY number DESC );
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq mk
con la marca --view
. En las consultas de GoogleSQL, añade la marca --use_legacy_sql
y asigna el valor false
. Algunos parámetros opcionales son --add_tags
, --expiration
, --description
y --label
. Para ver la lista completa de parámetros, consulta la referencia del comando bq mk
.
Si tu consulta hace referencia a recursos de funciones definidas por el usuario (UDF) externas almacenados en Cloud Storage o en archivos locales, usa la marca --view_udf_resource
para especificar esos recursos. Aquí no se muestra la marca --view_udf_resource
. Para obtener más información sobre el uso de funciones definidas por el usuario, consulta Funciones definidas por el usuario.
Si va a crear una vista en un proyecto que no sea el predeterminado, especifique el ID del proyecto con la marca --project_id
.
bq mk \ --use_legacy_sql=false \ --view_udf_resource=PATH_TO_FILE \ --expiration=INTEGER \ --description="DESCRIPTION" \ --label=KEY_1:VALUE_1 \ --add_tags=KEY_2:VALUE_2[,...] \ --view='QUERY9; \ --project_id=PROJECT_ID \ DATASET.VIEW
Haz los cambios siguientes:
PATH_TO_FILE
es el URI o la ruta del sistema de archivos local a un archivo de código que se cargará y evaluará inmediatamente como un recurso de función definida por el usuario que utiliza la vista. Repite la marca para especificar varios archivos.INTEGER
define el tiempo de vida (en segundos) de la vista. SiINTEGER
es0
, la vista no caduca. Si no incluyes la marca--expiration
, BigQuery creará la vista con el tiempo de vida predeterminado de la tabla del conjunto de datos.DESCRIPTION
es una descripción de la vista entre comillas.KEY_1:VALUE_1
es el par clave-valor que representa una etiqueta. Repite la marca--label
para especificar varias etiquetas.KEY_2:VALUE_2
es el par clave-valor que representa una etiqueta. Añade varias etiquetas con la misma marca separando los pares clave:valor con comas.QUERY
es una consulta válida.PROJECT_ID
es el ID de tu proyecto (si no tienes ningún proyecto predeterminado configurado).DATASET
es un conjunto de datos de tu proyecto.VIEW
es el nombre de la vista que quieres crear.
Ejemplos:
Introduce el siguiente comando para crear una vista llamada myview
en mydataset
en tu proyecto predeterminado. El tiempo de vencimiento es de 3600 segundos (1 hora), la descripción es This is my view
y la etiqueta es organization:development
. La consulta usada para crear la vista
consulta datos del conjunto de datos público "USA Name Data".
bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number D
ESC' \
mydataset.myview
Introduce el siguiente comando para crear una vista llamada myview
en mydataset
en myotherproject
. La descripción es This is my view
, la etiqueta es organization:development
y el vencimiento de la vista es el mismo que el de la tabla predeterminada del conjunto de datos.
La consulta usada para crear la vista
consulta datos del conjunto de datos público "USA Name Data".
bq mk \
--use_legacy_sql=false \
--description "This is my view" \
--label organization:development \
--project_id myotherproject \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number D
ESC' \
mydataset.myview
Una vez creada la vista, puedes actualizar su fecha de vencimiento, su descripción y sus etiquetas. Para obtener más información, consulta Actualizar vistas.
Terraform
Usa el recurso google_bigquery_table
.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se crea una vista llamada myview
:
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
API
Llama al método tables.insert
con un recurso de tabla que contenga una propiedad view
.
Go
Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Una vez que hayas creado la vista, podrás consultarla como si fuera una tabla.
Ver seguridad
Para controlar el acceso a las vistas en BigQuery, consulta Vistas autorizadas.
Siguientes pasos
- Para obtener información sobre cómo crear una vista autorizada, consulta el artículo Crear vistas autorizadas.
- Para obtener información sobre cómo obtener metadatos de vistas, consulta Obtener información sobre las vistas.
- Para obtener más información sobre cómo gestionar vistas, consulta el artículo Gestionar vistas.