我通过java API和新服务Dataflow访问BigQuery数据。我原以为TableRow类有以下方法:
但我只找到使用get方法访问TableRow实例字段的示例代码,这不方便,因为输出是Object类的实例。
我目前看到的唯一解决方案是解析我从get方法获得的字符串并自己构建一个TableRow对象,但我想知道是否有人有更好的解决方案来分享?
非常感谢。
答案 0 :(得分:2)
最后我得出了这些结论:
所以你只需要使用上面一个类中的应用于TableRow实例的get方法向下转换结果,然后你可以充分利用它们的功能(例如迭代和调用名称)。
答案 1 :(得分:1)
我已退回Repeated
Record
,我使用以下方式访问:
TableRow atrs = (TableRow) row.get("sts");
List<String> atrValue = (List<String>) atrs.get("value");
if(atrValue.size()>0){
TableRow atrRow = new TableRow();
atrRow.set("id", "sts");
atrRow.set("value", atrValue.toArray());
if(atrs.get("sv") !=null){
List<Integer> atrSV = ((List<String>) atrs.get("sv"))
.stream()
.map(x -> Integer.parseInt(x))
.collect(Collectors.toList());
atrRow.set("sv", atrSV.toArray());
}
else
atrRow.set("sv", null);
atrList.add(atrRow);
}
答案 2 :(得分:0)
TableRow有一个getClassInfo()
方法。它有什么用? (我自己尝试使用嵌套字段)