Introducción a las tablas externas
En este documento, se describe cómo trabajar con datos almacenados fuera de BigQuery en tablas externas. Para trabajar con fuentes de datos externas, también puedes usar conjuntos de datos externos.
Las tablas externas que no sean BigLake te permiten consultar datos estructurados en almacenes de datos externos. Para consultar una tabla externa que no sea BigLake, debes tener permisos sobre la tabla externa y la fuente de datos externa. Por ejemplo, para consultar una tabla externa que no sea BigLake y que usa una fuente de datos en Cloud Storage, debes tener los siguientes permisos:
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
Almacenes de datos compatibles
Puedes usar tablas externas que no sean BigLake con los siguientes almacenes de datos:
Compatibilidad con tablas temporales
Puedes consultar una fuente de datos externa en BigQuery; para ello, usa una tabla permanente o una temporal. Una tabla permanente es una tabla que se crea en un conjunto de datos y está vinculada a tu fuente de datos externa. Debido a que la tabla es permanente, puedes usar controles de acceso para compartir la tabla con otras personas que también tengan acceso a la fuente de datos externa subyacente y también puedes hacer consultas en cualquier momento.
Cuando consultas una fuente de datos externa con una tabla temporal, envías un comando que incluye una consulta y crea una tabla no permanente vinculada a la fuente de datos externa. Cuando usas una tabla temporal, no se crea una tabla en uno de tus conjuntos de datos de BigQuery. Debido a que la tabla no se almacena de forma permanente en un conjunto de datos, no puede compartirse con otras personas. La consulta de una fuente de datos externa mediante una tabla temporal es útil para las consultas únicas ad-hoc sobre datos externos, o para procesos de extracción, transformación y carga (ETL).
Varios archivos fuente
Si creas una tabla externa que no sea BigLake según Cloud Storage, puedes usar varias fuentes de datos externas, siempre que esas fuentes de datos tengan el mismo esquema. Esto no es compatible con tablas externas que no sean BigLake basadas en Bigtable o Google Drive.
Limitaciones
Las siguientes limitaciones se aplican a las tablas externas:
- BigQuery no garantiza la coherencia de los datos de las tablas de datos externas. Los cambios en los datos subyacentes mientras se ejecuta una consulta pueden dar como resultado un comportamiento inesperado.
- El rendimiento de las consultas de las tablas externas puede ser lento en comparación con la consulta de datos en una tabla estándar de BigQuery. Si la velocidad de consulta es una prioridad, carga los datos en BigQuery en vez de configurar una fuente de datos externa. El rendimiento de las consultas que incluyen una tabla externa depende del tipo de almacenamiento externo. Por ejemplo, consultar datos almacenados en Cloud Storage es más rápido que consultar datos almacenados en Google Drive. En general, el rendimiento de las consultas para una tabla externa debe ser equivalente a leer los datos directamente desde la fuente de datos.
- No puedes modificar las tablas de datos externas mediante DML ni otros métodos. Las tablas externas son de solo lectura para BigQuery.
- No puedes usar el método
TableDataList
de la API de JSON para recuperar datos de tablas externas. Para obtener más información, consultatabledata.list
. Para evitar esta limitación, puedes guardar resultados de consultas en una tabla de destino. Luego, puedes usar el métodoTableDataList
en la tabla de resultados. - No puedes ejecutar un trabajo de BigQuery en el que se exporten datos desde una tabla externa. Para evitar esta limitación, puedes guardar resultados de consultas en una tabla de destino. Luego, ejecuta un trabajo de exportación en la tabla de resultados.
- No puedes hacer referencia a una tabla externa en una consulta de tabla comodín.
- Las tablas externas no son compatibles con el agrupamiento en clústeres. Admiten la partición de maneras limitadas. Para obtener más información, visita la sección sobre cómo consultar datos particionados de forma externa.
- Cuando consultas una fuente de datos externa distinta de Cloud Storage, los resultados no se almacenan en caché. (Las consultas de GoogleSQL en Cloud Storage son compatibles). Se te cobrará por cada consulta en una tabla externa, incluso si realizas la misma consulta varias veces. Si necesitas realizar una consulta de manera repetida en una tabla externa que no cambia con frecuencia, considera escribir los resultados de la consulta en una tabla permanente y ejecuta las consultas en la tabla permanente, en su lugar.
- Tienes un límite de 16 consultas simultáneas en una fuente externa de datos de Bigtable.
- Una ejecución de prueba de una consulta federada que usa una tabla externa puede informar un límite inferior de 0 bytes de datos, incluso si se muestran filas. Esto se debe a que la cantidad de datos procesados en la tabla externa no se puede determinar hasta que se completa la consulta real. La ejecución de la consulta federada genera un costo por procesar estos datos.
- No puedes usar
_object_metadata
como nombre de columna en tablas externas. Se reserva para uso interno. - BigQuery no admite la visualización de estadísticas de almacenamiento para tablas externas.
- Las tablas externas no son compatibles con los nombres de columnas flexibles.
Consideraciones de ubicación
Cuando elijas una ubicación para tu tabla externa, debes tener en cuenta la ubicación del conjunto de datos de BigQuery y la fuente de datos externa.
Cloud Storage
Cuando consultes datos en Cloud Storage con BigLake o una tabla externa que no sea de BigLake, el bucket debe estar ubicado con tu conjunto de datos de BigQuery que contiene la definición de la tabla externa. Por ejemplo:
-
Si tu bucket de Cloud Storage está en la región
us-central1
(Iowa), tu conjunto de datos de BigQuery debe estar en la regiónus-central1
(Iowa) o en la multirregiónUS
.Si tu bucket de Cloud Storage está en la región
europe-west4
(Países Bajos), tu conjunto de datos de BigQuery debe estar eneurope-west4
(Países Bajos) o en la multirregiónEU
.Si tu bucket de Cloud Storage está en la región
europe-west1
(Bélgica), el conjunto de datos de BigQuery correspondiente también debe estar en la regióneurope-west1
(Bélgica). -
Si tu bucket de Cloud Storage está en la región doble predefinida
NAM4
o en cualquier región doble configurable que incluya la regiónus-central1
(Iowa), el conjunto de datos de BigQuery correspondiente debe estar en la regiónus-central1
(Iowa) o en la multirregiónUS
.Si tu bucket de Cloud Storage está en la región doble predefinida
EUR4
o en cualquier región doble configurable que incluya la regióneurope-west4
(Países Bajos), el conjunto de datos de BigQuery correspondiente debe estar en la regióneurope-west4
(Países Bajos) o en la multirregiónEU
.Si tu bucket de Cloud Storage está en la región doble predefinida
ASIA1
, el conjunto de datos de BigQuery correspondiente debe estar en la regiónasia-northeast1
(Tokio) o en la regiónasia-northeast2
(Osaka).Si tu bucket de Cloud Storage usa una región doble configurable que incluye las regiones
australia-southeast1
(Sydney) yaustralia-southeast2
(Melbourne), el bucket de BigQuery correspondiente debe estar enaustralia-southeast1
(Sydney) o enaustralia-southeast2
(Melbourne). -
No se recomienda usar ubicaciones de conjuntos de datos multirregionales con buckets multirregionales de Cloud Storage para tablas externas, ya que el rendimiento de las consultas externas depende de la latencia mínima y el ancho de banda óptimo de la red.
Si tu conjunto de datos de BigQuery está en la multirregión
US
, el bucket de Cloud Storage correspondiente debe estar en la multirregiónUS
, en una región doble que incluyaus-central1
(Iowa), como la región dobleNAM4
o en una región doble configurable que incluyaus-central1
.Si tu conjunto de datos de BigQuery está en la multirregión
EU
, el bucket de Cloud Storage correspondiente debe estar en la multirregiónEU
, en una región doble que incluyaeurope-west4
(Países Bajos), como la región dobleEUR4
o en una región doble configurable que incluyaeurope-west4
.
Para obtener más información sobre las ubicaciones de Cloud Storage, consulta Ubicaciones de buckets en la documentación de Cloud Storage.
Bigtable
Cuando consultes datos en Bigtable a través de una tabla externa de BigQuery, tu instancia de Bigtable debe estar en la misma ubicación que tu conjunto de datos de BigQuery:
- Región única: si tu conjunto de datos de BigQuery está en la ubicación regional de (
europe-west1
) de Bélgica, la instancia de Bigtable correspondiente debe estar en la región de Bélgica. - Multirregión: debido a que el rendimiento de las consultas externas depende de la latencia mínima y el ancho de banda de la red óptimo, no se recomienda usar ubicaciones de conjuntos de datos multirregionales para tablas externas en Bigtable.
Para obtener más información sobre las ubicaciones de Bigtable compatibles, consulta Ubicaciones de Bigtable.
Google Drive
Las consideraciones de ubicación no se aplican a las fuentes de datos externos de Google Drive.
Administración de datos
Desarrolla un plan de administración de datos:- Si eliges un recurso de almacenamiento regional, como un conjunto de datos de BigQuery o un depósito de Cloud Storage, debes desarrollar un plan para administrar tus datos geográficamente.
Transferir datos entre ubicaciones
Para mover un conjunto de datos de una ubicación a otra de forma manual, sigue estos pasos:
-
Exporta los datos desde tus tablas de BigQuery hasta un bucket de Cloud Storage en la misma ubicación de tu conjunto de datos o en una ubicación dentro de la ubicación de tu conjunto de datos. Por ejemplo, si tu conjunto de datos se encuentra en la ubicación multirregional
EU
, puedes exportar tus datos a la ubicacióneurope-west1
de Bélgica, que forma parte de la UE.No se aplican cargos por exportar datos desde BigQuery, pero sí por almacenar los datos exportados en Cloud Storage. Las exportaciones de BigQuery están sujetas a los límites de los trabajos de exportación.
-
Copia o mueve los datos de tu bucket de exportación de Cloud Storage a un bucket nuevo que hayas creado en la ubicación de destino. Por ejemplo, si mueves tus datos desde la multirregión
US
a la regiónasia-northeast1
de Tokio, debes transferir los datos a un bucket que hayas creados en Tokio. Para obtener más información sobre la transferencia de objetos de Cloud Storage, consulta Copia, cambia el nombre y mueve objetos en la documentación de Cloud Storage.La transferencia de datos entre regiones genera cargos de salida de red en Cloud Storage.
-
Crea un nuevo conjunto de datos de BigQuery en la ubicación nueva y, luego, carga tus datos del bucket de Cloud Storage en el conjunto de datos nuevo.
No se te cobrará por cargar los datos en BigQuery, pero sí por almacenar los datos en Cloud Storage hasta que borres los datos o el bucket. También se te cobra por almacenar los datos en BigQuery después de que se carguen. La carga de datos en BigQuery está sujeta a los límites de los trabajos de carga.
También puedes usar Cloud Composer para mover y copiar conjuntos de datos grandes de manera programática.
A fin de obtener más información sobre el uso de Cloud Storage para almacenar y mover conjuntos de datos grandes, consulta Usa Cloud Storage con macrodatos.
Precios
Cuando consultas una tabla externa desde BigQuery, se te cobra por ejecutar la consulta y los bytes leídos aplicables si usas el precio on demand de BigQuery (por TiB) o el consumo de ranuras si usas los precios por capacidad de BigQuery (por ranura-hora).
Si tus datos están almacenados en ORC o Parquet en Cloud Storage, consulta la sección sobre el cálculo del tamaño de los datos.
También se te cobra por almacenar los datos y por cualquier recurso usado por la aplicación fuente, sujeto a los lineamientos de precios de la aplicación:
- Para obtener más información sobre los precios de Cloud Storage, consulta los Precios de Cloud Storage.
- Para obtener información sobre los precios de Bigtable, consulta Precios.
- Para obtener información sobre los precios de Drive, consulta Precios.
¿Qué sigue?
- Aprende a crear una tabla externa de Bigtable.
- Obtén información sobre cómo crear una tabla externa de Cloud Storage.
- Obtén información sobre cómo crear una tabla externa de Drive.
- Obtén información para programar y ejecutar verificaciones de calidad de los datos con Dataplex.