Consultar datos de Drive
En este documento se describe cómo consultar los datos almacenados en una tabla externa de Google Drive.
BigQuery admite consultas en archivos de Drive personales y compartidos. Para obtener más información sobre Drive, consulta Formación y ayuda sobre Google Drive.
Puedes consultar datos de Drive desde una tabla externa permanente o desde una tabla externa temporal que creas al ejecutar la consulta.
Limitaciones
Para obtener información sobre las limitaciones relacionadas con las tablas externas, consulta Limitaciones de las tablas externas.
Roles obligatorios
Para consultar tablas externas de Drive, asegúrate de que tienes los siguientes roles:
- Lector de datos de BigQuery (
roles/bigquery.dataViewer
) - Usuario de BigQuery (
roles/bigquery.user
)
En función de tus permisos, puedes asignarte estos roles o pedirle a tu administrador que te los asigne. Para obtener más información sobre cómo conceder roles, consulta el artículo Ver los roles que se pueden conceder en los recursos.
Para ver los permisos exactos de BigQuery que se necesitan para consultar tablas externas, despliega la sección Permisos necesarios:
Permisos obligatorios
bigquery.jobs.create
bigquery.readsessions.create
(Solo es necesario si lees datos con la API de lectura de almacenamiento de BigQuery).bigquery.tables.get
bigquery.tables.getData
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Permisos de Drive
Como mínimo, para consultar datos externos en Drive, debes tener acceso View
al archivo de Drive vinculado a la tabla externa.
Ámbitos de las instancias de Compute Engine
Cuando creas una instancia de Compute Engine, puedes especificar una lista de ámbitos para la instancia. Los ámbitos controlan el acceso de la instancia a los productos de Google Cloud, incluido Drive. Las aplicaciones que se ejecutan en la VM usan la cuenta de servicio para llamar a las APIs de Google Cloud .
Si configuras una instancia de Compute Engine para que se ejecute como una cuenta de servicio y esa cuenta de servicio accede a una tabla externa vinculada a una fuente de datos de Drive, debes añadir el ámbito de OAuth de Drive (https://www.googleapis.com/auth/drive.readonly
) a la instancia.
Para obtener información sobre cómo aplicar ámbitos a una instancia de Compute Engine, consulta el artículo Cambiar la cuenta de servicio y los ámbitos de acceso de una instancia. Para obtener más información sobre las cuentas de servicio de Compute Engine, consulta el artículo Cuentas de servicio.
Consultar datos de Drive con tablas externas permanentes
Una vez que hayas creado una tabla externa de Drive, podrás consultarla con la sintaxis de GoogleSQL, como si fuera una tabla estándar de BigQuery. Por ejemplo, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Consultar datos de Drive con tablas temporales
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).
Para consultar una fuente de datos externa sin crear una tabla permanente, debes proporcionar una definición de tabla para la tabla temporal y, a continuación, usar esa definición de tabla en un comando o una llamada para consultar la tabla temporal. Puedes proporcionar la definición de la tabla de cualquiera de las siguientes formas:
- Un archivo de definición de tabla
- Una definición de esquema insertada
- Un archivo de esquema JSON
El archivo de definición de tabla o el esquema proporcionado se usan para crear la tabla externa temporal y la consulta se ejecuta en la tabla externa temporal.
Cuando usas una tabla externa 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.
Crear y consultar tablas temporales
Puedes crear y consultar una tabla temporal vinculada a una fuente de datos externa con la herramienta de línea de comandos bq, la API o las bibliotecas de cliente.
bq
Para consultar una tabla temporal vinculada a una fuente de datos externa, usa el comando bq query
con la marca --external_table_definition
. Cuando usas la herramienta de línea de comandos bq para consultar una tabla temporal vinculada a una fuente de datos externa, puedes identificar el esquema de la tabla de las siguientes formas:
- Un archivo de definición de tabla (almacenado en tu máquina local)
- Una definición de esquema insertada
- Un archivo de esquema JSON (almacenado en tu máquina local)
Para consultar una tabla temporal vinculada a tu fuente de datos externa mediante un archivo de definición de tabla, introduce el siguiente comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Donde:
LOCATION
es tu ubicación. La marca--location
es opcional.TABLE
es el nombre de la tabla temporal que vas a crear.DEFINITION_FILE
es la ruta del archivo de definición de tabla en tu máquina local.QUERY
es la consulta que envías a la tabla temporal.
Por ejemplo, el siguiente comando crea y consulta una tabla temporal llamada sales
mediante un archivo de definición de tabla llamado sales_def
.
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Para consultar una tabla temporal vinculada a tu fuente de datos externa mediante una definición de esquema insertada, introduce el siguiente comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Donde:
LOCATION
es tu ubicación. La marca--location
es opcional.TABLE
es el nombre de la tabla temporal que vas a crear.SCHEMA
es la definición de esquema insertada en el formatoFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
esCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oGOOGLE_SHEETS
.DRIVE_URI
es tu URI de Drive.QUERY
es la consulta que envías a la tabla temporal.
Por ejemplo, el siguiente comando crea una tabla temporal llamada sales
y consulta su contenido. Esta tabla está vinculada a un archivo CSV almacenado en Drive con la siguiente definición de esquema: Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq --location=US query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Region,Total_sales
FROM
sales'
Para consultar una tabla temporal vinculada a tu fuente de datos externa mediante un archivo de esquema JSON, introduce el siguiente comando.
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Donde:
LOCATION
es tu ubicación. La marca--location
es opcional.SCHEMA_FILE
es la ruta al archivo de esquema JSON de tu máquina local.SOURCE_FILE
esCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oGOOGLE_SHEETS
.DRIVE_URI
es tu URI de Drive.QUERY
es la consulta que envías a la tabla temporal.
Por ejemplo, el siguiente comando crea y consulta una tabla temporal llamada sales
vinculada a un archivo CSV almacenado en Drive mediante el archivo de esquema /tmp/sales_schema.json
.
bq query \
--external_table_definition=sales::/tmp/sales_schema.json@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Total_sales
FROM
sales'
API
Crea una configuración de tarea de consulta. Consulta Consultar datos para obtener información sobre cómo llamar a
jobs.query
yjobs.insert
.Especifique la fuente de datos externa creando un
ExternalDataConfiguration
.
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Solución de problemas
Error string: Resources exceeded during query execution: Google Sheets service
overloaded.
Puede tratarse de un error temporal que se puede solucionar volviendo a ejecutar la consulta. Si el error persiste después de volver a ejecutar una consulta, prueba a simplificar la hoja de cálculo. Por ejemplo, puedes minimizar el uso de fórmulas. Para obtener más información, consulta las limitaciones de las tablas externas.
Siguientes pasos
- Consulta información sobre cómo usar SQL en BigQuery.
- Consulta información sobre las tablas externas.
- Consulta las cuotas de BigQuery.