当前位置: 首页 > 知识库问答 >
问题:

Google Dataflow:如何在大查询中插入记录非重复类型字段?

漆雕奇逸
2023-03-14

我是数据流的新手。我有一个预定义的模式,包含一个名为“device”的非重复记录字段:

device.configId: STRING
device.version: STRING

使用ParDo转换,我尝试插入带有这种字段的TableRow,如下所示:

TableRow row = new TableRow();
row.put("field1", "val1");
TableRow device = new TableRow();
device.put("configId", "conf1");
device.put("version", "1.2.3");
row.put("device", device);
out.output(row);

我记录了表行,它看起来是这样的:

{field1=val1, device={configId=conf1, version=1.2.3}}

我将它输出到一个标准转换:bigQueryIo.write()

但后者发出错误:

java.lang.RuntimeException: java.io.IOException:
Insert failed: [{"errors":[{
    "debugInfo":"",
    "location":"device.configid",
    "message":"This field is not a record.",
    "reason":"invalid"
}],"index":0}]

不知道为什么,但请注意lowecase中的位置拼写为“configid”--而不是原始日志中的camel大小写。

对于如何将这样的对象插入BigQuery有什么想法吗?

共有1个答案

楚奇逸
2023-03-14

发现了问题所在。显然,只有当“configid”字段设置为null而不是“conf1”时,才会出现此错误消息。确切地说,它被隐式地设置为来自某个输入对象的JSONObject.null。

 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 如何在MySQL中“如果不存在则插入”? (10个回答) 7年前关闭。 我有一个mysql表… 我只想添加不在列中的记录。 对于前 我有以下记录要添加到表中 我不想添加,因为它已经在列中。 那么,查询是否有可能先检查记录然后插入? 目前,我正在使用..首先,我先进行记录,然后对其进行匹配,然后再对其进行匹配。 但是,我只想处理一个查询。 问题答案: 您可

  • 我使用JBOSS 5.1.2 MDB来使用放置在队列中的实体消息。消息生成器可以为同一实体生成多条消息。这些消息实体由它们的实体编号定义。(msg_entity_no)只有当实体不存在时,我才必须将记录插入到现有实体表中,否则我必须更新现有记录。现有实体表在此实体号上不唯一,因为它有另一个内部键。ie它包含重复的msg_entity_no 我遇到的问题是,当产生多个消息时,实体表中同时存在多个MD

  • 如何避免在PHP MYSQLi中插入重复记录?这是我的剧本:

  • 我有一个名为“user_links”的PostgreSQL数据库表,该表当前允许以下重复字段: 唯一约束当前是第一个名为“id”的字段,但是我现在希望添加一个约束,以确保、、和都是唯一的,但我无法应用约束,因为已经存在违反此约束的重复值。 有没有找到所有重复的方法?

  • 问题内容: 设想 我需要每天通过电子表格(唯一可用的选项)更新SQL 2008数据库。该格式非常基本,但是可能有数百万条记录。Column1和Column3将具有许多预定义的重复值,这些值已经提取到单独的表中。 电子表格样本 数据库设置 我的数据库设置了三个单独的表: 问题 如何编写SQL来插入与查找表中的信息匹配的记录?我该怎么办: 对此: 问题答案: 您可以尝试这样的事情: 没有任何容错功能,

  • 我正在使用mssql。插入记录后,我想获取数据的id。但我不知道该怎么做。我的代码如下。请给我答案。 Insert工作正常,但控制台日志[未定义]。。。。 这是表的ddl 在GO上设置ANSI\U NULL,在GO上设置QUOTED\U IDENTIFIER。[特征]( [id]nvarchar NOT NULL CONSTRAINT[DF\u Feature\u id]DEFAULT(CONVE