[ Google – GCP ] Lösung: BigQuery-Fehler, ungültige URI-Spezifikation. Der Option-URI-Wert muss ein Platzhalter-URI sein

Problembeschreibung

Beim Exportieren von Daten in den GS-Bucket mithilfe von BigQuery, dem Datenbank-Warehouse von Google Cloud, ist ein Fehler aufgetreten:

Ungültige URI-Spezifikation. Der Wert der Option „uri“ muss ein Platzhalter-URI sein.

  • Die ausgeführten BigQuery-Anweisungen lauten wie folgt:
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;

Nach der Ausführung erscheint im Befehlsfenster eine Fehlermeldung, wie in der folgenden Abbildung dargestellt:

Fügen Sie hier eine Bildbeschreibung ein

Ursachenanalyse:

Wie aus der Fehlermeldung hervorgeht, liegt die Fehlerursache darin, dass die URI falsch ist. Die endgültige Lösung besteht darin, den Pfad des URI zu ändern. Warum ist er also falsch? Hier finden Sie eine Erklärung.

Erstens lautet die normale offizielle Exportdatenerklärung in GCP wie folgt:

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

Beachten Sie, dass der Wert der obigen URL eine feste Schreibmethode ist gs:// + bucket的名字 + 文件夹(可选) + 通配的csv文件名. Die EXPORT DATA-Syntax unterstützt nicht das direkte Schreiben einer einzelnen Datei für den Export. Für offizielle Anweisungen klicken Sie hier .


Lösung:

Ändern Sie die EXPORT DATA-Syntax und ändern Sie uri in einen Platzhalterausdruck. Der Code lautet wie folgt:

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;

Nachdem die endgültige Ausführung erneut erfolgreich war, ist die exportierte Datei im GS-Bucket zu sehen:

Fügen Sie hier eine Bildbeschreibung ein

Hinzugefügt : BigQuery unterstützt einen einzelnen Platzhalteroperator (*) in jedem URI. Platzhalter können überall im URI erscheinen, dürfen aber nicht im Bucket-Namen enthalten sein. Verwenden Sie den Platzhalteroperator, um BigQuery anzuweisen, mehrere Shard-Dateien basierend auf dem bereitgestellten Muster zu erstellen. Der Platzhalteroperator ersetzt eine Zahl (beginnend bei 0) durch 12 nach links aufgefüllte Bits. Wenn ein URI beispielsweise ein Platzhalterzeichen am Ende seines Dateinamens hat, wird beim Erstellen der Dateien an das Ende des Namens der ersten Datei 000000000000 angehängt, an den Namen der zweiten Datei wird 000000000001 angehängt. und so weiter.

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

Ich denke du magst

Origin blog.csdn.net/dietime1943/article/details/135508108
Empfohlen
Rangfolge