0

在 BigQuery 中,我们有“ARRAY_AGG”函数,它有助于将普通集合转换为嵌套集合。是否有类似的方法可以使用 BeamSQL 构建相同类型的嵌套结构集合?类似于 BeamSQL 中的以下查询,

“从 PCOLLECTION Group by Column1 中选择 column1, ARRAY_AGG(STRUCT(column2, column3))”

4

1 回答 1

1

如果我正确理解了您的问题,您应该能够使用ARRAY构造函数"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));
  }

也可以看看:

于 2019-05-30T17:25:48.690 回答