Crea un archivo de definición de tablas para una fuente de datos externa
En esta página, se describe cómo crear un archivo de definición de tablas para una fuente de datos externa. Una fuente de datos externa es una fuente de datos que puedes consultar directamente, aunque los datos no estén almacenados en BigQuery.
En un archivo de definición de tablas, se incluye una definición de esquema de tabla externa y metadatos, como el formato de datos de la tabla y las propiedades relacionadas. Cuando creas un archivo de definición de tablas, puedes usar la detección automática de esquemas a fin de definir el esquema para una fuente de datos externa. Puedes proporcionar el esquema intercalado o puedes proporcionar un archivo JSON que contenga la definición del esquema.
Los archivos de definición de tablas se usan con la herramienta de línea de comandos de bq. Las propiedades de un archivo de definición de tablas también se aplican a la creación de una ExternalDataConfiguration
cuando usas la API de REST. No uses archivos de definición de tablas cuando crees una tabla externa mediante la consola de Google Cloud.
Puedes crear archivos de definición de tablas a fin de describir una tabla externa permanente o temporal para las siguientes fuentes de datos externas:
Cloud Storage
- Valores separados por comas (CSV)
- JSON delimitado por saltos de línea
- Archivos Avro
- Archivos de exportación de Datastore
- Archivos ORC
- Archivos Parquet
- Archivos de exportación de Firestore
Google Drive
- Valores separados por comas (CSV)
- JSON delimitado por saltos de línea
- Archivos Avro
- Hojas de cálculo de Google
Bigtable
Antes de comenzar
A fin de crear un archivo de definición de tablas, necesitas el URI para la fuente de datos:
- Para una fuente de datos de Drive, necesitas el URI de Drive.
- Para una fuente de datos de Cloud Storage, necesitas el URI de Cloud Storage.
- Para una fuente de datos de Bigtable, necesitas el URI de Bigtable.
Crea un archivo de definición para archivos CSV, JSON o de Hojas de cálculo de Google
Usa uno de los siguientes métodos a fin de crear un archivo de definición de tablas para archivos CSV, JSON o de Hojas de cálculo de Google en Cloud Storage o Drive:
Usa la marca autodetect
Si especificas un archivo CSV, JSON o de Hojas de cálculo de Google sin incluir una descripción del esquema intercalado o un archivo de esquema, puedes usar la marca --autodetect
para configurar la opción "autodetect"
como true
en el archivo de definición de tablas. Cuando la detección automática está habilitada, en BigQuery se hace un esfuerzo para inferir automáticamente el esquema. Si deseas obtener más información, consulta Detección automática del esquema para fuentes de datos externas.
Usa la detección automática con una fuente de datos de Cloud Storage
Crea un archivo de definición de tablas para una fuente de datos de Cloud Storage:
Usa el comando
bq mkdef
con la marca--autodetect
para crear un archivo de definición de tablas. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --autodetect \ --source_format=SOURCE_FORMAT \ "URI" > /tmp/FILE_NAME
Reemplaza lo siguiente:
SOURCE_FORMAT
: el formato de archivoFILE_NAME
: el nombre de tu archivo de definición de tablasURI
: el URI de Cloud StoragePor ejemplo,
gs://mybucket/myfile
.
Opcional: Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en nano. El archivo debe verse de la manera siguiente para una fuente de datos externa CSV. Observa que"autodetect"
se estableció entrue
.{ "autodetect": true, "csvOptions": { "allowJaggedRows": false, "allowQuotedNewlines": false, "encoding": "UTF-8", "fieldDelimiter": ",", "quote": "\"", "skipLeadingRows": 0 }, "sourceFormat": "CSV", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos fuente JSON, pero hay configuraciones que se aplican a los archivos CSV y de Hojas de cálculo de Google. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.
Usa la detección automática con una fuente de datos de Drive
Crea un archivo de definición de tablas para una fuente de datos de Drive:
Usa el comando
bq mkdef
con la marca--autodetect
para crear una definición de tabla. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --autodetect \ --source_format=SOURCE_FORMAT \ "URI" > /tmp/FILE_NAME
Reemplaza lo siguiente:
SOURCE_FORMAT
: el formato de archivoFILE_NAME
: el nombre de tu archivo de definición de tablasURI
: el URI de DrivePor ejemplo,
https://drive.google.com/open?id=123ABCD123AbcD123Abcd
.
Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en nano. El archivo debe verse de la manera siguiente para una fuente de datos externa de Hojas de cálculo de Google. Observa que"autodetect"
se configuró comotrue
.{ "autodetect": true, "sourceFormat": "GOOGLE_SHEETS", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos fuente JSON, pero hay configuraciones que se aplican a los archivos CSV y de Hojas de cálculo de Google. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.Para especificar una hoja en particular o un rango de celdas en un archivo de Hojas de cálculo de Google, agrega la propiedad
range
al archivo de definición de tablas. Para consultar una hoja en particular, especifica el nombre de la hoja. Para consultar un rango de celdas, especifica el rango en el formato siguiente:sheet_name!top_left_cell_id:bottom_right_cell_id
, por ejemplo,"Sheet1!A1:B20"
. Si no se especifica el parámetrorange
, se usará la primera hoja del archivo.
Usa un esquema intercalado
Si no deseas utilizar la detección automática de esquemas, puedes crear un archivo de definición de tablas; para ello, proporciona una definición de esquema intercalado. Para proporcionar una definición de esquema intercalado, crea una lista de los campos y tipos de datos en la línea de comandos en el formato siguiente: FIELD:DATA_TYPE,FIELD:DATA_TYPE
.
Usa un esquema intercalado con una fuente de datos de Cloud Storage o Drive
Crea una definición de tablas para una fuente de datos de Cloud Storage o Drive mediante una definición de esquema intercalado:
Usa el comando
bq mkdef
con la marca--noautodetect
para crear una definición de tabla. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --noautodetect \ --source_format=SOURCE_FORMAT \ "URI" \ FIELD:DATA_TYPE,FIELD:DATA_TYPE > /tmp/FILE_NAME
Reemplaza lo siguiente:
SOURCE_FORMAT
: el formato de archivo de origenURI
: el URI de Cloud Storage o tu URI de Drive.Por ejemplo,
gs://mybucket/myfile
para Cloud Storage ohttps://drive.google.com/open?id=123ABCD123AbcD123Abcd
para Drive.FIELD:DATA_TYPE,FIELD:DATA_TYPE
: es la definición de esquemaPor ejemplo,
Name:STRING,Address:STRING, ...
.FILE_NAME
: el nombre de tu archivo de definición de tablas
Opcional: Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en nano. El archivo debe verse de la manera siguiente. Ten en cuenta que"autodetect"
no está habilitada y que la información del esquema se escribe en el archivo de definición de tablas.{ "schema": { "fields": [ { "name": "FIELD", "type": "DATA_TYPE" }, { "name": "FIELD", "type": "DATA_TYPE" } ... ] }, "sourceFormat": "NEWLINE_DELIMITED_JSON", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos fuente JSON, pero hay configuraciones que se aplican a los archivos CSV y de Hojas de cálculo de Google. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.
Usa un archivo de esquema JSON
Si no deseas usar la detección automática ni proporcionar una definición de esquema intercalado, puedes crear un archivo de esquema JSON y hacer referencia a él cuando crees tu archivo de definición de tablas. Crea el archivo de esquema JSON de forma manual en tu máquina local. No se admite la referencia a un archivo de esquema JSON almacenado en Cloud Storage o en Google Drive.
Usa un archivo de esquema con una fuente de datos de Cloud Storage
Crea una definición de tabla para una fuente de datos de Cloud Storage mediante un archivo de esquema JSON:
Usa el comando
bq mkdef
con la marca--noautodetect
para crear una definición de tabla. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --noautodetect \ --source_format=SOURCE_FORMAT \ "URI" \ PATH_TO_SCHEMA_FILE > /tmp/FILE_NAME
Reemplaza lo siguiente:
SOURCE_FORMAT
: el formato de archivoFILE_NAME
: el nombre de tu archivo de definición de tablasURI
: el URI de Cloud StoragePor ejemplo,
gs://mybucket/myfile
.PATH_TO_SCHEMA_FILE
: la ubicación del archivo de esquema JSON en tu máquina local
Opcional: Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en
nano. El archivo debe verse de la manera siguiente. Ten en cuenta que"autodetect"
no está habilitada y que la información del esquema se escribe en el archivo de definición de tablas.{ "schema": { "fields": [ { "name": "FIELD", "type": "DATA_TYPE" }, { "name": "FIELD", "type": "DATA_TYPE" } ... ] }, "sourceFormat": "NEWLINE_DELIMITED_JSON", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos fuente JSON, pero hay configuraciones que se aplican a los archivos CSV y de Hojas de cálculo de Google. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.
Usa un archivo de esquema con una fuente de datos de Drive
Crea una definición de tablas para una fuente de datos de Drive mediante un archivo de esquema JSON:
Usa el comando
bq mkdef
con la marca--noautodetect
para crear una definición de tabla. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --noautodetect \ --source_format=source_format \ "URI" \ PATH_TO_SCHEMA_FILE > /tmp/FILE_NAME
Reemplaza lo siguiente:
SOURCE_FORMAT
: el formato de archivo de origenURI
: el URI de DrivePor ejemplo,
https://drive.google.com/open?id=123ABCD123AbcD123Abcd
.PATH_TO_SCHEMA_FILE
: la ubicación del archivo de esquema JSON en tu máquina localFILE_NAME
: el nombre de tu archivo de definición de tablas
Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en nano. El archivo debe verse de la manera siguiente. Ten en cuenta que"autodetect"
no está habilitada y que la información del esquema se escribe en el archivo de definición de tablas.{ "schema": { "fields": [ { "name": "FIELD", "type": "DATA_TYPE" }, { "name": "FIELD", "type": "DATA_TYPE" } ... ] }, "sourceFormat": "GOOGLE_SHEETS", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos fuente JSON, pero hay configuraciones que se aplican a los archivos CSV y de Hojas de cálculo de Google. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.Para especificar una hoja en particular o un rango de celdas en un archivo de Hojas de cálculo de Google, agrega la propiedad
range
al archivo de definición de tablas. Para consultar una hoja en particular, especifica el nombre de la hoja. Para consultar un rango de celdas, especifica el rango en el formato siguiente:sheet_name!top_left_cell_id:bottom_right_cell_id
, por ejemplo,"Sheet1!A1:B20"
. Si no se especifica el parámetrorange
, se usará la primera hoja del archivo.
Crea un archivo de definición para formatos autodescriptivos
Avro, Parquet y ORC son formatos de descripción automática. Los archivos de datos en estos formatos contienen su propia información de esquema. Si usas uno de estos formatos como fuente de datos externa, BigQuery recuperará de forma automática el esquema mediante los datos de origen. Cuando creas una definición de tablas, no necesitas usar la detección automática de esquemas ni proporcionar una definición de esquema intercalado ni un archivo de esquema.
Puedes crear un archivo de definición de tablas para los datos de Avro, Parquet u ORC almacenados en Cloud Storage o Drive.
Usa el comando
bq mkdef
para crear una tabla permanente.bq mkdef \ --source_format=FORMAT \ "URI" > FILE_NAME
Reemplaza lo siguiente:
FORMAT
: el formato de origenURI
: el URI de Cloud Storage o tu URI de Drive.Por ejemplo,
gs://mybucket/myfile
para Cloud Storage ohttps://drive.google.com/open?id=123ABCD123AbcD123Abcd
para Drive.FILE_NAME
: el nombre de tu archivo de definición de tablas
Opcional: Abre el archivo de definición de tablas en un editor de texto. El archivo es similar al siguiente:
{ "sourceFormat": "AVRO", "sourceUris": [ "URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones generales como
maxBadRecords
yignoreUnknownValues
. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.
Crea un archivo de definición para datos con partición de subárbol
Usa el comando bq mkdef
con las marcas hive_partitioning_mode
y hive_partitioning_source_uri_prefix
para crear un archivo de definición para datos con partición de subárbol que se almacene en Cloud Storage, Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage.
Crea un archivo de definición para Datastore y Firestore
Si usas una exportación de Datastore o Firestore como fuente de datos externa, BigQuery recupera de forma automática el esquema mediante los datos de fuente autodescriptivos. Cuando creas una definición de tablas, no necesitas proporcionar una definición de esquema intercalado ni un archivo de esquema.
Puedes crear un archivo de definición de tablas para los datos de exportación de Datastore y Firestore almacenados en Cloud Storage:
Usa el comando
bq mkdef
para crear una tabla permanente. No es necesario usar la marca--noautodetect
con los archivos de copia de seguridad de Datastore o Firestore. La detección automática de esquemas está inhabilitada para estos tipos de archivos. Con el comandomkdef
, se genera un archivo de definición de tablas en formato JSON. En el ejemplo siguiente, se crea una definición de tablas y se escribe el resultado en un archivo:/tmp/file_name
.bq mkdef \ --source_format=DATASTORE_BACKUP \ "URI" > /tmp/FILE_NAME
Reemplaza lo siguiente:
URI
: el URI de Cloud StorageFILE_NAME
: el nombre de tu archivo de definición de tablas
El formato de origen
DATASTORE_BACKUP
se usa para Datastore y Firestore.Opcional: Abre el archivo de definición de tablas en un editor de texto. Por ejemplo, con el comando
nano /tmp/file_name
, se abre el archivo en nano. El archivo debe verse de la manera siguiente. Ten en cuenta que no es necesaria la configuración de"autodetect"
.{ "sourceFormat": "DATASTORE_BACKUP", "sourceUris": [ "gs://URI" ] }
Opcional: Edita manualmente el archivo de definición de tablas para modificar, agregar o borrar configuraciones como
maxBadRecords
yignoreUnknownValues
. No existen opciones de configuración específicas para los archivos de exportación de Datastore y Firestore. Para obtener más información, consultaExternalDataConfiguration
en la referencia de la API.
Crea un archivo de definición para Bigtable
Cuando creas un archivo de definición de tablas para Cloud Bigtable, genera manualmente el archivo en formato JSON. Actualmente, no se admite el uso del comando mkdef
a fin de crear una definición
de tablas para las fuentes de datos de Bigtable.
La detección automática de esquemas tampoco es compatible con Bigtable. Para obtener una lista
de las opciones de definición de tablas de Bigtable, consulta
BigtableOptions
en
la referencia de la API de REST.
Un archivo de definición de tablas JSON para Bigtable se parece al ejemplo siguiente. Mediante este archivo de definición de tablas, en BigQuery se leen los datos de una sola familia de columnas y se interpretan los valores como números enteros codificados binarios.
{ "sourceFormat": "BIGTABLE", "sourceUris": [ "https://googleapis.com/bigtable/projects/PROJECT_ID/instances/INSTANCE_ID/tables/TABLE_NAME" ], "bigtableOptions": { "columnFamilies" : [ { "familyId": "FAMILY_ID", "type": "INTEGER", "encoding": "BINARY" } ] } }
Reemplaza lo siguiente:
PROJECT_ID
: Es el proyecto que contiene el clúster de Bigtable.INSTANCE_ID
: Es el ID de la instancia de Bigtable.TABLE_NAME
: Es el nombre de la tabla que deseas consultar.FAMILY_ID
: Es el identificador de la familia de columnas.
Si deseas obtener más información, consulta Recupera el URI de Bigtable.
Compatibilidad con comodines para los archivos de definición de tablas
Si los datos se separan en varios archivos, puedes usar un asterisco (*) para seleccionar varios archivos. El uso del comodín de asterisco debe seguir estas reglas:
- El asterisco puede aparecer dentro del nombre del objeto o al final de este.
- No se admite el uso de varios asteriscos. Por ejemplo, la ruta
gs://mybucket/fed-*/temp/*.csv
no es válida. - No se admite el uso de un asterisco con el nombre del bucket.
Ejemplos:
En el ejemplo siguiente, se muestra cómo elegir todos los archivos en todas las carpetas que inician con el prefijo
gs://mybucket/fed-samples/fed-sample
:gs://mybucket/fed-samples/fed-sample*
En el siguiente ejemplo, se muestra cómo elegir solo los archivos con una extensión
.csv
en la carpeta llamadafed-samples
y cualquier subcarpeta defed-samples
:gs://mybucket/fed-samples/*.csv
En el siguiente ejemplo, se muestra cómo elegir archivos con un patrón de nombres de
fed-sample*.csv
en la carpeta llamadafed-samples
. En este ejemplo, no se eligen archivos en subcarpetas defed-samples
.gs://mybucket/fed-samples/fed-sample*.csv
Cuando usas la herramienta de línea de comandos de bq, es posible que debas descartar el asterisco en algunas plataformas.
Si usas un comodín de asterisco, escribe el bucket y el nombre de archivo entre comillas. Por ejemplo, si tuvieras dos archivos llamados fed-sample000001.csv
y fed-sample000002.csv
y deseas usar un asterisco para seleccionar ambos, el URI del bucket sería "gs://mybucket/fed-sample*"
.
El carácter comodín *
no se permite cuando se crean archivos de definición de tablas para las fuentes de datos siguientes:
- Bigtable. Para los datos de Bigtable, solo se puede especificar una fuente de datos. El valor de URI debe ser una URL HTTPS válida para una tabla de Bigtable.
- Datastore o Firestore. Exportaciones de Datastore o Firestore almacenadas en Cloud Storage. Para las copias de seguridad de Datastore, solo se puede especificar una fuente de datos. El valor del URI debe terminar con
.backup_info
o.export_metadata
. - Drive. Datos almacenados en Drive.
¿Qué sigue?
- Obtén información sobre cómo consultar datos de Cloud Storage.
- Obtén información sobre cómo consultar datos de Drive.
- Obtén información sobre cómo consultar datos de Bigtable.