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 son de BigLake te permiten consultar datos estructurados en almacenes de datos externos. Para consultar una tabla externa que no sea de BigLake, debes tener permisos para la tabla externa y para la fuente de datos externa. Por ejemplo, para consultar una tabla externa que no sea de BigLake y que use una fuente de datos de Cloud Storage, debes tener los siguientes permisos:

  • bigquery.tables.getData
  • bigquery.jobs.create
  • storage.buckets.get
  • storage.objects.get

Almacenes de datos admitidos

Puede usar tablas externas que no sean de BigLake con los siguientes almacenes de datos:

Compatibilidad con tablas temporales

Puedes consultar una fuente de datos externa en BigQuery mediante una tabla permanente o una tabla temporal. Una tabla permanente es una tabla que se crea en un conjunto de datos y se vincula a tu fuente de datos externa. Como la tabla es permanente, puedes usar controles de acceso para compartirla con otros usuarios que también tengan acceso a la fuente de datos externa subyacente y puedes consultar la tabla en cualquier momento.

Cuando consultas una fuente de datos externa mediante 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 creas una tabla en uno de tus conjuntos de datos de BigQuery. Como la tabla no se almacena de forma permanente en un conjunto de datos, no se puede compartir con otros usuarios. Consultar una fuente de datos externa mediante una tabla temporal es útil para realizar consultas puntuales y ad hoc sobre datos externos, o para procesos de extracción, transformación y carga (ETL).

Varios archivos de origen

Si crea una tabla externa que no sea de BigLake basada en Cloud Storage, puede usar varias fuentes de datos externas, siempre que tengan el mismo esquema. Esta opción no se admite en tablas externas que no sean de BigLake y que estén basadas en Bigtable o Google Drive.

Limitaciones

Se aplican las siguientes limitaciones a las tablas externas:

  • BigQuery no garantiza la coherencia de los datos de las tablas de datos externas. Si se modifican los datos subyacentes mientras se ejecuta una consulta, se pueden producir comportamientos inesperados.
  • El rendimiento de las consultas de tablas externas puede ser lento en comparación con las consultas de datos de una tabla estándar de BigQuery. Si la velocidad de las consultas es una prioridad, carga los datos en BigQuery en lugar de configurar una fuente de datos externa. El rendimiento de una consulta que incluye 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 de una tabla externa debe ser equivalente al de la lectura de los datos directamente desde la fuente de datos.
  • No puedes modificar tablas de datos externos mediante DML ni otros métodos. Las tablas externas son de solo lectura en BigQuery.
  • No puedes usar el método TableDataList de la API JSON para recuperar datos de tablas externas. Para obtener más información, consulta tabledata.list. Para evitar esta limitación, puede guardar los resultados de la consulta en una tabla de destino. A continuación, puedes usar el método TableDataList en la tabla de resultados.
  • No puede ejecutar una tarea de BigQuery que exporte datos de una tabla externa. Para evitar esta limitación, puede guardar los resultados de la consulta en una tabla de destino. A continuación, ejecuta una tarea de exportación en la tabla de resultados.
  • No puedes copiar una tabla externa.
  • No puedes hacer referencia a una tabla externa en una consulta de tabla comodín.
  • Las tablas externas no admiten la creación de clústeres. Admiten particiones de forma limitada. Para obtener más información, consulta Consultar datos con particiones externas.
  • Cuando consultas una fuente de datos externa que no sea Cloud Storage, los resultados no se almacenan en caché. Se admiten consultas de GoogleSQL en Cloud Storage. Se te cobra por cada consulta a una tabla externa, aunque envíes la misma consulta varias veces. Si necesitas enviar una consulta repetidamente a una tabla externa que no cambia con frecuencia, te recomendamos que escribas los resultados de la consulta en una tabla permanente y que ejecutes las consultas en esa tabla.
  • Tienes un límite de 16 consultas simultáneas a fuentes de datos externas de Bigtable.
  • Una prueba de una consulta federada que usa una tabla externa puede informar de un límite inferior de 0 bytes de datos, aunque se devuelvan filas. Esto se debe a que la cantidad de datos procesados de la tabla externa no se puede determinar hasta que se complete la consulta. Ejecutar la consulta federada conlleva un coste 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 de tablas externas.
  • Las tablas externas no admiten nombres de columna flexibles.
  • BI Engine no admite consultas en tablas externas.
  • BigQuery no admite Data Boost para Spanner para leer datos de Bigtable desde BigQuery.
  • BigQuery no admite ventanas de retención de datos de recuperación ante fallos o de viajes en el tiempo para tablas externas.
  • Se aplican todas las limitaciones específicas de formato:

Consideraciones de ubicación

Cuando elijas una ubicación para tu tabla externa, debes tener en cuenta tanto la ubicación del conjunto de datos de BigQuery como la de la fuente de datos externa.

Cloud Storage

Cuando consultas datos de Cloud Storage mediante una BigLake o una tabla externa que no es de BigLake, el segmento debe estar ubicado en el mismo lugar que el conjunto de datos de BigQuery que contiene la definición de la tabla externa. Por ejemplo:

  • Contenedores de una sola región

    Si tu segmento de Cloud Storage está en la región us-central1 (Iowa), tu conjunto de datos de BigQuery debe estar en la región us-central1 (Iowa) o en la multirregión US.

    Si tu segmento de Cloud Storage está en la región europe-west4 (Países Bajos), tu conjunto de datos de BigQuery debe estar en la región europe-west4 (Países Bajos) o en la multirregión EU.

    Si tu segmento 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ón europe-west1 (Bélgica) o en la multirregión EU.

  • Contenedores birregionales

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

    Si tu segmento de Cloud Storage está en la EUR4región doble predefinida o en cualquier región doble configurable que incluya la región europe-west4 (Países Bajos), el conjunto de datos de BigQuery correspondiente debe estar en la región europe-west4 (Países Bajos) o en la multirregión EU.

    Si tu segmento de Cloud Storage está en la ASIA1 birregión predefinida, el conjunto de datos de BigQuery correspondiente debe estar en la región asia-northeast1 (Tokio) o en la asia-northeast2 (Osaka).

    Si tu segmento de Cloud Storage usa una región doble configurable que incluye las regiones australia-southeast1 (Sídney) y australia-southeast2 (Melbourne), el segmento de BigQuery correspondiente debe estar en la región australia-southeast1 (Sídney) o en la australia-southeast2 (Melbourne).

  • Contenedores multirregionales

    No se recomienda usar ubicaciones de conjuntos de datos multirregión con segmentos de Cloud Storage multirregión en tablas externas, ya que el rendimiento de las consultas externas depende de una latencia mínima y de un ancho de banda de red óptimo.

    Si tu conjunto de datos de BigQuery está en la multirregión US, el segmento de Cloud Storage correspondiente debe estar en la multirregión US, en la región única us-central1 (Iowa), en una región compuesta por dos regiones que incluya us-central1 (Iowa), como la región compuesta por dos regiones NAM4, o en una región compuesta por dos regiones configurable que incluya us-central1.

    Si tu conjunto de datos de BigQuery está en la EU multirregión, el segmento de Cloud Storage correspondiente debe estar en la EU multirregión, en la región única europe-west1 (Bélgica) o europe-west4 (Países Bajos), en una birregión que incluya europe-west1 (Bélgica) o europe-west4 (Países Bajos), como la birregión EUR4, o en una birregión configurable que incluya europe-west1 o europe-west4.

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

Bigtable

Cuando consultas 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 Bélgica (europe-west1), la instancia de Bigtable correspondiente debe estar en la región de Bélgica.
  • Multirregión: como el rendimiento de las consultas externas depende de una latencia mínima y de un ancho de banda de red óptimo, no se recomienda usar ubicaciones de conjuntos de datos multirregión para las tablas externas de Bigtable.

Para obtener más información sobre las ubicaciones de Bigtable admitidas, consulta Ubicaciones de Bigtable.

Google Drive

Las consideraciones sobre la ubicación no se aplican a las fuentes de datos externas de Google Drive.

Transferir datos entre ubicaciones

Para mover manualmente un conjunto de datos de una ubicación a otra, sigue estos pasos:

  1. Exporta los datos de tus tablas de BigQuery a un segmento de Cloud Storage.

    La exportación de datos de BigQuery no tiene ningún coste, pero sí el almacenamiento de los datos exportados en Cloud Storage. Las exportaciones de BigQuery están sujetas a los límites de las tareas de exportación.

  2. Copia o mueve los datos del segmento de Cloud Storage de exportación a un segmento nuevo que hayas creado en la ubicación de destino. Por ejemplo, si vas a mover tus datos de la multirregión US a la región de Tokio asia-northeast1, tendrías que transferirlos a un bucket que hayas creado en Tokio. Para obtener información sobre cómo transferir objetos de Cloud Storage, consulta el artículo Copiar, cambiar el nombre y mover objetos de la documentación de Cloud Storage.

    La transferencia de datos entre regiones genera cargos de salida de red en Cloud Storage.

  3. Crea un conjunto de datos de BigQuery en la nueva ubicación y, a continuación, carga los datos del segmento de Cloud Storage en el nuevo conjunto de datos.

    No se te cobrará por cargar los datos en BigQuery, pero sí por almacenarlos en Cloud Storage hasta que los elimines o elimines el segmento. También se te cobrará por almacenar los datos en BigQuery una vez que se hayan cargado. La carga de datos en BigQuery está sujeta a los límites de las tareas de carga.

También puedes usar Cloud Composer para mover y copiar grandes conjuntos de datos mediante programación.

Para obtener más información sobre cómo usar Cloud Storage para almacenar y mover grandes conjuntos de datos, consulta el artículo Usar Cloud Storage con Big Data.

Precios

Cuando consultas una tabla externa de BigQuery, se te cobra por ejecutar la consulta y por los bytes leídos aplicables si usas los precios bajo demanda de BigQuery (por TiB) o por el consumo de ranuras si usas los precios de capacidad de BigQuery (por hora de ranura).

Si tus datos están almacenados en ORC o Parquet en Cloud Storage, consulta la sección Cálculo del tamaño de los datos.

También se te cobrará por almacenar los datos y los recursos que utilice la aplicación de origen, de acuerdo con las directrices de precios de la aplicación:

  • Para obtener información sobre los precios de Cloud Storage, consulta la página Precios de Cloud Storage.
  • Para obtener información sobre los precios de Bigtable, consulta la página Precios.
  • Para obtener información sobre los precios de Drive, consulta la página Precios.

Siguientes pasos