Crear tablas externas de BigLake para Cloud Storage
En este documento se describe cómo crear una tabla de BigLake de Cloud Storage. Una tabla de BigLake te permite usar la delegación de acceso para consultar datos estructurados en Cloud Storage. La delegación de acceso desacopla el acceso a la tabla de BigLake del acceso al almacén de datos subyacente.
Antes de empezar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery Connection API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Si quieres leer tablas de BigLake desde motores de código abierto, como Apache Spark, debes habilitar la API Storage Read de BigQuery.
-
In the Google Cloud console, activate Cloud Shell.
Asegúrate de tener un conjunto de datos de BigQuery.
Asegúrate de que tu versión del SDK de Google Cloud sea la 366.0.0 o una posterior:
gcloud version
Si es necesario, actualiza el SDK de Google Cloud.
- Opcional: en Terraform, se requiere la versión 4.25.0 o posterior de
terraform-provider-google
. Las versiones deterraform-provider-google
se indican en GitHub. Puedes descargar la versión más reciente de Terraform desde la página de descargas de HashiCorp Terraform.
- Opcional: en Terraform, se requiere la versión 4.25.0 o posterior de
Crea una conexión de recursos de Cloud o configura una conexión predeterminada a tu fuente de datos externa. Las conexiones requieren roles y permisos adicionales. Para obtener más información, consulta Crear una conexión de recurso de Cloud y la descripción general de la conexión predeterminada.
bigquery.tables.create
bigquery.connections.delegate
Ve a la página BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Abre la opción
Acciones y haz clic en Crear tabla.En la sección Fuente, especifica los siguientes detalles:
En Crear tabla a partir de, selecciona Google Cloud Storage.
En Selecciona un archivo del segmento de Google Cloud Storage o usa un patrón de URI, busca el segmento y el archivo que quieras usar o escribe la ruta con el formato
gs://bucket_name/[folder_name/]file_name
.No puedes especificar varias URIs en la Google Cloud consola, pero puedes seleccionar varios archivos especificando un carácter comodín de asterisco (
*
). Por ejemplo,gs://mybucket/file_name*
. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que vas a crear.
En Formato de archivo, seleccione el formato que coincida con el de su archivo.
En la sección Destino, especifica los siguientes detalles:
En Proyecto, elige el proyecto en el que quieras crear la tabla.
En Conjunto de datos, elige el conjunto de datos en el que quieras crear la tabla.
En Tabla, introduce el nombre de la tabla que vas a crear.
En Tipo de tabla, selecciona Tabla externa.
Selecciona Crear una tabla de BigLake con una conexión de recurso de Cloud.
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 otros valores de columna que no coincidan con el esquema, despliega la sección Opciones avanzadas y selecciona Valores desconocidos.
Haz clic en Crear tabla.
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 CONNECTION {`PROJECT_ID.REGION.CONNECTION_ID` | DEFAULT} OPTIONS ( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'[,...]], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
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
)REGION
: la región que contiene la conexión (por ejemplo,us
)CONNECTION_ID
: el ID de conexión (por ejemplo,myconnection
)Cuando consultas los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.Para usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.TABLE_FORMAT
: el formato de la tabla que quieres crear (por ejemplo,PARQUET
)Para obtener más información sobre los formatos admitidos, consulta Limitaciones.
BUCKET_PATH
: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formato['gs://bucket_name/[folder_name/]file_name']
.Puede seleccionar varios archivos del segmento especificando un carácter comodín de asterisco (
*
) en la ruta. Por ejemplo,['gs://mybucket/file_name*']
. Para obtener más información, consulta Compatibilidad con comodines para URIs de Cloud Storage.Puedes especificar varios segmentos para la opción
uris
proporcionando varias rutas.En los siguientes ejemplos se muestran valores de
uris
válidos:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Si especifica valores de
uris
que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.
STALENESS_INTERVAL
: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica
INTERVAL 4 HOUR
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.CACHE_MODE
: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta el artículo Almacenamiento en caché de metadatos para mejorar el rendimiento.Defina el valor
AUTOMATIC
para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.Seleccione
MANUAL
si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar alBQ.REFRESH_EXTERNAL_METADATA_CACHE
procedimiento del sistema para actualizar la caché.Debes definir
CACHE_MODE
siSTALENESS_INTERVAL
tiene un valor superior a 0.
Haz clic en
Ejecutar.CONNECTION_ID
: el ID de conexión, por ejemplo,myconnection
Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.Para usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.SOURCE_FORMAT
: el formato de la fuente de datos externa. Por ejemplo,PARQUET
.BUCKET_PATH
: la ruta al segmento de Cloud Storage que contiene los datos de la tabla, con el formatogs://bucket_name/[folder_name/]file_pattern
.Puede seleccionar varios archivos del segmento especificando un asterisco (
*
) en el carácter comodínfile_pattern
. Por ejemplo,gs://mybucket/file00*.parquet
. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.Puedes especificar varios segmentos para la opción
uris
proporcionando varias rutas.En los siguientes ejemplos se muestran valores de
uris
válidos:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Si especifica valores de
uris
que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.
DEFINITION_FILE
: la ruta al archivo de definición de tabla en tu máquina local.STALENESS_INTERVAL
: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo de entre 30 minutos y 7 días con el formato
Y-M D H:M:S
descrito en la documentación delINTERVAL
tipo de datos. Por ejemplo, especifica0-0 0 4:0:0
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a ese periodo, la operación recupera los metadatos de Cloud Storage.DATASET
: el nombre del conjunto de datos de BigQuery en el que quieres crear una tabla. Por ejemplo,mydataset
.EXTERNAL_TABLE_NAME
: el nombre de la tabla que quieras crear (por ejemplo,mytable
)SCHEMA
: el esquema de la tabla de BigLake.SOURCE_FORMAT
: el formato de la fuente de datos externaPor ejemplo,
CSV
.BUCKET_PATH
: la ruta al segmento de Cloud Storage que contiene los datos de la tabla, con el formatogs://bucket_name/[folder_name/]file_pattern
.Puede seleccionar varios archivos del segmento especificando un asterisco (
*
) en el carácter comodínfile_pattern
. Por ejemplo,gs://mybucket/file00*.parquet
. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.Puedes especificar varios segmentos para la opción
uris
proporcionando varias rutas.En los siguientes ejemplos se muestran valores de
uris
válidos:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Si especifica valores de
uris
que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.
PROJECT_ID
: el nombre del proyecto en el que quieras crear la tabla (por ejemplo,myproject
).REGION
: la región que contiene la conexión,us
CONNECTION_ID
: el ID de conexión, por ejemplo,myconnection
Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.Para usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.DATASET_NAME
: el nombre del conjunto de datos en el que quieres crear la tabla BigLakeTABLE_NAME
: nombre de la tabla de BigLakeSCHEMA
: el esquema de la tabla de BigLake.- 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.
-
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
-
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.
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 Google Cloud Storage.
Proporciona la ruta a la carpeta con comodines. Por ejemplo,
my_bucket/my_files*
. 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 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,
gs://my_bucket/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 Proporcionar un esquema de clave de partición personalizado.
- 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, selecciona Tabla externa.
- Selecciona la casilla Crear una tabla de BigLake con una conexión de recurso de Cloud.
- En ID de conexión, selecciona la conexión que has creado anteriormente.
En la sección Schema (Esquema), habilita la detección automática de esquemas seleccionando la opción Detectar automáticamente.
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.
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` | DEFAULT} OPTIONS ( hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX", uris=['FILE_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE', 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 ID de conexión (por ejemplo,myconnection
)Cuando consultas los detalles de la conexión en la consola de Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión. Por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.Para usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.HIVE_PARTITION_URI_PREFIX
: partición de Hive prefijo de URI (por ejemplo,gs://mybucket/
)FILE_PATH
: ruta a la fuente de datos de la tabla externa que quieras crear. Por ejemplo,gs://mybucket/*.parquet
.STALENESS_INTERVAL
: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica
INTERVAL 4 HOUR
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.CACHE_MODE
: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Defina el valor
AUTOMATIC
para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.Seleccione
MANUAL
si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar alBQ.REFRESH_EXTERNAL_METADATA_CACHE
procedimiento del sistema para actualizar la caché.Debes definir
CACHE_MODE
siSTALENESS_INTERVAL
tiene un valor superior a 0.TABLE_FORMAT
: el formato de la tabla que quieres crear (por ejemplo,PARQUET
)
Haz clic en
Ejecutar.- El esquema se detecta automáticamente.
- El intervalo de obsolescencia de la caché de metadatos de la tabla es de 1 día.
- La caché de metadatos se actualiza automáticamente.
- Se especifica el esquema.
- El intervalo de obsolescencia de la caché de metadatos de la tabla es de 8 horas.
- La caché de metadatos debe actualizarse manualmente.
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 ID de conexión. Por ejemplo,myconnection
.Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.Para usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.PARTITIONING_MODE
: el modo de particiones de Hive. Se debe utilizar 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.
GCS_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
.CACHE_MODE
: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Solo tiene que incluir esta marca si también tiene previsto usar la marca--max_staleness
en el comandobq mk
posterior para habilitar el almacenamiento en caché de metadatos. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Si se define como
AUTOMATIC
, la caché de metadatos se actualizará a un intervalo definido por el sistema, normalmente entre 30 y 60 minutos.Selecciona
MANUAL
si quieres actualizar la caché de metadatos según la programación que determines. En este caso, puedes llamar alBQ.REFRESH_EXTERNAL_METADATA_CACHE
procedimiento del sistema para actualizar la caché.Debes definir
CACHE_MODE
siSTALENESS_INTERVAL
tiene un valor superior a 0.GCS_URIS
: la ruta a la carpeta de Cloud Storage, con formato de comodín.DEFINITION_FILE
: la ruta al archivo de definición de tabla en tu máquina local.DEFINITION_FILE
: la ruta al archivo de definición de la tabla.STALENESS_INTERVAL
: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Si incluye esta marca, también debe haber especificado un valor para la marca--metadata_cache_mode
en el comandobq mkdef
anterior. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo entre 30 minutos y 7 días con el formato
Y-M D H:M:S
descrito en la documentación del tipo de datosINTERVAL
. Por ejemplo, especifica0-0 0 4:0:0
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.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.- 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.
-
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
-
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.
Para obtener instrucciones sobre cómo configurar la seguridad a nivel de columna, consulta la guía de seguridad a nivel de columna.
Para obtener instrucciones sobre cómo configurar el enmascaramiento de datos, consulta la guía de enmascaramiento de datos.
Para obtener instrucciones sobre cómo configurar la seguridad a nivel de fila, consulta la guía de seguridad a nivel de fila.
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE OR REPLACE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION {`REGION.CONNECTION_ID` | DEFAULT} OPTIONS( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Haz los cambios siguientes:
PROJECT_ID
: el nombre del proyecto que contiene la tablaDATASET
: el nombre del conjunto de datos que contiene la tablaEXTERNAL_TABLE_NAME
: el nombre de la tablaREGION
: la región que contiene la conexiónCONNECTION_ID
: el nombre de la conexión que se va a usarPara usar una conexión predeterminada, especifica
DEFAULT
en lugar de la cadena de conexión que contieneREGION.CONNECTION_ID
.TABLE_FORMAT
: el formato que usa la tablaNo puedes cambiar este ajuste al actualizar la tabla.
BUCKET_PATH
: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formato['gs://bucket_name/[folder_name/]file_name']
.Puede seleccionar varios archivos del segmento especificando un carácter comodín de asterisco (
*
) en la ruta. Por ejemplo,['gs://mybucket/file_name*']
. Para obtener más información, consulta Compatibilidad con comodines para URIs de Cloud Storage.Puedes especificar varios segmentos para la opción
uris
proporcionando varias rutas.En los siguientes ejemplos se muestran valores de
uris
válidos:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Si especifica valores de
uris
que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.
STALENESS_INTERVAL
: especifica si las operaciones de la tabla usan metadatos almacenados en caché y cuánto tiempo deben haber pasado desde que se almacenaron en caché para que la operación los use.Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.
Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica
INTERVAL 4 HOUR
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.CACHE_MODE
: especifica si la caché de metadatos se actualiza automáticamente o manualmente.Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta el artículo Almacenamiento en caché de metadatos para mejorar el rendimiento.
Defina el valor
AUTOMATIC
para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.Seleccione
MANUAL
si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar alBQ.REFRESH_EXTERNAL_METADATA_CACHE
procedimiento del sistema para actualizar la caché.Debes definir
CACHE_MODE
siSTALENESS_INTERVAL
tiene un valor superior a 0.
Haz clic en
Ejecutar.Genera una definición de tabla externa que describa los aspectos de la tabla que quieres cambiar:
bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \ --source_format=TABLE_FORMAT \ --metadata_cache_mode=CACHE_MODE \ "BUCKET_PATH" > /tmp/DEFINITION_FILE
Haz los cambios siguientes:
PROJECT_ID
: el nombre del proyecto que contiene la conexiónREGION
: la región que contiene la conexiónCONNECTION_ID
: el nombre de la conexión que se va a usarTABLE_FORMAT
: el formato que usa la tabla. No puedes cambiar este ajuste al actualizar la tabla.CACHE_MODE
: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Defina el valor
AUTOMATIC
para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.Introduzca
MANUAL
si quiere actualizar la caché de metadatos según la programación que determine. En este caso, puedes llamar al procedimiento del sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHE
para actualizar la caché.Debes definir
CACHE_MODE
siSTALENESS_INTERVAL
tiene un valor superior a 0.BUCKET_PATH
: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formatogs://bucket_name/[folder_name/]file_name
.Puedes limitar los archivos seleccionados del segmento especificando un carácter comodín de asterisco (
*
) en la ruta. Por ejemplo,gs://mybucket/file_name*
. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.Puedes especificar varios segmentos para la opción
uris
proporcionando varias rutas.En los siguientes ejemplos se muestran valores de
uris
válidos:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.csv
gs://bucket/path1/*,gs://bucket/path2/file00*
Si especifica valores de
uris
que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.
DEFINITION_FILE
: el nombre del archivo de definición de tabla que estás creando.
Actualiza la tabla con la nueva definición de tabla externa:
bq update --max_staleness=STALENESS_INTERVAL \ --external_table_definition=/tmp/DEFINITION_FILE \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
Haz los cambios siguientes:
STALENESS_INTERVAL
: especifica si las operaciones de la tabla usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.
Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo de entre 30 minutos y 7 días con el formato
Y-M D H:M:S
descrito en la documentación delINTERVAL
tipo de datos. Por ejemplo, especifica0-0 0 4:0:0
para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a ese periodo, la operación recupera los metadatos de Cloud Storage.DEFINITION_FILE
: el nombre del archivo de definición de la tabla que has creado o actualizado.PROJECT_ID
: el nombre del proyecto que contiene la tabla.DATASET
: el nombre del conjunto de datos que contiene la tabla.EXTERNAL_TABLE_NAME
: el nombre de la tabla
- BigLake
- Consulta información sobre Cloud Storage.
- Consulta información sobre cómo consultar datos de Amazon Web Services (AWS).
- Consulta información sobre cómo consultar datos de Microsoft Azure.
Roles obligatorios
Para crear una tabla de BigLake, necesitas los siguientes permisos de gestión de identidades y accesos (IAM) de BigQuery:
El rol predefinido Administrador de BigQuery (roles/bigquery.admin
) de gestión de identidades y accesos incluye estos permisos.
Si no eres un usuario principal con este rol, pide a tu administrador que te conceda acceso o que cree la tabla de BigLake por ti.
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.
Consideraciones sobre la ubicación
Cuando usas Cloud Storage para almacenar archivos de datos, puedes mejorar el rendimiento usando segmentos de una sola región o de dos regiones en lugar de segmentos multirregionales.
Crear tablas de BigLake a partir de datos sin particiones
Si ya sabes cómo crear tablas en BigQuery, el proceso para crear una tabla BigLake es similar. Tu tabla puede usar cualquier formato de archivo compatible con BigLake. Para obtener más información, consulta Limitaciones.
Antes de crear una tabla de BigLake, debes tener un conjunto de datos y una conexión de recursos de Cloud que pueda acceder a Cloud Storage.
Para crear una tabla de BigLake, selecciona una de las siguientes opciones:
Consola
Una vez creada la tabla permanente, puedes ejecutar una consulta en ella como si fuera una tabla nativa de BigQuery. Una vez que se haya completado la consulta, puedes exportar los resultados como archivos CSV o JSON, guardarlos como una tabla o guardarlos en Hojas de cálculo de Google.
SQL
Usa la
CREATE EXTERNAL TABLE
instrucción DDL.
Puedes especificar el esquema de forma explícita o usar la detección automática de esquemas para inferir el esquema a partir de los datos externos.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Opción 1: Archivo de definición de tabla
Usa el comando bq mkdef
para crear un archivo de definición de tabla y, a continuación, pasa la ruta al
comando bq mk
de la siguiente manera:
bq mkdef \ --connection_id=CONNECTION_ID \ --source_format=SOURCE_FORMAT \ BUCKET_PATH > DEFINITION_FILE bq mk --table \ --external_table_definition=DEFINITION_FILE \ --max_staleness=STALENESS_INTERVAL \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME \ SCHEMA
Haz los cambios siguientes:
Ejemplo:
bq mkdef --connection_id=myconnection --metadata_cache_mode=CACHE_MODE --source_format=CSV 'gs://mybucket/*.csv' > mytable_def bq mk --table --external_table_definition=mytable_def='gs://mybucket/*.csv' --max_staleness=0-0 0 4:0:0 myproject:mydataset.mybiglaketable Region:STRING,Quarter:STRING,Total_sales:INTEGER
Para usar la detección automática de esquemas, define la marca --autodetect=true
en el comando mkdef
y omite el esquema:
bq mkdef \ --connection_id=myconnection \ --metadata_cache_mode=CACHE_MODE \ --source_format=CSV --autodetect=true \ gs://mybucket/*.csv > mytable_def bq mk \ --table \ --external_table_definition=mytable_def=gs://mybucket/*.csv \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable
Opción 2: Definición de tabla insertada
En lugar de crear un archivo de definición de tabla, puedes pasar la definición de tabla directamente al comando bq mk
.
Usa el decorador @connection
para especificar la conexión que se debe usar al final de la marca --external_table_definition
.
bq mk --table \ --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \ DATASET_NAME.TABLE_NAME \ SCHEMA
Haz los cambios siguientes:
Ejemplo:
bq mk --table \ --external_table_definition=@CSV=gs://mybucket/*.parquet@projects/myproject/locations/us/connections/myconnection \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable \ Region:STRING,Quarter:STRING,Total_sales:INTEGER
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 Cloud Storage.
Terraform
En este ejemplo se crea una tabla de BigLake a partir de datos sin particiones.
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.
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
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
BigLake admite la detección automática de esquemas. Sin embargo, si no has proporcionado un esquema y no se ha concedido acceso a la cuenta de servicio en los pasos anteriores, estos pasos fallarán y se mostrará un mensaje de acceso denegado si intentas detectar automáticamente el esquema.
Crear tablas de BigLake en datos con particiones de Apache Hive
Puedes crear una tabla de BigLake para datos con particiones de Hive en Cloud 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 en Cloud Storage, selecciona una de las siguientes opciones:
Consola
SQL
Usa la CREATE EXTERNAL TABLE
declaración de DDL:
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 BigLake sobre datos particionados en la que:
CREATE EXTERNAL TABLE `my_dataset.my_table` WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
En el siguiente ejemplo se crea una tabla BigLake sobre datos particionados en la que:
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 = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 8 HOUR, metadata_cache_mode = 'MANUAL' );
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=GCS_URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ --metadata_cache_mode=CACHE_MODE \ GCS_URIS > DEFINITION_FILE
Haz los cambios siguientes:
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 \ --max_staleness=STALENESS_INTERVAL \ DATASET_NAME.TABLE_NAME \ SCHEMA
Haz los cambios siguientes:
Ejemplos
En el siguiente ejemplo se usa el modo de partición de AUTO
Hive y también se define que la caché de metadatos tenga un intervalo de obsolescencia de 12 horas y que se actualice automáticamente:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
--metadata_cache_mode=AUTOMATIC \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
--max_staleness=0-0 0 12:0:0 \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
En el siguiente ejemplo se usa el modo de particiones de Hive STRING
:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
gs://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 particiones de Hive CUSTOM
:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
gs://myBucket/myTable/* > 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:
gs://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
.
Terraform
En este ejemplo se crea una tabla de BigLake con datos particionados.
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.
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
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
Configurar políticas de control de acceso
Puedes usar varios métodos para controlar el acceso a las tablas de BigLake:
Por ejemplo, supongamos que quiere limitar el acceso a las filas de la tabla mytable
del conjunto de datos mydataset
:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | | JP | tablet | 300 | | UK | laptop | 200 | +---------+---------+-------+
Puedes crear un filtro a nivel de fila para Kim (kim@example.com
) que restrinja su acceso a las filas en las que country
sea igual a US
.
CREATE ROW ACCESS POLICY only_us_filter ON mydataset.mytable GRANT TO ('user:kim@example.com') FILTER USING (country = 'US');
Después, Kim ejecuta la siguiente consulta:
SELECT * FROM projectid.mydataset.mytable;
En el resultado solo se muestran las filas en las que country
es igual a US
:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | +---------+---------+-------+
Consultar tablas de BigLake
Para obtener más información, consulta Consultar datos de Cloud Storage en tablas de BigLake.
Actualizar tablas de BigLake
Si es necesario, puede actualizar las tablas de BigLake, por ejemplo, para cambiar su almacenamiento de metadatos en caché. Para obtener detalles de la tabla, como el formato de origen y el URI de origen, consulta Obtener información de la tabla.
También puedes usar este mismo procedimiento para actualizar las tablas externas basadas en Cloud Storage a tablas de BigLake asociando la tabla externa a una conexión. Para obtener más información, consulta Actualizar tablas externas a tablas BigLake.
Para actualizar una tabla de BigLake, seleccione una de las siguientes opciones:
SQL
Usa la CREATE OR REPLACE EXTERNAL TABLE
declaración de DDL
para actualizar una tabla:
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa los comandos bq mkdef
y bq update
para actualizar una tabla:
Ejemplo
En el siguiente ejemplo se actualiza mytable
para que use los metadatos almacenados en caché siempre que se hayan actualizado en las últimas 4, 5 horas y también para que actualice los metadatos almacenados en caché automáticamente:
bq update --project_id=myproject --max_staleness='0-0 0 4:30:0' \
--external_table_definition=enable_metadata.json mydataset.mytable
Donde enable_metadata.json
tiene el siguiente contenido:
json
{
"metadataCacheMode": "AUTOMATIC"
}
Registros de auditoría
Para obtener información sobre el registro en BigQuery, consulta Introducción a la monitorización de BigQuery. Para obtener más información sobre el registro, consulta Cloud Logging. Google Cloud