[Google - GCP] Solução: erro do BigQuery, especificação de uri inválida. O valor do uri da opção deve ser um URI curinga

Descrição do Problema

Durante o processo de exportação de dados para o bucket GS usando o BigQuery, o data warehouse do Google Cloud, ocorreu um erro:

Especificação de uri inválida. O valor da opção 'uri' deve ser um URI curinga.

  • As instruções do BigQuery executadas são as seguintes:
EXPORT DATA OPTIONS(
  uri='gs://test_bucket/GENERATEDB_DATA.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;

Após a execução, aparecerá uma mensagem de erro na janela de comando, conforme mostra a figura abaixo:

Insira a descrição da imagem aqui

Análise de causa:

Como pode ser visto na mensagem de erro, a causa do erro é que o URI está incorreto. A solução final é modificar o caminho do URI. Então, por que está incorreto? Aqui está uma explicação.

Primeiro, a declaração oficial normal de dados de exportação no GCP é a seguinte:

EXPORT DATA OPTIONS(
  uri='gs://bucket/folder/*.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=';') AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10

Observe que o valor do uri acima é um método de escrita fixo gs:// + bucket的名字 + 文件夹(可选) + 通配的csv文件名. A sintaxe EXPORT DATA não suporta gravação direta de um único arquivo para exportação. Para instruções oficiais clique aqui .


solução:

Modifique a sintaxe EXPORT DATA e altere uri para uma expressão curinga. O código é o seguinte:

EXPORT DATA OPTIONS(
  uri='gs://test_bucket/GENERATEDB_DATA_*.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;

Após a execução final ser bem-sucedida novamente, o arquivo exportado pode ser visto no bucket GS:

Insira a descrição da imagem aqui

Adicionado : o BigQuery oferece suporte a um único operador curinga (*) em cada URI. Os caracteres curinga podem aparecer em qualquer lugar do URI, mas não podem ser incluídos no nome do bucket. Use o operador curinga para instruir o BigQuery a criar vários arquivos de fragmentos com base no padrão fornecido. O operador curinga substitui um número (começando em 0) por 12 bits preenchidos à esquerda. Por exemplo, se um URI tiver um caractere curinga no final do nome do arquivo, quando os arquivos forem criados, o primeiro arquivo terá 000000000000 anexado ao final do nome, o segundo arquivo terá 000000000001 anexado ao nome, e assim por diante.

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/135508108
[ 最后更新 ]   01/10/2024 18:16
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

Acho que você gosta

Origin blog.csdn.net/dietime1943/article/details/135508108
Recomendado
Clasificación