在BigQuery中,我们具有“ ARRAY_AGG”功能,可帮助将常规集合转换为嵌套集合。有没有类似的方法可以使用BeamSQL构建相同类型的嵌套结构集合?类似于下面的BeamSQL查询
“按列1从PCOLLECTION组中选择列1,ARRAY_AGG(STRUCT(列2,列3))”
答案 0 :(得分:1)
如果我正确理解了您的问题,则应该可以使用ARRAY
,this passes之类的"SELECT ARRAY[1, 2, 3] f_arr"
构造函数:
@Test
public void testArrayConstructor() {
BeamSqlEnv sqlEnv = BeamSqlEnv.inMemory(readOnlyTableProvider);
PCollection<Row> stream =
BeamSqlRelUtils.toPCollection(pipeline, sqlEnv.parseQuery("SELECT ARRAY[1, 2, 3] f_arr"));
PAssert.that(stream)
.containsInAnyOrder(
Row.withSchema(Schema.builder().addArrayField("f_arr", FieldType.INT32).build())
.addValue(Arrays.asList(1, 2, 3))
.build());
pipeline.run().waitUntilFinish(Duration.standardMinutes(2));
}
另请参阅: