Crea 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 separa el acceso a la tabla de BigLake del acceso al almacén de datos subyacente.
Para obtener más información sobre cómo fluyen los datos entre BigQuery y Blob Storage, consulta Flujo de datos cuando se consultan datos.
Antes de comenzar
Asegúrate de tener una conexión para acceder a los datos en Blob Storage.
Roles obligatorios
Para obtener los permisos que necesitas para crear una tabla externa, pídele a tu administrador que te otorgue el rol de IAM Administrador de BigQuery (roles/bigquery.admin
) en tu conjunto de datos.
Para obtener más información sobre cómo otorgar roles, consulta Administra 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear una tabla externa:
-
bigquery.tables.create
-
bigquery.connections.delegate
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Crea un conjunto de datos
Antes de crear una tabla externa, debes crear un conjunto de datos en la región compatible. Selecciona una de las opciones siguientes:Console
Ve a la página de BigQuery.
- En el panel Explorador, selecciona el proyecto en el que deseas crear el conjunto de datos.
- Expande la opción Ver acciones y haz clic en Crear conjunto de datos.
- En la página Crear conjuntos de datos, especifica los siguientes detalles:
- En ID de conjunto de datos, ingresa un nombre único para el conjunto de datos.
- En Ubicación de datos, elige una región compatible.
- Opcional: para borrar tablas automáticamente, selecciona la casilla de verificación Habilitar vencimiento de la tabla y establece la Antigüedad máxima de la tabla predeterminada en días. En Azure, los datos no se borran cuando vence la tabla.
- Si deseas usar la intercalación predeterminada, expande la sección Opciones avanzadas y, luego, selecciona la opción Habilita la intercalación predeterminada.
- Haz clic en Crear conjunto de datos.
SQL
Usa la declaración DDL CREATE SCHEMA
.
En el siguiente ejemplo, se crea un conjunto de datos en la región azure-eastus2
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
CREATE SCHEMA mydataset OPTIONS ( location = 'azure-eastus2');
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
En un entorno de línea de comandos, crea un conjunto de datos con el comando bq mk
:
bq --location=LOCATION mk \ --dataset \ PROJECT_ID:DATASET_NAME
El parámetro --project_id
anula el proyecto predeterminado.
Reemplaza lo siguiente:
LOCATION
: Es la ubicación de tu conjunto de datos.Para obtener información sobre las regiones compatibles, consulta Ubicaciones. Después de crear un conjunto de datos, no puedes cambiar su ubicación. Puedes configurar un valor predeterminado para la ubicación con el archivo
.bigqueryrc
.PROJECT_ID
: Es el ID de tu proyecto.DATASET_NAME
: Es el nombre de la imagen que deseas crear.Para crear un conjunto de datos en un proyecto que no sea el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:
PROJECT_ID:DATASET_NAME
.
Crea tablas de BigLake en datos sin particiones
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y, luego, elige un conjunto de datos.
En la sección Información del conjunto de datos, haz clic en
Crear tabla.En la sección Fuente de la página Crear tabla, haz lo siguiente:
- En Crear tabla desde, selecciona Azure Blob Storage.
En Ruta de acceso de Azure Blob Storage, ingresa una ruta de acceso de Blob Storage con el siguiente formato:
azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH
Reemplaza lo siguiente:
AZURE_STORAGE_ACCOUNT_NAME
: Es el nombre de la cuenta de Blob Storage. La región de la cuenta debe ser la misma que la región del conjunto de datos.CONTAINER_NAME
: Es el nombre del contenedor de Blob Storage.FILE_PATH
: Es la ruta de acceso de los datos que apunta a los datos de Blob Storage. Por ejemplo, para un solo archivo CSV,FILE_PATH
puede sermyfile.csv
.
En Formato de archivo, selecciona el formato de datos en Azure. Los formatos admitidos son los siguientes: AVRO, CSV, DELTA_LAKE, ICEBERG, JSONL, ORC y PARQUET.
En la sección Destino, haz lo siguiente:
- En Conjunto de datos, elige el conjunto de datos apropiado.
- En el campo Tabla, ingresa el nombre de la tabla.
- Verifica que el Table type (Tipo de tabla) esté configurado como Tabla externa.
- En ID de conexión, selecciona el ID de conexión que corresponda en el menú desplegable. Para obtener información sobre las conexiones, consulta Conéctate al Blob Storage.
En la sección Esquema, puedes habilitar la detección automática de esquemas o especificar un esquema de forma manual si tienes un archivo de origen. Si no tienes un archivo de origen, debes especificar un esquema de forma manual.
Para habilitar la detección automática de esquemas, elige la opción Detección automática.
Para especificar un esquema de forma manual, deja sin marcar la opción Detección automática. Habilita Editar como texto e ingresa el esquema de la tabla como un array JSON.
Haga clic en Crear tabla.
SQL
Para crear una tabla de BigLake, usa la sentencia CREATE EXTERNAL TABLE
con la cláusula WITH CONNECTION
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente oració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']);
Reemplaza lo siguiente:
DATASET_NAME
: Es el nombre del conjunto de datos que creaste.TABLE_NAME
: Es el nombre que deseas asignar a esta tabla.AZURE_LOCATION
: Es una ubicación de Azure en Google Cloud, comoazure-eastus2
.CONNECTION_NAME
: Es el nombre de la conexión que creaste.DATA_FORMAT
: Es cualquiera de los formatos federados de BigQuery compatibles, comoAVRO
,CSV
oDELTA_LAKE
oICEBERG
(vista previa).AZURE_STORAGE_ACCOUNT_NAME
: Es el nombre de la cuenta de Blob Storage.CONTAINER_NAME
: Es el nombre del contenedor de Blob Storage.FILE_PATH
: Es la ruta de acceso de los datos que apunta a los datos de Blob Storage.
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta 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
Reemplaza lo siguiente:
DATA_FORMAT
: Es cualquiera de los formatos federados de BigQuery compatibles, comoAVRO
,CSV
,ICEBERG
oPARQUET
.AZURE_LOCATION
: Es una ubicación de Azure en Google Cloud, comoazure-eastus2
CONNECTION_NAME
: Es el nombre de la conexión que creaste.AZURE_STORAGE_ACCOUNT_NAME
: Es el nombre de la cuenta de Blob Storage.CONTAINER_NAME
: Es el nombre del contenedor de Blob Storage.FILE_PATH
: Es la ruta de acceso de los 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
Reemplaza lo siguiente:
DATASET_NAME
: Es el nombre del conjunto de datos que creaste.TABLE_NAME
: Es el nombre que deseas asignar a esta tabla.
Por ejemplo, los siguientes comandos crean una tabla de BigLake nueva, my_dataset.my_table
, que puede consultar los datos de Blob Storage almacenados en la ruta de acceso azure://account_name.blob.core.windows.net/container/path
y 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 pasas.
Especifica la propiedad schema
o establece la propiedad autodetect
en true
a fin de habilitar la detección automática de esquemas para las fuentes de datos compatibles.
Especifica la propiedad connectionId
a fin de identificar la conexión que se usará para conectarse a Blob Storage.
Crea tablas de BigLake en datos particionados
Puedes crear una tabla de BigLake para datos particionados de Hive en Blob Storage. Después de crear una tabla particionada de forma externa, no podrás cambiar la clave de partición. Debes volver a crear la tabla para cambiar la clave de partición.
Para crear una tabla de BigLake basada en datos particionados de Hive, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Haz clic en
Ver acciones y, luego, en Crear tabla. Se abrirá el panel Crear tabla.En la sección Fuente, especifica los siguientes detalles:
En Crear tabla desde, selecciona una de las siguientes opciones:
- Amazon S3
- Azure Blob Storage
Proporciona la ruta de acceso a la carpeta mediante comodines. Por ejemplo:
- Para Amazon S3:
s3://mybucket/*
- Para 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 deseas crear, agregar o reemplazar.
- Para Amazon S3:
En la lista Formato de archivo, selecciona el tipo de archivo.
Selecciona la casilla de verificación Partición de datos de origen y, luego, especifica los siguientes detalles:
- En Seleccionar prefijo de URI de origen, ingresa el prefijo de URI. Por ejemplo,
s3://mybucket/my_files
- Opcional: A fin de solicitar un filtro de partición en todas las consultas de esta tabla, selecciona la casilla de verificación Exigir filtro de partición. Exigir un filtro de partición puede reducir los costos y mejorar el rendimiento. Para obtener más información, consulta Filtros de predicado obligatorios en claves de partición de consultas.
En la sección Modo de inferencia de la partición, selecciona una de las siguientes opciones:
- Inferir tipos automáticamente: configura el modo de detección de esquemas de partición como
AUTO
. - Todas las columnas son strings: configura el modo de detección de esquemas de partición como
STRINGS
. - Proporcionar uno propio: configura el modo de detección de esquemas de partición como
CUSTOM
e ingresa de forma manual la información del esquema para las claves de partición. Para obtener más información, consulta Esquema de clave de partición personalizado.
- Inferir tipos automáticamente: configura el modo de detección de esquemas de partición como
- En Seleccionar prefijo de URI de origen, ingresa el prefijo de URI. Por ejemplo,
En la sección Destino, especifica los siguientes detalles:
- En Proyecto, selecciona el proyecto en el que deseas crear la tabla.
- En Conjunto de datos, selecciona el conjunto de datos en el que deseas crear la tabla.
- En Tabla, ingresa el nombre de la tabla que deseas crear
- En Tipo de tabla, verifica que la opción Tabla externa esté seleccionada.
- En ID de conexión, selecciona la conexión que creaste antes.
En la sección Esquema, puedes habilitar la detección automática de esquemas o especificar un esquema de forma manual si tienes un archivo de origen. Si no tienes un archivo de origen, debes especificar un esquema de forma manual.
Para habilitar la detección automática de esquemas, elige la opción Detección automática.
Para especificar un esquema de forma manual, deja sin marcar la opción Detección automática. Habilita Editar como texto e ingresa el esquema de la tabla como un array JSON.
Para omitir las filas con valores de columna adicionales que no coinciden con el esquema, expande la sección Opciones avanzadas y selecciona Valores desconocidos.
Haga clic en Crear tabla.
SQL
Usa la declaración DDL CREATE EXTERNAL TABLE
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente oració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" );
Reemplaza lo siguiente:
PROJECT_ID
: el nombre del proyecto en el que deseas crear la tabla, por ejemplo,myproject
DATASET
: el nombre del conjunto de datos de BigQuery en el que deseas crear una tabla, por ejemplo,mydataset
EXTERNAL_TABLE_NAME
: el nombre de la tabla que deseas crear, por ejemplo,mytable
PARTITION_COLUMN
: el nombre de la columna de particiónPARTITION_COLUMN_TYPE
: el tipo de 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 de acceso a la fuente de datos para la tabla externa que deseas crear, por ejemplo:s3://mybucket/*.parquet
azure://mystorageaccount.blob.core.windows.net/mycontainer/*.parquet
TABLE_FORMAT
: el formato de la tabla que deseas crear, por ejemplo,PARQUET
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Ejemplos
En el siguiente ejemplo, se crea una tabla de BigLake a partir de datos particionados en Amazon S3. El esquema se detecta de forma automática.
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 a partir de 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 tablas:
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
Reemplaza lo siguiente:
SOURCE_FORMAT
: El formato de la fuente de datos externos. 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 partición de subárbol. Usa uno de los siguientes valores:AUTO
: Detecta de forma automática los nombres y tipos de claves.STRINGS
: Convierte de forma de automática los nombres de las claves en strings.CUSTOM
: Codifica el esquema de clave en el prefijo de URI de origen.
URI_SHARED_PREFIX
: Es el prefijo del URI de origen.BOOLEAN
especifica si se requiere un filtro de predicado en el momento de la consulta. Esta marca es opcional. El valor predeterminado esfalse
.URIS
es la ruta de acceso a Amazon S3 o a la carpeta de Blob Storage mediante el formato comodín.DEFINITION_FILE
: Es la ruta de acceso al archivo de definición de tabla en tu máquina local.
Si PARTITIONING_MODE
es CUSTOM
, incluye el esquema de la clave de partición en el prefijo de URI de origen mediante el siguiente formato:
--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Después de crear el archivo de definición de tablas, usa el comando bq mk
para crear la tabla de BigLake:
bq mk --external_table_definition=DEFINITION_FILE \ DATASET_NAME.TABLE_NAME \ SCHEMA
Reemplaza lo siguiente:
DEFINITION_FILE
es la ruta de acceso al archivo de definición de tablas.DATASET_NAME
: es el nombre del conjunto de datos que contiene la tabla.TABLE_NAME
: es el nombre de la tabla que crearás.SCHEMA
: especifica una ruta a un archivo de esquema JSON o especifica 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 partición AUTO
de Hive 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 partición STRING
de Hive 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 CUSTOM
de Hive para los datos de Blob Storage:
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 configurar 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.
Si deseas crear una tabla de BigLake, también debes especificar un valor para el campo connectionId
.
Si configuras el campo hivePartitioningOptions.mode
como CUSTOM
, debes codificar el esquema de clave de partición en el campo hivePartitioningOptions.sourceUriPrefix
de la siguiente manera: s3://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Para implementar el uso de un filtro de predicado en el momento de la consulta, establece el campo hivePartitioningOptions.requirePartitionFilter
en true
.
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 tabla 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, haz lo siguiente:
Usa el comando
bq update
con la marca--autodetect_schema
:bq update --autodetect_schema PROJECT_ID:DATASET.TABLE
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto que contiene la tabla que deseas actualizarDATASET
: el conjunto de datos que contiene la tabla que deseas actualizarTABLE
: la tabla que deseas 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
Las siguientes limitaciones se aplican a las tablas de Delta Lake:
Las limitaciones de las tablas externas se aplican a las tablas del Delta Lake.
Las tablas de Delta Lake solo son compatibles con BigQuery Omni y tienen las limitaciones asociadas.
No puedes actualizar una tabla con un archivo de metadatos JSON nuevo. Debes 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 características de seguridad de BigLake solo protegen las tablas del Delta Lake cuando se accede a ellas a través de los servicios de BigQuery.
Crea una tabla de Delta Lake
En el siguiente ejemplo, se crea una tabla externa mediante la declaración CREATE EXTERNAL
TABLE
con el formato de Delta Lake:
CREATE [OR REPLACE] EXTERNAL TABLE table_name WITH CONNECTION connection_name OPTIONS ( format = 'DELTA_LAKE', uris = ["parent_directory"] );
Reemplaza lo siguiente:
table_name: el nombre de la tabla.
connection_name: Es el nombre de la conexión. La conexión debe identificar una fuente de Amazon S3 o una fuente de Blob Storage.
parent_directory: Es el URI del directorio principal.
Transferencia entre nubes con Delta Lake
En el siguiente ejemplo, se usa la declaración LOAD DATA
para cargar datos en la tabla adecuada:
LOAD DATA [INTO | OVERWRITE] table_name FROM FILES ( format = 'DELTA_LAKE', uris = ["parent_directory"] ) WITH CONNECTION connection_name;
Para obtener más ejemplos de transferencias de datos entre nubes, consulta Carga datos con operaciones entre nubes.
Consulta tablas de BigLake
Para obtener más información, consulta Consulta datos de almacenamiento de BLOB.
Consulta metadatos de recursos con INFORMATION_SCHEMA
Puedes ver los metadatos de los recursos con las vistas INFORMATION_SCHEMA
. Cuando consultes las vistas JOBS_BY_*
,JOBS_TIMELINE_BY_*
yRESERVATION*
, debesespecificar la ubicación de procesamiento de la consulta que se encuentra junto a la región de la tabla. Para obtener más información sobre las ubicaciones de BigQuery Omni, consulta Ubicaciones. Para todas las demás tablas del sistema, la especificación de la ubicación del trabajo de consulta es opcional.
Para obtener más información sobre las tablas del sistema compatibles con BigQuery Omni, consulta Limitaciones.
Para consultar las tablas del sistema JOBS_*
y RESERVATION*
, selecciona uno de los siguientes métodos para especificar la ubicación de procesamiento:
Console
Ve a la página de BigQuery.
Si la pestaña Editor no está visible, haga clic en
Redactar consulta nueva.Haz clic en Más > Configuración de consulta. Se abrirá el cuadro de diálogo Configuración de consulta.
En el cuadro de diálogo Configuración de consulta, en Configuración adicional > Ubicación de los datos, selecciona la región BigQuery que se encuentra ubicada en la región de BigQuery Omni. Por ejemplo, si tu región de BigQuery Omni es
aws-us-east-1
, especificaus-east4
.Selecciona los campos restantes y haz clic en Guardar.
bq
Usa la marca --location
para establecer la ubicación de procesamiento del trabajo en la región de BigQuery ubicada en 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 de manera programática, configura el argumento de ubicación como la región de BigQuery que encuentra ubicada en la región de BigQuery Omni.
Por ejemplo, si tu región de BigQuery Omni es aws-us-east-1
, especifica us-east4
.
Controles del servicio de VPC
Puedes usar los perímetros de los Controles del servicio de VPC para restringir el acceso de BigQuery Omni a un servicio de nube externo como una capa adicional de defensa. Por ejemplo, los perímetros de los Controles del servicio de VPC pueden limitar las exportaciones de tus tablas de BigQuery Omni a un bucket específico de Amazon S3 o a un contenedor de almacenamiento de BLOB.
Consulta Descripción general de los Controles del servicio de VPC para obtener más información sobre estos.
Permiso necesario
Asegúrate de tener los permisos necesarios para configurar los perímetros de servicio. Si deseas ver una lista de las funciones de IAM necesarias para configurar los Controles del servicio de VPC, consulta Control de acceso con IAM en la documentación de los Controles del servicio de VPC.
Configura los Controles del servicio de VPC mediante la consola de Google Cloud
En el menú de navegación de la consola de Google Cloud, haz clic en Seguridad y, luego, en Controles del servicio de VPC.
A fin de configurar los Controles del servicio de VPC para BigQuery Omni, sigue los pasos de la guía Crea un perímetro de servicio y cuando estés en las reglas de salida, sigue estos pasos:
En el panel Reglas de salida, haz clic en Agregar regla.
En la sección Desde los atributos del cliente de la API, selecciona una opción de la lista Identidad.
Selecciona A atributos de recursos externos.
Para agregar un recurso externo, haz clic en Agregar recursos externos.
En el cuadro de diálogo Agregar recurso externo, en Nombre del recurso externo, ingresa un nombre de recurso válido. Por ejemplo:
Para Amazon Simple Storage Service (Amazon S3):
s3://BUCKET_NAME
Reemplaza BUCKET_NAME por el nombre de tu bucket de Amazon S3.
Para Azure Blob Storage:
azure://myaccount.blob.core.windows.net/CONTAINER_NAME
Reemplaza CONTAINER NAME por el nombre del contenedor de Blob Storage.
Para obtener una lista de los atributos de reglas de salida, consulta Referencia de reglas de salida.
Selecciona los métodos que desees permitir en tus recursos externos:
- Si deseas permitir todos los métodos, selecciona Todos los métodos en la lista de Métodos.
- Si deseas permitir métodos específicos, selecciona Método seleccionado, haz clic en Seleccionar métodos y, luego, selecciona los métodos que deseas permitir en tus recursos externos.
Haz clic en Crear perímetro.
Configura los Controles del servicio de VPC mediante la CLI de gcloud
Para configurar los Controles del servicio de VPC mediante la CLI de gcloud, sigue estos pasos:
- Configura la política de acceso predeterminada.
- Crea el archivo de entrada de la política de salida.
- Agrega la política de salida.
Configura la política de acceso predeterminada
Una política de acceso es un contenedor en toda la organización para los niveles de acceso y los perímetros de servicio. Para obtener información sobre cómo configurar una política de acceso predeterminada o cómo obtener un nombre de política de acceso, consulta Administra una política de acceso.
Crea el archivo de entrada de la política de salida
Un bloque de reglas de salida define el acceso permitido desde un perímetro a recursos fuera de ese perímetro. En el caso de los recursos externos, la propiedad externalResources
define las rutas de acceso a los recursos externos desde el perímetro de los Controles del servicio de VPC.
Las reglas de salida se pueden configurar mediante un archivo JSON o 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
: Enumera las operaciones de servicio permitidas en los recursos de Google Cloud en proyectos especificados fuera del perímetro.operations
: Marca el comienzo de la lista de servicios y las acciones o los métodos accesibles a los que el cliente satisface las condiciones del bloquefrom
a los que puede acceder.serviceName
: configurabigquery.googleapis.com
para BigQuery Omni.methodSelectors
: enumera los métodos a los que un cliente que cumple con las condicionesfrom
puede acceder. Para conocer los métodos y permisos restringidos para los servicios, consulta las restricciones de los métodos de servicio compatibles.method
: Es un método de servicio válido o\"*\"
para permitir todos los métodosserviceName
.permission
: Es un permiso de servicio válido, como\"*\"
,externalResource.read
oexternalResource.write
. El acceso a los recursos fuera del perímetro se permite para las operaciones que requieren este permiso.externalResources
: Enumera los recursos externos a los que pueden acceder los clientes dentro de un perímetro. Reemplaza EXTERNAL_RESOURCE_PATH por un bucket de Amazon S3 válido, comos3://bucket_name
, o por una ruta del contenedor de Blob Storage, comoazure://myaccount.blob.core.windows.net/container_name
.egressFrom
: Enumera las operaciones de servicio permitidas en los recursos de Google Cloud en proyectos especificados dentro del perímetro.identityType
oidentities
: Define los tipos de identidad que pueden acceder a los recursos especificados fuera del perímetro. Reemplaza IDENTITY_TYPE por uno de los siguientes valores válidos:ANY_IDENTITY
: para permitir todas las identidades.ANY_USER_ACCOUNT
: para permitir a todos los usuarios.ANY_SERVICE_ACCOUNT
: para permitir todas las cuentas de servicio.
identities
: Enumera las cuentas de servicio que pueden acceder a los recursos especificados fuera del perímetro.serviceAccount
(opcional): Reemplaza 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 hasta la ubicación del Amazon S3 s3://mybucket
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 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 las reglas de salida.
Agrega la política de salida
Para agregar la política de salida cuando creas un perímetro de servicio nuevo, usa el comando gcloud access-context-manager perimeters create
.
Por ejemplo, con el siguiente comando, se crea un perímetro nuevo llamado omniPerimeter
que incluye el proyecto con el número de proyecto 12345
, restringe la API de BigQuery y agrega 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 agregar la política de salida a un perímetro de servicio existente, usa el comando gcloud access-context-manager perimeters update
.
Por ejemplo, el siguiente comando agrega una política de salida definida en el archivo egress.yaml
a un perímetro de servicio existente llamado omniPerimeter
:
gcloud access-context-manager perimeters update omniPerimeter --set-egress-policies=egress.yaml
Verifica tu perímetro
Para verificar el perímetro, usa el comando gcloud access-context-manager perimeters describe
:
gcloud access-context-manager perimeters describe PERIMETER_NAME
Reemplaza PERIMETER_NAME por el nombre del perímetro.
Por ejemplo, con el siguiente comando, se describe el perímetro omniPerimeter
:
gcloud access-context-manager perimeters describe omniPerimeter
Para obtener más información, consulta Administra perímetros de servicio.
Permite el acceso de la VPC de BigQuery Omni a Blob Storage
Para solicitar comentarios o asistencia para esta función, envía un correo electrónico a bq-omni-customer-support@google.com.
Como administrador de BigQuery, puedes crear una regla de red para otorgar acceso a BigQuery Omni a tus recursos de Blob Storage. Esto garantiza que solo las VPC de BigQuery Omni autorizadas puedan interactuar con tu Amazon S3, lo que mejora la seguridad de tus datos.
Aplica una regla de red para el VPC de BigQuery Omni
Para aplicar una regla de red, usa Azure PowerShell o Terraform:
Azure PowerShell
Ejecuta el siguiente comando para agregar una regla de red a tu cuenta de almacenamiento que especifique los IDs de subred de BigQuery Omni recuperados como VirtualNetworkResourceId
.
Add-AzStorageAccountNetworkRule` -ResourceGroupName "RESOURCE_GROUP_NAME"` -Name "STORAGE_ACCOUNT_NAME"` -VirtualNetworkResourceId "SUBNET_ID1","SUBNET_ID2"
Reemplaza lo siguiente:
RESOURCE_GROUP_NAME
: Es el nombre del grupo de recursos.STORAGE_ACCOUNT_NAME
: Es 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
Agrega lo siguiente al 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"] }
Reemplaza lo siguiente:
STORAGE_ACCOUNT_NAME
: Es el nombre de la cuenta de almacenamiento.RESOURCE_GROUP_NAME
: Es 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
Región | ID 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 obtener una lista completa de las limitaciones que se aplican a las tablas de BigLake basadas en Amazon S3 y Blob Storage, consulta Limitaciones.
¿Qué sigue?
- Obtén información sobre BigQuery Omni.
- Obtén más información sobre tablas de BigLake.
- Obtén información para exportar resultados de consultas a Blob Storage.