[ Google - GCP ] 解決策: BigQuery エラー、無効な URI 指定。オプションの URI 値はワイルドカード URI である必要があります。

問題の説明

Google Cloud のデータベース ウェアハウスである BigQuery を使用して GS バケットにデータをエクスポートするプロセス中に、エラーが発生しました。

URI の指定が無効です。オプション「uri」値はワイルドカード URI である必要があります。

  • 実行される BigQuery ステートメントは次のとおりです。
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;

実行後、次の図に示すように、コマンド ウィンドウにエラー メッセージが表示されます。

ここに画像の説明を挿入します

原因分析:

エラー メッセージからわかるように、エラーの原因は URI が間違っていることです。最終的な解決策は URI のパスを変更することですが、なぜそれが間違っているのでしょうか? ここで説明します。

まず、GCP における通常の公式輸出データのステートメントは次のとおりです。

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

なお、上記uriの値は固定の記述方法となりますgs:// + bucket的名字 + 文件夹(可选) + 通配的csv文件名EXPORT DATA 構文は、エクスポート用の単一ファイルの直接書き込みをサポートしていません。公式の手順については、ここをクリックしてください


解決:

EXPORT DATA 構文を変更し、uri をワイルドカード式に変更します。コードは次のとおりです。

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;

最後の実行が再度成功すると、エクスポートされたファイルが GS バケットに表示されます。

ここに画像の説明を挿入します

追加: BigQuery は、各 URI で 1 つのワイルドカード演算子 (*) をサポートします。ワイルドカードは URI 内のどこにでも使用できますが、バケット名に含めることはできません。ワイルドカード演算子を使用して、指定されたパターンに基づいて複数のシャード ファイルを作成するように BigQuery に指示します。ワイルドカード演算子は、数値 (0 から始まる) を左に埋め込まれた 12 ビットに置き換えます。たとえば、URI のファイル名の末尾にワイルドカード文字がある場合、ファイルが作成されると、最初のファイルの名前の末尾には 000000000000 が追加され、2 番目のファイルの名前には 000000000001 が追加されます。等々。

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

おすすめ

転載: blog.csdn.net/dietime1943/article/details/135508108