1

このコード例を使用して行を挿入しようとしています:

https://developers.google.com/bigquery/streaming-data-into-bigquery#streaminginsertexamples

エラーが表示されます:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid table ID \"projectid:datasetid.tableid\".",
    "reason" : "invalid"
  } ],
  "message" : "Invalid table ID \"projectid:datasetid.tableid\"."
}

プロジェクト、データセット、およびテーブルがすべて存在します。エラー レポートから実際の projectid:datasetid.tableid をコピーして BigQuery ウェブ UI に貼り付けると、機能します。projectid には「-」が含まれ、残りは英数字です。Web UI が受け入れる ID について API が不平を言うのはなぜですか?


Jordan の質問に答えるために更新します。これは私の呼びかけです:

TableDataInsertAllResponse response =
    bigquery
    .tabledata()
    .insertAll(projectId, datasetId, table.getId(), content)
    .execute();

これを呼び出す前に、プロジェクト、データセット、およびテーブルがすべて存在することを確認します。次に、テーブルの実際の ID を使用します。


新しい情報: (ご想像のとおり) table.getId() は、プロジェクトとデータセットを含む完全修飾 ID を返します。それらを除外するために短縮されたIDをハードコードすると、うまくいきました。

4

1 に答える 1