Consultar dados do Drive
Este documento descreve como consultar dados armazenados numa tabela externa do Google Drive.
O BigQuery suporta consultas em ficheiros pessoais do Drive e ficheiros partilhados. Para mais informações sobre o Drive, consulte a formação e ajuda do Google Drive.
Pode consultar dados do Drive a partir de uma tabela externa permanente ou de uma tabela externa temporária que cria quando executa a consulta.
Limitações
Para ver as limitações relacionadas com tabelas externas, consulte as limitações das tabelas externas.
Funções necessárias
Para consultar tabelas externas do Drive, certifique-se de que tem as seguintes funções:
- Visualizador de dados do BigQuery (
roles/bigquery.dataViewer
) - Utilizador do BigQuery (
roles/bigquery.user
)
Consoante as suas autorizações, pode atribuir estas funções a si próprio ou pedir ao seu administrador para as atribuir. Para mais informações sobre a concessão de funções, consulte o artigo Ver as funções atribuíveis aos recursos.
Para ver as autorizações exatas do BigQuery necessárias para consultar tabelas externas, expanda a secção Autorizações necessárias:
Autorizações necessárias
bigquery.jobs.create
bigquery.readsessions.create
(Só é necessário se estiver a ler dados com a API BigQuery Storage Read)bigquery.tables.get
bigquery.tables.getData
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Autorizações do Drive
No mínimo, para consultar dados externos no Drive, tem de ter
acesso View
ao ficheiro do Drive associado à tabela externa.
Âmbitos para instâncias do Compute Engine
Quando cria uma instância do Compute Engine, pode especificar uma lista de âmbitos para a instância. Os âmbitos controlam o acesso da instância aos Google Cloud produtos, incluindo o Drive. As aplicações em execução na VM usam a conta de serviço para chamar as Google Cloud APIs.
Se configurar uma instância do Compute Engine para ser executada como uma conta de serviço e essa conta de serviço aceder a uma tabela externa associada a uma origem de dados do Drive, tem de adicionar o âmbito do OAuth para o Drive (https://www.googleapis.com/auth/drive.readonly
) à instância.
Para ver informações sobre a aplicação de âmbitos a uma instância do Compute Engine, consulte Alterar a conta de serviço e os âmbitos de acesso de uma instância. Para mais informações sobre as contas de serviço do Compute Engine, consulte o artigo Contas de serviço.
Consulte dados do Drive através de tabelas externas permanentes
Depois de criar uma tabela externa do Drive, pode consultá-la através da
sintaxe do GoogleSQL, tal como se fosse uma tabela padrão do BigQuery. Por exemplo, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Consulte dados do Drive através de tabelas temporárias
A consulta de uma origem de dados externa através de uma tabela temporária é útil para consultas únicas e ad hoc sobre dados externos ou para processos de extração, transformação e carregamento (ETL).
Para consultar uma origem de dados externa sem criar uma tabela permanente, fornece uma definição de tabela para a tabela temporária e, em seguida, usa essa definição de tabela num comando ou numa chamada para consultar a tabela temporária. Pode fornecer a definição da tabela de qualquer uma das seguintes formas:
- Um ficheiro de definição de tabela
- Uma definição de esquema inline
- Um ficheiro de esquema JSON
O ficheiro de definição da tabela ou o esquema fornecido é usado para criar a tabela externa temporária e a consulta é executada na tabela externa temporária.
Quando usa uma tabela externa temporária, não cria uma tabela num dos seus conjuntos de dados do BigQuery. Uma vez que a tabela não está armazenada permanentemente num conjunto de dados, não pode ser partilhada com outras pessoas.
Crie e consulte tabelas temporárias
Pode criar e consultar uma tabela temporária associada a uma origem de dados externa através da ferramenta de linha de comandos bq, da API ou das bibliotecas de cliente.
bq
Consulta uma tabela temporária associada a uma origem de dados externa através do comando bq query
com a flag --external_table_definition
. Quando usa a ferramenta de linhas de comando bq para consultar uma tabela temporária associada a uma origem de dados externa, pode identificar o esquema da tabela através do seguinte:
- Um ficheiro de definição de tabela (armazenado no seu computador local)
- Uma definição de esquema inline
- Um ficheiro de esquema JSON (armazenado no seu computador local)
Para consultar uma tabela temporária associada à sua origem de dados externa através de um ficheiro de definição de tabela, introduza o seguinte comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Onde:
LOCATION
é a sua localização. A flag--location
é opcional.TABLE
é o nome da tabela temporária que está a criar.DEFINITION_FILE
é o caminho para o ficheiro de definição da tabela na sua máquina local.QUERY
é a consulta que está a enviar para a tabela temporária.
Por exemplo, o seguinte comando cria e consulta uma tabela temporária
denominada sales
através de um ficheiro de definição de tabela denominado sales_def
.
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Para consultar uma tabela temporária associada à sua origem de dados externa através de uma definição de esquema inline, introduza o seguinte comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Onde:
LOCATION
é a sua localização. A flag--location
é opcional.TABLE
é o nome da tabela temporária que está a criar.SCHEMA
é a definição do esquema inline no formatoFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
éCSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouGOOGLE_SHEETS
.DRIVE_URI
é o seu URI do Drive.QUERY
é a consulta que está a enviar para a tabela temporária.
Por exemplo, o comando seguinte cria e consulta uma tabela temporária denominada sales
associada a um ficheiro CSV armazenado no Drive com a seguinte definição 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 uma tabela temporária associada à sua origem de dados externa através de um ficheiro de esquema JSON, introduza o seguinte comando.
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Onde:
LOCATION
é a sua localização. A flag--location
é opcional.SCHEMA_FILE
é o caminho para o ficheiro de esquema JSON no seu computador local.SOURCE_FILE
éCSV
,NEWLINE_DELIMITED_JSON
,AVRO
ouGOOGLE_SHEETS
.DRIVE_URI
é o seu URI do Drive.QUERY
é a consulta que está a enviar para a tabela temporária.
Por exemplo, o seguinte comando cria e consulta uma tabela temporária
denominada sales
associada a um ficheiro CSV armazenado no Drive através do ficheiro 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
Crie uma configuração de tarefa de consulta. Consulte o artigo Consultar dados para ver informações sobre como chamar
jobs.query
ejobs.insert
.Especifique a origem de dados externa criando um
ExternalDataConfiguration
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Resolução de problemas
Error string: Resources exceeded during query execution: Google Sheets service
overloaded.
Este pode ser um erro temporário que pode ser corrigido executando novamente a consulta. Se o erro persistir após a nova execução de uma consulta, pondere simplificar a folha de cálculo, por exemplo, minimizando a utilização de fórmulas. Para mais informações, consulte as limitações das tabelas externas.
O que se segue?
- Saiba como usar o SQL no BigQuery.
- Saiba mais sobre as tabelas externas.
- Saiba mais acerca das quotas do BigQuery.