Introducción a las tablas externas

En esta página, se presentan las tablas externas y se proporciona orientación para consultar los datos almacenados fuera de BigQuery.

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, consulta tabledata.list.

    Para evitar esta limitación, puedes guardar resultados de consultas en una tabla de destino. Luego, puedes usar el método TableDataList 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.

Consideraciones de ubicación

Cuando elijas una ubicación para tus datos, ten en cuenta esta información:

Cloud Storage

Puedes interactuar con datos de Cloud Storage mediante BigQuery de las siguientes maneras:

Consulta datos de Cloud Storage

Cuando consultes datos en Cloud Storage con BigLake o una tabla externa que no sea de BigLake, los datos que consultes se deben ubicar con tu conjunto de datos de BigQuery. Por ejemplo:

  • Bucket de una sola región: Si tu conjunto de datos de BigQuery está en la región de Varsovia (europe-central2), el bucket de Cloud Storage correspondiente también debe estar en la región de Varsovia o cualquier región doble de Cloud Storage que incluya Varsovia. Si tu conjunto de datos de BigQuery está en la multirregión US, el bucket de Cloud Storage puede estar en la multirregión US, la región única de Iowa (us-central1) o cualquier región doble que incluya Iowa. Las consultas de cualquier otra región fallan, incluso si el bucket está en una ubicación dentro de la multirregión del conjunto de datos. Por ejemplo, si las tablas externas están en la multirregión US y el bucket de Cloud Storage está en Oregón (us-west1), el trabajo falla.

    Si tu conjunto de datos de BigQuery está en la multirregión EU, el bucket de Cloud Storage puede estar en la multirregión EU, la región única de Bélgica (europe-west1) o cualquier región doble que incluye Bélgica. Las consultas de cualquier otra región fallan, incluso si el bucket está en una ubicación dentro de la multirregión del conjunto de datos. Por ejemplo, si las tablas externas están en la multirregión EU y el bucket de Cloud Storage está en Varsovia (europe-central2), el trabajo falla.

  • Bucket birregional: Si tu conjunto de datos de BigQuery está en la región de Tokio (asia-northeast1), el bucket de Cloud Storage correspondiente debe estar en la región de Tokio, o en una región doble que incluya Tokio, como la región doble ASIA1. Para obtener más información, consulta Crea un bucket birregional.

    Si el bucket de Cloud Storage está en la región doble NAM4 o en cualquier región doble que incluya la región de Iowa (us-central1), el conjunto de datos de BigQuery correspondiente puede estar en la multirregión US o en Iowa (us-central1).

    Si el bucket de Cloud Storage está en la región doble EUR4 o en cualquier región doble que incluya la región de Bélgica (europe-west1), el conjunto de datos de BigQuery correspondiente puede estar en la multirregión EU o en Bélgica (europe-west1).

  • Bucket multirregional: El uso de ubicaciones de conjuntos de datos multirregionales con buckets multirregionales de Cloud Storage no se recomienda 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ón US, en una región doble que incluya Iowa (us-central1), como la región doble NAM4 o en una región doble personalizada que incluya Iowa (us-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ón EU, en una región doble que incluye Bélgica (europe-west1), como la región doble EUR4 o en una región doble personalizada que incluya Bélgica.

Para obtener más información sobre las ubicaciones de Cloud Storage, consulta Ubicaciones de buckets en la documentación de Cloud Storage.

Carga datos desde Cloud Storage

Cuando cargas datos desde Cloud Storage al usar una tabla externa de BigLake o una tabla externa que no sea de BigLake, los datos que cargas se deben ubicar con tu conjunto de datos de BigQuery.

  • Puedes cargar datos desde un bucket de Cloud Storage en cualquier ubicación si tu conjunto de datos de BigQuery se encuentra en la multirregión US.

  • Bucket multirregional: Si el bucket de Cloud Storage desde el que deseas cargar se encuentra en un bucket multirregional, tu conjunto de datos de BigQuery puede estar en el mismo bucket multirregional o en otra región individual que se incluya en el mismo bucket multirregional. Por ejemplo, si el bucket de Cloud Storage está en la región EU, tu conjunto de datos de BigQuery puede estar en la multirregión EU o en cualquier región individual en EU.
  • Bucket birregional: Si el bucket de Cloud Storage desde el que deseas cargar se encuentra en un bucket birregional, tu conjunto de datos de BigQuery puede estar ubicado en las regiones que se incluyen en el bucket birregional o en una multirregión que incluya la región doble. Por ejemplo, si tu bucket de Cloud Storage se encuentra en la región EUR4, tu conjunto de datos de BigQuery puede estar ubicado en la región individual de Finlandia (europe-north1), Países Bajos (europe-west4) o en la multirregión EU.

    Para obtener más información, consulta Crea un bucket birregional.

  • Bucket de una sola región: Si el bucket de Cloud Storage desde el que deseas cargar está en una sola región, tu conjunto de datos de BigQuery puede estar en la misma región única o en la multirregión que incluya la región única. Por ejemplo, si tu bucket de Cloud Storage está en la región Finlandia (europe-north1), tu conjunto de datos de BigQuery puede estar en Finlandia o en la multirregión EU.

  • Una excepción es que, si tu conjunto de datos de BigQuery se encuentra en la región asia-northeast1, tu bucket de Cloud Storage puede estar ubicado en la multirregión EU.

Para obtener más información, consulta Carga datos por lotes.

Exporta datos a Cloud Storage

Coloca los buckets de Cloud Storage en la misma ubicación para exportar datos:
  • Si tu conjunto de datos de BigQuery está en la multirregión EU, el bucket de Cloud Storage que contiene los datos que exportas debe estar en la misma ubicación o dentro de la multirregión. Por ejemplo, si tu conjunto de datos de BigQuery está en la multirregión EU, el bucket de Cloud Storage puede estar ubicado en la región europe-west1 de Bélgica, que está dentro de EU.

    Si tu conjunto de datos está en la multirregión US, puedes exportar datos a un bucket de Cloud Storage en cualquier ubicación.

  • Si tu conjunto de datos está en una región, el bucket de Cloud Storage debe estar en la misma región. Por ejemplo, si tu conjunto de datos está en la región asia-northeast1 de Tokio, tu bucket de Cloud Storage no puede estar en la multirregión ASIA.

Para obtener más información, consulta Exporta datos de tabla.

Bigtable

Cuando consultes datos en Bigtable mediante 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:

  1. 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ón europe-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.

  2. 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ón asia-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 incurre en cargos de salida de red en Cloud Storage.

  3. Crea un nuevo conjunto de datos de BigQuery en la ubicación nueva y, luego, carga los datos en el 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?