我试图使用Apache Beam将一些看起来像Json的数据流作为字符串写入BigQuery。数据是一个数组中的一个数组,由于不可能将嵌套数组写入Bigquery,所以我在主记录地址中创建了一个子记录Address_Instance。我需要帮助将我的嵌套记录写入BigQuery。
下面是我的数据的样子,以及我如何将其转换为BigqueryTableRow
。
String data = "[{Address=[[{\"Street:\"someStreet\",\"City\":\"someCity\"}]]}]";
List<TableCell> childFields = new ArrayList<>();
for (int i = 0; i < data.length(); i++) {
TableCell tableCell = new TableCell();
...
for each key value pair
{ tableCell.set(key, value); }
...
childFields.add(tableCell);
}
//return TableRow
new TableRow.set(key, new TableCell().setV(new TableRow().set(key + "_INSTANCE", childFields)));
这就是我得到的错误:
Repeated record with name Address added outside of an array
下面是我的BigQuery模式的样子:
[
{
"name": "Address",
"type": "RECORD",
"mode": "REPEATED",
"fields": [
{
"name": "Address_Instance
"mode": "REPEATED",
"fields": [
{
"name": "Street",
"type": "STRING"
},
{
"name": "City",
"type": "STRING"
}
]
}
]
}
]
如何使用现有模式将上面的嵌套记录写入Bigquery?会很感激你的帮助。多谢了。
可以在BigQuery中编写嵌套字段,但需要正确定义模式。从您的代码来看,您似乎希望将字符串存储在将列定义为RECORD的表中。
我建议您查看BigQuery https://cloud.google.com/BigQuery/docs/nested-repeated并根据需要定义模式,然后尝试插入JSON对象而不是字符串。
问题内容: 我正在尝试将嵌套的字典写入.csv文件。这是一个简单的示例: 这使我得到一个包含两列的表:第一个包含; 第二个包含[2,1,1](或子词典中的相应值)。我想要一个有四列的表:一列对应的列表元素,然后三列对应的列表元素。 问题答案: 更改: 至: 否则,您会尝试向csv编写类似的内容,而您的意思是。 如Padraic所述,您可能希望更改为或避免随机行为。
问题内容: 我可以使用Golang将平面对象插入BigQuery中-如何将嵌套数据插入表中? 我的BigQuery模式如下所示(从示例中): 我的第一次插入尝试如下所示(示例): 哪个变平并插入没有问题。我只是在用visit_duration 但是,我需要遍历一个片段并添加到访问记录中。我试图建立一个 访问 对象(没有要测试的循环)并将其添加到行中,但它没有插入,并且我没有收到任何错误: - -[
我正在寻找HAL中嵌套_embedded如何使用Spring HATEOAS API编程的例子。最佳实践是什么? 下面是我想要实现的一个例子:
问题内容: 我正在努力解决这个问题。我有一个JSON文件,需要将其放到CSV中,如果结构是扁平的,没有深层嵌套的项目,就可以了。 但是在这种情况下,嵌套会使我烦恼。 我将如何以这种格式获取数据: 每个对象和对象中的每个种族? 我想这样输出到CSV: 所以首先我得到正确的密钥: 然后添加数据: 但是如何? 对于您熟练的forlooper来说,这应该是一个有趣的过程。 问题答案: 我只收集第一个对象的
我创建了以下groovy脚本,以展示如何使用简单的注释将日志字段注入我们的类 当我运行groovy脚本时,我得到以下结果(在GROOVY CONSOLE上) 请告知我们如何将结果打印到WIN机器中的日志文件中,以及需要向groovy脚本中添加什么才能启用它? 例如: 日志文件 C: \程序文件\日志\我的。非常棒。日志 (应包含结果:)
问题内容: 我在MySQL中用一个表创建了一个数据库: 我尝试使用Java插入记录: 输出似乎成功返回: 但是,当我从MySQL中选择时,插入的记录为空: 为什么插入空白记录? 问题答案: 不,这是行不通的(不适用于真实数据): 更改为: 使用该sql创建一个PreparedStatment,并使用索引插入值: