このコード例を使用して行を挿入しようとしています:
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をハードコードすると、うまくいきました。