我还没有发现任何App Engine类存在的原因.有一个PhoneNumber,一个Link,一个PostalAddress,一个GeoPt,一个等级等等.为什么这些给予特殊待遇?他们似乎没有任何智慧 - 例如地理搜索.我知道Link比String属性有更多的空间,但其余的?
请参阅:http: //code.google.com/appengine/docs/java/datastore/dataclasses.html
我正在尝试使用此示例代码插入一行:
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\"."
}
Run Code Online (Sandbox Code Playgroud)
项目、数据集和表都存在。当我从错误报告中复制实际的 projectid:datasetid.tableid 并将其粘贴到 BigQuery Web UI 时,它可以工作。projectid 中有一个“-”,其余的是字母数字。为什么 API 会抱怨 Web UI 接受的 ID?
更新以回答乔丹的问题。这是我的电话:
TableDataInsertAllResponse response =
bigquery
.tabledata()
.insertAll(projectId, datasetId, table.getId(), content)
.execute();
Run Code Online (Sandbox Code Playgroud)
在我调用它之前,我通过获取它们来确保项目、数据集和表都存在。然后我使用表的实际 ID。
新信息:结果(如您所料) table.getId() 返回完全限定的 id,包括项目和数据集。当我对缩短的 id 进行硬编码以排除它们时,它起作用了。