Crear tablas de BigLake de Blob Storage
En este documento se describe cómo crear una tabla de BigLake de Azure Blob Storage. Una tabla de BigLake te permite usar la delegación de acceso para consultar datos en Blob Storage. La delegación de acceso desacopla el acceso a la tabla de BigLake del acceso al almacén de datos subyacente.
Para obtener información sobre cómo fluyen los datos entre BigQuery y Blob Storage, consulta Flujo de datos al consultar datos.
Antes de empezar
Asegúrate de que tienes una conexión para acceder a los datos de tu Blob Storage.
Roles obligatorios
Para obtener los permisos que necesitas para crear una tabla externa, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de BigQuery (roles/bigquery.admin
) en tu conjunto de datos.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear una tabla externa. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear una tabla externa, se necesitan los siguientes permisos:
-
bigquery.tables.create
-
bigquery.connections.delegate
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Crear conjunto de datos
Antes de crear una tabla externa, debe crear un conjunto de datos en la región admitida. Selecciona una de las siguientes opciones:Consola
Ve a la página BigQuery.
- En el panel Explorador, selecciona el proyecto en el que quieras crear el conjunto de datos.
- Abre la opción Ver acciones y haz clic en Crear conjunto de datos.
- En la página Crear conjunto de datos, especifica los siguientes detalles:
- En ID del conjunto de datos, introduzca un nombre único para el conjunto de datos.
- En Ubicación de los datos, elige una región admitida.
- Opcional: Para eliminar las tablas automáticamente, marque la casilla Habilitar la caducidad de las tablas y defina la Antigüedad máxima predeterminada de las tablas en días. Los datos de Azure no se eliminan cuando caduca la tabla.
- Si quieres usar la ordenación predeterminada, despliega la sección Opciones avanzadas y selecciona la opción Habilitar ordenación predeterminada.
- Haz clic en Crear conjunto de datos.
SQL
Usa la CREATE SCHEMA
declaración de DDL.
En el siguiente ejemplo se crea un conjunto de datos en la región
azure-eastus2
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE SCHEMA mydataset OPTIONS ( location = 'azure-eastus2');
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
En un entorno de línea de comandos, crea un conjunto de datos con el bq mk
comando:
bq --location=LOCATION mk \ --dataset \ PROJECT_ID:DATASET_NAME
El parámetro --project_id
anula el proyecto predeterminado.
Haz los cambios siguientes:
LOCATION
: la ubicación de tu conjunto de datosPara obtener información sobre las regiones admitidas, consulta Ubicaciones. Una vez que haya creado un conjunto de datos, no podrá cambiar su ubicación. Puedes definir un valor predeterminado para la ubicación mediante el archivo
.bigqueryrc
.PROJECT_ID
: tu ID de proyectoDATASET_NAME
: el nombre del conjunto de datos que quieres crearPara crear un conjunto de datos en un proyecto que no sea el predeterminado, añade el ID del proyecto al nombre del conjunto de datos con el siguiente formato:
PROJECT_ID:DATASET_NAME
.
Crear tablas de BigLake a partir de datos sin particiones
Selecciona una de las opciones siguientes:
Consola
Ve a la página BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
En la sección Información del conjunto de datos, haz clic en
Crear tabla.En la página Crear tabla, ve a la sección Fuente y haz lo siguiente:
- En Crear tabla a partir de, selecciona Azure Blob Storage.
En Seleccionar ruta de Azure Blob Storage, introduce una ruta de Blob Storage con el siguiente formato:
azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH
Haz los cambios siguientes:
AZURE_STORAGE_ACCOUNT_NAME
: nombre de la cuenta de Blob Storage. La región de la cuenta debe ser la misma que la del conjunto de datos.CONTAINER_NAME
: nombre del contenedor de Blob Storage.FILE_PATH
: ruta de datos que apunta a los datos de Blob Storage. Por ejemplo, en un archivo CSV,FILE_PATH
puede sermyfile.csv
.
En Formato de archivo, seleccione el formato de datos en Azure. Los formatos admitidos son AVRO, CSV, DELTA_LAKE, ICEBERG, JSONL, ORC y PARQUET.
En la sección Destino, haga lo siguiente:
- En Conjunto de datos, elija el conjunto de datos adecuado.
- En el campo Tabla, introduce el nombre de la tabla.
- Verifica que el Tipo de tabla sea Tabla externa.
- En ID de conexión, elija el ID de conexión adecuado en el menú desplegable. Para obtener información sobre las conexiones, consulta Conectarse a Blob Storage.
En la sección Esquema, puedes habilitar la detección automática de esquemas o especificar manualmente un esquema si tienes un archivo de origen. Si no tienes un archivo de origen, debes especificar manualmente un esquema.
Para habilitar la detección automática de esquemas, selecciona la opción Detectar automáticamente.
Para especificar un esquema manualmente, desmarca la opción Detectar automáticamente. Habilita Editar como texto e introduce el esquema de la tabla como una matriz JSON.
Haz clic en Crear tabla.
SQL
Para crear una tabla de BigLake, usa la instrucción CREATE EXTERNAL TABLE
con la cláusula WITH CONNECTION
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE EXTERNAL TABLE DATASET_NAME.TABLE_NAME WITH CONNECTION `AZURE_LOCATION.CONNECTION_NAME` OPTIONS ( format = 'DATA_FORMAT', uris = ['azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH']);
Haz los cambios siguientes:
DATASET_NAME
: el nombre del conjunto de datos que has creadoTABLE_NAME
: el nombre que quieras asignar a esta tabla.AZURE_LOCATION
: una ubicación de Azure en Google Cloud, comoazure-eastus2
CONNECTION_NAME
: el nombre de la conexión que has creadoDATA_FORMAT
: cualquiera de los formatos federados de BigQuery admitidos, comoAVRO
,CSV
,DELTA_LAKE
oICEBERG
(vista previa).AZURE_STORAGE_ACCOUNT_NAME
: el nombre de la cuenta de almacenamiento de blobsCONTAINER_NAME
: el nombre del contenedor de Blob StorageFILE_PATH
: ruta de datos que apunta a los datos de Blob Storage
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Ejemplo:
CREATE EXTERNAL TABLE absdataset.abstable WITH CONNECTION `azure-eastus2.abs-read-conn` OPTIONS ( format = 'CSV', uris = ['azure://account_name.blob.core.windows.net/container/path/file.csv']);
bq
Crea un archivo de definición de tabla:
bq mkdef \ --source_format=DATA_FORMAT \ --connection_id=AZURE_LOCATION.CONNECTION_NAME \ "azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH" > table_def
Haz los cambios siguientes:
DATA_FORMAT
: cualquiera de los formatos federados de BigQuery admitidos, comoAVRO
,CSV
,ICEBERG
oPARQUET
AZURE_LOCATION
: una ubicación de Azure en Google Cloud, comoazure-eastus2
CONNECTION_NAME
: el nombre de la conexión que has creadoAZURE_STORAGE_ACCOUNT_NAME
: el nombre de la cuenta de almacenamiento de blobsCONTAINER_NAME
: el nombre del contenedor de Blob StorageFILE_PATH
: la ruta de datos que apunta a los datos de Blob Storage
A continuación, crea la tabla de BigLake:
bq mk --external_table_definition=table_def DATASET_NAME.TABLE_NAME
Haz los cambios siguientes:
DATASET_NAME
: el nombre del conjunto de datos que has creadoTABLE_NAME
: el nombre que quieras asignar a esta tabla
Por ejemplo, los siguientes comandos crean una tabla de BigLake, my_dataset.my_table
, que puede consultar los datos de Blob Storage almacenados en la ruta azure://account_name.blob.core.windows.net/container/path
y que tiene una conexión de lectura en la ubicación azure-eastus2
:
bq mkdef \ --source_format=AVRO \ --connection_id=azure-eastus2.read-conn \ "azure://account_name.blob.core.windows.net/container/path" > table_def bq mk \ --external_table_definition=table_def my_dataset.my_table
API
Llama al método tables.insert
de la API y crea un ExternalDataConfiguration
en el recurso Table
que le envíes.
Especifique la propiedad schema
o asigne el valor true
a la propiedad autodetect
para habilitar la detección automática del esquema en las fuentes de datos compatibles.
Especifica la propiedad connectionId
para identificar la conexión que se va a usar para conectarse a Blob Storage.
Crear tablas de BigLake en datos con particiones
Puedes crear una tabla de BigLake para los datos con particiones de Hive en Blob Storage. Después de crear una tabla particionada externamente, no puedes cambiar la clave de partición. Para cambiar la clave de partición, debes volver a crear la tabla.
Para crear una tabla de BigLake basada en datos con particiones de Hive, seleccione una de las siguientes opciones:
Consola
Ve a la página BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Haz clic en
Ver acciones y, a continuación, en Crear tabla. Se abrirá el panel Crear tabla.En la sección Fuente, especifica los siguientes detalles:
En Crear tabla a partir de, selecciona una de las siguientes opciones:
- Amazon S3
- Azure Blob Storage
Proporciona la ruta a la carpeta con comodines. Por ejemplo:
- En Amazon S3:
s3://mybucket/*
- En el caso de Blob Storage:
azure://mystorageaccount.blob.core.windows.net/mycontainer/*
La carpeta debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.
- En Amazon S3:
En la lista Formato de archivo, selecciona el tipo de archivo.
Seleccione la casilla Partición de datos de origen y, a continuación, especifique los siguientes detalles:
- En Selecciona el prefijo del URI de origen, introduce el prefijo del URI. Por ejemplo,
s3://mybucket/my_files
. - Opcional: Para requerir un filtro de partición en todas las consultas de esta tabla, marque la casilla Requerir filtro de partición. Si se requiere un filtro de partición, se pueden reducir los costes y mejorar el rendimiento. Para obtener más información, consulta Requerir filtros de predicado en claves de partición en consultas.
En la sección Modo de inferencia de partición, seleccione una de las siguientes opciones:
- Tipos de inferencias automáticas: define el modo de detección del esquema de partición como
AUTO
. - Todas las columnas son cadenas: define el modo de detección del esquema de partición como
STRINGS
. - Proporcionar mi propio esquema: define el modo de detección del esquema de partición como
CUSTOM
e introduce manualmente la información del esquema de las claves de partición. Para obtener más información, consulta Esquema de clave de partición personalizada.
- Tipos de inferencias automáticas: define el modo de detección del esquema de partición como
- En Selecciona el prefijo del URI de origen, introduce el prefijo del URI. Por ejemplo,
En la sección Destino, especifica los siguientes detalles:
- En Proyecto, selecciona el proyecto en el que quieras crear la tabla.
- En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
- En Tabla, introduce el nombre de la tabla que quieras crear.
- En Tipo de tabla, comprueba que esté seleccionada la opción Tabla externa.
- En ID de conexión, selecciona la conexión que has creado anteriormente.
En la sección Esquema, puedes habilitar la detección automática de esquemas o especificar manualmente un esquema si tienes un archivo de origen. Si no tienes un archivo de origen, debes especificar manualmente un esquema.
Para habilitar la detección automática de esquemas, selecciona la opción Detectar automáticamente.
Para especificar un esquema manualmente, desmarca la opción Detectar automáticamente. Habilita Editar como texto e introduce el esquema de la tabla como una matriz JSON.
Para ignorar las filas con valores de columna adicionales que no coincidan con el esquema, despliega la sección Opciones avanzadas y selecciona Valores desconocidos.
Haz clic en Crear tabla.
SQL
Usa la CREATE EXTERNAL TABLE
declaración de DDL:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH PARTITION COLUMNS ( PARTITION_COLUMN PARTITION_COLUMN_TYPE, ) WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX", uris=['FILE_PATH'], format ="TABLE_FORMAT" );
Haz los cambios siguientes:
PROJECT_ID
: el nombre del proyecto en el que quieres crear la tabla. Por ejemplo,myproject
.DATASET
: el nombre del conjunto de datos de BigQuery en el que quieres crear la tabla. Por ejemplo,mydataset
.EXTERNAL_TABLE_NAME
: el nombre de la tabla que quiere crear (por ejemplo,mytable
)PARTITION_COLUMN
: el nombre de la columna de particiónPARTITION_COLUMN_TYPE
: el tipo de la columna de particiónREGION
: la región que contiene la conexión (por ejemplo,us
)CONNECTION_ID
: el nombre de la conexión (por ejemplo,myconnection
)HIVE_PARTITION_URI_PREFIX
: prefijo de URI de partición de Hive. Por ejemplo:s3://mybucket/
azure://mystorageaccount.blob.core.windows.net/mycontainer/
FILE_PATH
: ruta a la fuente de datos de la tabla externa que quieras crear. Por ejemplo:s3://mybucket/*.parquet
azure://mystorageaccount.blob.core.windows.net/mycontainer/*.parquet
TABLE_FORMAT
: el formato de la tabla que quieres crear (por ejemplo,PARQUET
)
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Ejemplos
En el siguiente ejemplo se crea una tabla de BigLake sobre datos particionados en Amazon S3. El esquema se detecta automáticamente.
CREATE EXTERNAL TABLE `my_dataset.my_table` WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "s3://mybucket/products", uris = ['s3://mybucket/products/*'] );
En el siguiente ejemplo se crea una tabla de BigLake sobre datos particionados en Blob Storage. Se especifica el esquema.
CREATE EXTERNAL TABLE `my_dataset.my_table` ( ProductId INTEGER, ProductName, STRING, ProductType, STRING ) WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "azure://mystorageaccount.blob.core.windows.net/mycontainer/products", uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/*'] );
bq
Primero, usa el comando bq mkdef
para crear un archivo de definición de tabla:
bq mkdef \ --source_format=SOURCE_FORMAT \ --connection_id=REGION.CONNECTION_ID \ --hive_partitioning_mode=PARTITIONING_MODE \ --hive_partitioning_source_uri_prefix=URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ URIS > DEFINITION_FILE
Haz los cambios siguientes:
SOURCE_FORMAT
: el formato de la fuente de datos externa. Por ejemplo,CSV
.REGION
: la región que contiene la conexión (por ejemplo,us
).CONNECTION_ID
: el nombre de la conexión (por ejemplo,myconnection
).PARTITIONING_MODE
: el modo de particiones de Hive. Utilice uno de los siguientes valores:AUTO
: detecta automáticamente los nombres y los tipos de las claves.STRINGS
: convierte automáticamente los nombres de las claves en cadenas.CUSTOM
: codifica el esquema de clave en el prefijo del URI de origen.
URI_SHARED_PREFIX
: el prefijo del URI de origen.BOOLEAN
: especifica si se debe requerir un filtro de predicado en el momento de la consulta. Esta marca es opcional. El valor predeterminado esfalse
.URIS
: la ruta a la carpeta de Amazon S3 o Blob Storage, con formato de comodín.DEFINITION_FILE
: la ruta al archivo de definición de tabla en tu máquina local.
Si PARTITIONING_MODE
es CUSTOM
, incluye el esquema de clave de partición en el prefijo del URI de origen con el siguiente formato:
--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Una vez que hayas creado el archivo de definición de tabla, usa el comando bq mk
para crear la tabla de BigLake:
bq mk --external_table_definition=DEFINITION_FILE \ DATASET_NAME.TABLE_NAME \ SCHEMA
Haz los cambios siguientes:
DEFINITION_FILE
: la ruta al archivo de definición de la tabla.DATASET_NAME
: el nombre del conjunto de datos que contiene la tabla.TABLE_NAME
: el nombre de la tabla que vas a crear.SCHEMA
: especifica una ruta a un archivo de esquema JSON o el esquema en el formatofield:data_type,field:data_type,...
. Para usar la detección automática de esquemas, omite este argumento.
Ejemplos
En el siguiente ejemplo se usa el modo de particiones de Hive AUTO
para datos de Amazon S3:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
--metadata_cache_mode=AUTOMATIC \
s3://mybucket/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
En el siguiente ejemplo se usa el modo de particiones de Hive STRING
para datos de Amazon S3:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
s3://mybucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
En el siguiente ejemplo se usa el modo de partición de CUSTOM
Hive para los datos de almacenamiento de blobs:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=azure://mystorageaccount.blob.core.windows.net/mycontainer/{dt:DATE}/{val:STRING} \
azure://mystorageaccount.blob.core.windows.net/mycontainer/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
API
Para definir la partición de Hive mediante la API de BigQuery, incluye el objeto hivePartitioningOptions
en el objeto ExternalDataConfiguration
cuando crees el archivo de definición de tabla.
Para crear una tabla BigLake, también debe especificar un valor para el campo connectionId
.
Si asigna el valor CUSTOM
al campo hivePartitioningOptions.mode
, debe codificar el esquema de la clave de partición en el campo hivePartitioningOptions.sourceUriPrefix
de la siguiente manera:
s3://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Para forzar el uso de un filtro de predicado en el momento de la consulta, asigna el valor true
al campo hivePartitioningOptions.requirePartitionFilter
.
Tablas de Delta Lake
Delta Lake es un formato de tabla de código abierto que admite tablas de datos a escala de petabytes. Las tablas de Delta Lake se pueden consultar como tablas temporales y permanentes, y se admiten como tablas de BigLake.
Sincronización de esquemas
Delta Lake mantiene un esquema canónico como parte de sus metadatos. No puedes actualizar un esquema con un archivo de metadatos JSON. Para actualizar el esquema, sigue estos pasos:
Usa el comando
bq update
con la marca--autodetect_schema
:bq update --autodetect_schema PROJECT_ID:DATASET.TABLE
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la tabla que quieres actualizarDATASET
: el conjunto de datos que contiene la tabla que quieres actualizarTABLE
: la tabla que quieras actualizar
Conversión de tipos
BigQuery convierte los tipos de datos de Delta Lake en los siguientes tipos de datos de BigQuery:
Tipo de Delta Lake | Tipo de BigQuery |
---|---|
boolean |
BOOL |
byte |
INT64 |
int |
INT64 |
long |
INT64 |
float |
FLOAT64 |
double |
FLOAT64 |
Decimal(P/S) |
NUMERIC o BIG_NUMERIC , según la precisión |
date |
DATE |
time |
TIME |
timestamp (not partition column) |
TIMESTAMP |
timestamp (partition column) |
DATETIME |
string |
STRING |
binary |
BYTES |
array<Type> |
ARRAY<Type> |
struct |
STRUCT |
map<KeyType, ValueType> |
ARRAY<Struct<key KeyType, value ValueType>> |
Limitaciones
Se aplican las siguientes limitaciones a las tablas de Delta Lake:
Las limitaciones de las tablas externas se aplican a las tablas Delta Lake.
Las tablas de Delta Lake solo se admiten en BigQuery Omni y tienen las limitaciones asociadas.
No puedes actualizar una tabla con un nuevo archivo de metadatos JSON. Debe usar una operación de actualización de tabla de esquema de detección automática. Consulta Sincronización de esquemas para obtener más información.
Las funciones de seguridad de BigLake solo protegen las tablas de Delta Lake cuando se accede a ellas a través de los servicios de BigQuery.
Crear una tabla Delta Lake
En el siguiente ejemplo se crea una tabla externa mediante la instrucción CREATE EXTERNAL
TABLE
con el formato Delta Lake:
CREATE [OR REPLACE] EXTERNAL TABLE table_name WITH CONNECTION connection_name OPTIONS ( format = 'DELTA_LAKE', uris = ["parent_directory"] );
Haz los cambios siguientes:
table_name: el nombre de la tabla.
connection_name: el nombre de la conexión. La conexión debe identificar una fuente de Amazon S3 o de Blob Storage.
parent_directory: el URI del directorio principal.
Transferencia entre nubes con Delta Lake
En el siguiente ejemplo se usa la instrucción LOAD DATA
para cargar datos en la tabla correspondiente:
LOAD DATA [INTO | OVERWRITE] table_name FROM FILES ( format = 'DELTA_LAKE', uris = ["parent_directory"] ) WITH CONNECTION connection_name;
Para ver más ejemplos de transferencias de datos entre nubes, consulta Cargar datos con operaciones entre nubes.
Consultar tablas de BigLake
Para obtener más información, consulta Consultar datos de Blob Storage.
Ver metadatos de recursos con INFORMATION_SCHEMA
Puede ver los metadatos de recursos con las vistas INFORMATION_SCHEMA
. Cuando consultas las vistas
JOBS_BY_*
,
JOBS_TIMELINE_BY_*
y
RESERVATION*
,
debes especificar la ubicación de procesamiento de la consulta
que esté en la misma ubicación que la región de la tabla. Para obtener información sobre las ubicaciones de BigQuery Omni, consulta Ubicaciones. En el resto de las tablas del sistema, especificar la ubicación del trabajo de consulta es opcional.
Para obtener información sobre las tablas del sistema que admite BigQuery Omni, consulta Limitaciones.
Para consultar las tablas de sistema JOBS_*
y RESERVATION*
, seleccione uno de los siguientes métodos para especificar la ubicación de procesamiento:
Consola
Ve a la página BigQuery.
Si no se muestra la pestaña del editor, haz clic en
Redactar nueva consulta.Haz clic en Más > Configuración de consultas. Se abrirá el cuadro de diálogo Configuración de la consulta.
En el cuadro de diálogo Configuración de la consulta, en Configuración adicional > Ubicación de los datos, selecciona la región de BigQuery que esté ubicada en la misma zona que la región de BigQuery Omni. Por ejemplo, si tu región de BigQuery Omni es
aws-us-east-1
, especificaus-east4
.Seleccione los campos restantes y haga clic en Guardar.
bq
Usa la marca --location
para definir la ubicación de procesamiento del trabajo en la región de BigQuery que esté ubicada en la misma zona que la región de BigQuery Omni.
Por ejemplo, si tu región de BigQuery Omni es aws-us-east-1
, especifica us-east4
.
Ejemplo
bq query --use_legacy_sql=false --location=us-east4 \
"SELECT * FROM region-azure-eastus2.INFORMATION_SCHEMA.JOBS limit 10;"
API
Si ejecutas trabajos mediante programación,
define el argumento de ubicación en la región de BigQuery
que esté ubicada en la misma zona que la región de BigQuery Omni.
Por ejemplo, si tu región de BigQuery Omni es aws-us-east-1
, especifica us-east4
.
Controles de Servicio de VPC
Puedes usar perímetros de Controles de Servicio de VPC para restringir el acceso de BigQuery Omni a un servicio en la nube externo como capa de defensa adicional. Por ejemplo, los perímetros de Controles de Servicio de VPC pueden limitar las exportaciones de tus tablas de BigQuery Omni a un contenedor de Blob Storage o a un bucket de Amazon S3 específicos.
Para obtener más información sobre Controles de Servicio de VPC, consulta la información general sobre Controles de Servicio de VPC.
Permiso obligatorio
Asegúrate de que tienes los permisos necesarios para configurar perímetros de servicio. Para ver una lista de los roles de gestión de identidades y accesos necesarios para configurar Controles de Servicio de VPC, consulta la sección Control de acceso con IAM de la documentación de Controles de Servicio de VPC.
Configurar Controles de Servicio de VPC mediante la Google Cloud consola
En el menú de navegación de la consola, haga clic en Seguridad y, a continuación, en Controles de servicios de VPC. Google Cloud
Para configurar Controles de Servicio de VPC en BigQuery Omni, sigue los pasos que se indican en la guía Crear un perímetro de servicio. Cuando estés en el panel Reglas de salida, sigue estos pasos:
En el panel Reglas de salida, haz clic en Añadir regla.
En la sección Atributos FROM del cliente de API, seleccione una opción de la lista Identidad.
Selecciona A atributos de recursos externos.
Para añadir un recurso externo, haz clic en Añadir recursos externos.
En el cuadro de diálogo Añadir recurso externo, en Nombre del recurso externo, introduce un nombre de recurso válido. Por ejemplo:
En Amazon Simple Storage Service (Amazon S3):
s3://BUCKET_NAME
Sustituye BUCKET_NAME por el nombre de tu segmento de Amazon S3.
En Azure Blob Storage:
azure://myaccount.blob.core.windows.net/CONTAINER_NAME
Sustituye CONTAINER NAME por el nombre de tu contenedor de Blob Storage.
Para ver una lista de los atributos de las reglas de salida, consulta la referencia de reglas de salida.
Selecciona los métodos que quieras permitir en tus recursos externos:
- Si quieres permitir todos los métodos, selecciona Todos los métodos en la lista Métodos.
- Si quieres permitir métodos específicos, selecciona Método seleccionado, haz clic en Seleccionar métodos y, a continuación, selecciona los métodos que quieras permitir en tus recursos externos.
Haz clic en Crear perímetro.
Configurar Controles de Servicio de VPC con gcloud CLI
Para configurar Controles de Servicio de VPC con gcloud CLI, sigue estos pasos:
- Define la política de acceso predeterminada.
- Crea el archivo de entrada de la política de salida.
- Añada la política de salida.
Definir la política de acceso predeterminada
Una política de acceso es un contenedor de toda la organización para niveles de acceso y perímetros de servicio. Para obtener información sobre cómo definir una política de acceso predeterminada o cómo obtener el nombre de una política de acceso, consulta Gestionar una política de acceso.
Crear el archivo de entrada de la política de salida
Un bloque de reglas de salida define el acceso permitido desde dentro de un perímetro a los recursos que se encuentran fuera de él. En el caso de los recursos externos, la propiedad externalResources
define las rutas de los recursos externos a los que se permite el acceso desde dentro de tu perímetro de Controles de Servicio de VPC.
Las reglas de salida se pueden configurar mediante un archivo JSON o un archivo YAML. En el siguiente ejemplo se usa el formato .yaml
:
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" *OR* - permission: "externalResource.read" externalResources: - EXTERNAL_RESOURCE_PATH egressFrom: identityType: IDENTITY_TYPE *OR* identities: - serviceAccount:SERVICE_ACCOUNT
egressTo
: muestra las operaciones de servicio permitidas en los Google Cloud recursos de los proyectos especificados que están fuera del perímetro.operations
: enumera los servicios, las acciones o los métodos accesibles a los que puede acceder un cliente que cumpla las condiciones del bloquefrom
.serviceName
: definebigquery.googleapis.com
para BigQuery Omni.methodSelectors
: lista los métodos a los que puede acceder un cliente que cumpla las condiciones defrom
. Para ver los métodos y permisos restringibles de los servicios, consulta Restricciones de métodos de servicio admitidas.method
: un método de servicio válido o\"*\"
para permitir todos los métodosserviceName
.permission
: un permiso de servicio válido, como\"*\"
,externalResource.read
oexternalResource.write
. Se permite el acceso a recursos fuera del perímetro para las operaciones que requieren este permiso.externalResources
: enumera los recursos externos a los que pueden acceder los clientes que se encuentran dentro de un perímetro. Sustituye EXTERNAL_RESOURCE_PATH por un segmento de Amazon S3 válido, comos3://bucket_name
, o por una ruta de contenedor de Blob Storage, comoazure://myaccount.blob.core.windows.net/container_name
.egressFrom
: muestra las operaciones de servicio permitidas en los recursos de Google Cloud de los proyectos especificados dentro del perímetro.identityType
oidentities
: define los tipos de identidad que pueden acceder a los recursos especificados fuera del perímetro. Sustituye IDENTITY_TYPE por uno de los siguientes valores válidos:ANY_IDENTITY
: para permitir todas las identidades.ANY_USER_ACCOUNT
: para permitir que todos los usuarios lo hagan.ANY_SERVICE_ACCOUNT
: para permitir todas las cuentas de servicio
identities
: muestra las cuentas de servicio que pueden acceder a los recursos especificados fuera del perímetro.serviceAccount
(opcional): sustituye SERVICE_ACCOUNT por la cuenta de servicio que puede acceder a los recursos especificados fuera del perímetro.
Ejemplos
En el siguiente ejemplo se muestra una política que permite operaciones de salida desde el interior del perímetro a la ubicación s3://mybucket
de Amazon S3 en AWS.
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" externalResources: - s3://mybucket - s3://mybucket2 egressFrom: identityType: ANY_IDENTITY
En el siguiente ejemplo se permiten las operaciones de salida a un contenedor de Blob Storage:
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" externalResources: - azure://myaccount.blob.core.windows.net/mycontainer egressFrom: identityType: ANY_IDENTITY
Para obtener más información sobre las políticas de salida, consulta la referencia de reglas de salida.
Añade la política de salida
Para añadir la política de salida al crear un perímetro de servicio, usa el comando gcloud access-context-manager perimeters create
.
Por ejemplo, el siguiente comando crea un perímetro llamado omniPerimeter
que incluye el proyecto con el número de proyecto 12345
, restringe la API de BigQuery y añade una política de salida definida en el archivo egress.yaml
:
gcloud access-context-manager perimeters create omniPerimeter \ --title="Omni Perimeter" \ --resources=projects/12345 \ --restricted-services=bigquery.googleapis.com \ --egress-policies=egress.yaml
Para añadir la política de salida a un perímetro de servicio, usa el comando gcloud access-context-manager perimeters update
.
Por ejemplo, el siguiente comando añade una política de salida definida en el archivo egress.yaml
a un perímetro de servicio llamado omniPerimeter
:
gcloud access-context-manager perimeters update omniPerimeter --set-egress-policies=egress.yaml
Verificar el perímetro
Para verificar el perímetro, usa el comando gcloud access-context-manager perimeters describe
:
gcloud access-context-manager perimeters describe PERIMETER_NAME
Sustituye PERIMETER_NAME por el nombre del perímetro.
Por ejemplo, el siguiente comando describe el perímetro omniPerimeter
:
gcloud access-context-manager perimeters describe omniPerimeter
Para obtener más información, consulta Gestionar perímetros de servicio.
Permitir el acceso a Blob Storage desde la VPC de BigQuery Omni
Como administrador de BigQuery, puedes crear una regla de red para conceder acceso a BigQuery Omni a tus recursos de Blob Storage. De esta forma, solo las VPCs de BigQuery Omni autorizadas pueden interactuar con tu Blob Storage, lo que mejora la seguridad de tus datos.
Aplicar una regla de red a la VPC de BigQuery Omni
Para aplicar una regla de red, usa Azure PowerShell o Terraform:
Azure PowerShell
Ejecuta el siguiente comando para añadir una regla de red a tu cuenta de almacenamiento que especifique los IDs de subred de BigQuery Omni obtenidos como VirtualNetworkResourceId
.
Add-AzStorageAccountNetworkRule` -ResourceGroupName "RESOURCE_GROUP_NAME"` -Name "STORAGE_ACCOUNT_NAME"` -VirtualNetworkResourceId "SUBNET_ID1","SUBNET_ID2"
Haz los cambios siguientes:
RESOURCE_GROUP_NAME
: el nombre del grupo de recursos.STORAGE_ACCOUNT_NAME
: el nombre de la cuenta de almacenamiento.SUBNET_ID1
,SUBNET_ID1
: los IDs de subred. Puedes encontrar esta información en la tabla de esta página.
Terraform
Añade lo siguiente a tu archivo de configuración de Terraform:
resource "azurerm_storage_account_network_rules" "example" { storage_account_name = "STORAGE_ACCOUNT_NAME" resource_group_name = "RESOURCE_GROUP_NAME" default_action = "Allow" bypass = ["Logging", "Metrics", "AzureServices"] virtual_network_subnet_ids = ["SUBNET_ID1","SUBNET_ID2"] }
Haz los cambios siguientes:
STORAGE_ACCOUNT_NAME
: el nombre de la cuenta de almacenamiento.RESOURCE_GROUP_NAME
: el nombre del grupo de recursos.SUBNET_ID1
,SUBNET_ID1
: los IDs de subred. Puedes encontrar esta información en la tabla de esta página.
IDs de recursos de VPC de BigQuery Omni
Region | IDs de subred |
---|---|
azure-eastus2 |
/subscriptions/95f30708-58d1-48ba-beac-d71870c3b2f5/resourceGroups/bqe-prod-eastus2-resource-group/providers/Microsoft.Network/virtualNetworks/bqe-prod-eastus2-network/subnets/azure-prod-eastus21-yurduaaaaa-private /subscriptions/95f30708-58d1-48ba-beac-d71870c3b2f5/resourceGroups/bqe-prod-eastus2-resource-group/providers/Microsoft.Network/virtualNetworks/bqe-prod-eastus2-network/subnets/azure-prod-eastus22-yurduaaaab-private |
Limitaciones
Para ver una lista completa de las limitaciones que se aplican a las tablas de BigLake basadas en Amazon S3 y Blob Storage, consulta Limitaciones.
Siguientes pasos
- Consulta información sobre BigQuery Omni.
- Consulta información sobre las tablas de BigLake.
- Consulta cómo exportar resultados de consultas a Blob Storage.