Gestionar tablas agrupadas en clústeres
En este documento se describe cómo obtener información sobre las tablas agrupadas en clústeres de BigQuery y controlar el acceso a ellas.
Para obtener más información, consulta las siguientes secciones:
- Para obtener información sobre la compatibilidad con tablas agrupadas en clústeres en BigQuery, consulta Introducción a las tablas agrupadas en clústeres.
- Para saber cómo crear tablas agrupadas en clústeres, consulta el artículo Crear tablas agrupadas en clústeres.
Antes de empezar
Para obtener información sobre las tablas, debe tener el permiso bigquery.tables.get
. Los siguientes roles de gestión de identidades y accesos predefinidos incluyen los permisos de bigquery.tables.get
:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Además, si un usuario tiene el permiso bigquery.datasets.create
, cuando cree un conjunto de datos, se le concederá acceso bigquery.dataOwner
a él.
El acceso bigquery.dataOwner
permite al usuario obtener información sobre las tablas de un conjunto de datos.
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.
Controlar el acceso a las tablas agrupadas
Para configurar el acceso a tablas y vistas, puede asignar un rol de gestión de identidades y accesos a una entidad en los siguientes niveles, que se indican en orden de rango de recursos permitidos (del mayor al menor):
- Un nivel alto de la Google Cloud jerarquía de recursos, como el nivel de proyecto, carpeta u organización
- a nivel de conjunto de datos
- el nivel de la tabla o de la vista
También puedes restringir el acceso a los datos de las tablas mediante los siguientes métodos:
El acceso a cualquier recurso protegido por IAM es aditivo. Por ejemplo, si una entidad no tiene acceso a un nivel alto, como un proyecto, puedes concederle acceso a nivel de conjunto de datos. De esta forma, la entidad tendrá acceso a las tablas y vistas del conjunto de datos. Del mismo modo, si la entidad no tiene acceso a nivel superior o de conjunto de datos, puedes concederle acceso a nivel de tabla o de vista.
Si asignas roles de IAM a un nivel superior de la Google Cloudjerarquía de recursos , como el nivel de proyecto, carpeta u organización, la entidad tendrá acceso a un amplio conjunto de recursos. Por ejemplo, si asignas un rol a una entidad a nivel de proyecto, esa entidad tendrá permisos que se aplican a todos los conjuntos de datos del proyecto.
Si se concede un rol a nivel de conjunto de datos, se especifican las operaciones que una entidad puede realizar en las tablas y vistas de ese conjunto de datos concreto, aunque la entidad no tenga acceso a un nivel superior. Para obtener información sobre cómo configurar controles de acceso a nivel de conjunto de datos, consulta el artículo Controlar el acceso a los conjuntos de datos.
Si se asigna un rol a nivel de tabla o de vista, se especifican las operaciones que puede realizar una entidad en tablas y vistas concretas, aunque no tenga acceso a un nivel superior. Para obtener información sobre cómo configurar controles de acceso a nivel de tabla, consulta el artículo Controlar el acceso a tablas y vistas.
También puedes crear roles personalizados de gestión de identidades y accesos. Si creas un rol personalizado, los permisos que concedas dependerán de las operaciones específicas que quieras que pueda realizar la entidad.
No puedes definir un permiso de denegación en ningún recurso protegido por IAM.
Para obtener más información sobre los roles y los permisos, consulta el artículo sobre descripción de roles de la documentación de gestión de identidades y accesos y los roles y permisos de gestión de identidades y accesos de BigQuery.
Obtener información sobre las tablas agrupadas en clústeres
Selecciona una de las opciones siguientes:
Consola
En la Google Cloud consola, ve al panel Recursos.
Haga clic en el nombre del conjunto de datos para desplegarlo y, a continuación, haga clic en el nombre de la tabla que quiera ver.
Haz clic en Detalles.
Se muestran los detalles de la tabla, incluidas las columnas de clustering.
SQL
En las tablas agrupadas en clústeres, puede consultar la columna CLUSTERING_ORDINAL_POSITION
en la vista INFORMATION_SCHEMA.COLUMNS
para encontrar el desplazamiento indexado en 1 de la columna en las columnas de clúster de la tabla:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE mydataset.data (column1 INT64, column2 INT64) CLUSTER BY column1, column2; SELECT column_name, clustering_ordinal_position FROM mydataset.INFORMATION_SCHEMA.COLUMNS;
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
La posición ordinal de la agrupación es 1 para column1
y 2 para column2
.
Puede consultar más metadatos de tablas en las vistas TABLES
, TABLE_OPTIONS
, COLUMNS
y COLUMN_FIELD_PATH
de INFORMATION_SCHEMA
.
bq
Ejecuta el comando bq show
para mostrar toda la información de la tabla. Usa la marca --schema
para mostrar solo la información del esquema de la tabla. La marca --format
se puede usar para controlar el resultado.
Si quieres obtener información sobre una tabla de un proyecto que no sea el predeterminado, añade el ID del proyecto al conjunto de datos con el siguiente formato: project_id:dataset
.
bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoDATASET
: el nombre del conjunto de datosTABLE
: el nombre de la tabla
Ejemplos:
Introduce el siguiente comando para mostrar toda la información sobre myclusteredtable
en mydataset
. mydataset
en tu proyecto predeterminado.
bq show --format=prettyjson mydataset.myclusteredtable
La salida debería tener este aspecto:
{ "clustering": { "fields": [ "customer_id" ] }, ... }
API
Llama al método bigquery.tables.get
y proporciona los parámetros pertinentes.
Mostrar las tablas agrupadas en clústeres de un conjunto de datos
Los permisos necesarios para enumerar las tablas agrupadas en clústeres y los pasos para hacerlo son los mismos que para las tablas estándar. Para obtener más información, consulta Listar tablas de un conjunto de datos.
Modificar la especificación de la agrupación en clústeres
Puedes cambiar o eliminar las especificaciones de clustering de una tabla, o cambiar el conjunto de columnas agrupadas en una tabla agrupada. Este método para actualizar el conjunto de columnas de clustering es útil en las tablas que usan inserciones de streaming continuas, ya que no se pueden sustituir fácilmente por otros métodos.
Sigue estos pasos para aplicar una nueva especificación de clustering a tablas sin particiones o con particiones.
En la herramienta bq, actualiza la especificación de clustering de tu tabla para que coincida con el nuevo clustering:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
Haz los cambios siguientes:
CLUSTER_COLUMN
: la columna en la que se basa la agrupación. Por ejemplo,mycolumn
.DATASET
: el nombre del conjunto de datos que contiene la tabla (por ejemplo,mydataset
ORIGINAL_TABLE
: el nombre de la tabla original (por ejemplo,mytable
)
También puedes llamar al método de API
tables.update
otables.patch
para modificar la especificación de la agrupación en clústeres.Para agrupar todas las filas según la nueva especificación de clustering, ejecuta la siguiente instrucción
UPDATE
:UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true
Siguientes pasos
- Para obtener información sobre cómo consultar tablas agrupadas en clústeres, consulta Consultar tablas agrupadas en clústeres.
- Para obtener una descripción general de la compatibilidad con tablas particionadas en BigQuery, consulta Introducción a las tablas particionadas.
- Para saber cómo crear tablas con particiones, consulta Crear tablas con particiones.