I didn't find anything like that after a brief look. What you could do
instead is something like:

PAssert.thatSingleton(stream).satisfies( row -> assertThat("array_field
containsInAnyOrder", row.getArray("array_field"),
containsInAnyOrder(Arrays.asList(...)));

using junit/hamcrest matchers. I didn't verify this works myself but it
should give you an idea for some next steps.


On Mon, Mar 1, 2021 at 12:37 AM Sonam Ramchand <
sonam.ramch...@venturedive.com> wrote:

> Hi Devs,
> I have implemented the ARRAY_CONCAT_AGG function for zetasql dialect. I am
> trying to validate the test as:
>
> @Test
> public void testArrayConcatAggZetasql() {
>   String sql =
>       "SELECT ARRAY_CONCAT_AGG(x) AS array_concat_agg FROM (SELECT [1, 2, 3, 
> 4] AS x UNION ALL SELECT [5, 6] UNION ALL SELECT [7, 8, 9])";
>
>   ZetaSQLQueryPlanner zetaSQLQueryPlanner = new ZetaSQLQueryPlanner(config);
>   BeamRelNode beamRelNode = zetaSQLQueryPlanner.convertToBeamRel(sql);
>   PCollection<Row> stream = BeamSqlRelUtils.toPCollection(pipeline, 
> beamRelNode);
>
>   Schema schema = Schema.builder().addArrayField("array_field", 
> FieldType.INT64).build();
>   PAssert.that(stream)
>       .containsInAnyOrder(
>           Row.withSchema(schema).addArray(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
> 9L).build());
>   
> pipeline.run().waitUntilFinish(Duration.standardMinutes(PIPELINE_EXECUTION_WAITTIME_MINUTES));
> }
>
> Expected Output is: 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L.
> But I am getting randomly different outputs:
> 1. 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L
> 2. 5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L, 4L
> 3. 7L, 8L, 9L, 5L, 6L, 1L, 2L, 3L, 4L
>
> As per my understanding, it is because of containsInAnyOrder function. Is
> there anything Like:
>
>    PAssert.that(stream)
>         .containsAnyOfThem(
>             Row.withSchema(schema).addArray(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
> 9L).build(),
>                 Row.withSchema(schema).addArray(5L, 6L, 7L, 8L, 9L, 1L, 2L, 
> 3L, 4L).build(),
>                 Row.withSchema(schema).addArray(7L, 8L, 9L, 5L, 6L, 1L, 2L, 
> 3L, 4L).build());
>
> I would really appreciate if anyone can help me in knowing how to handle
> such scenario in Beam.
>
> Thanks!
> --
> Regards,
> *Sonam*
> Software Engineer
> Mobile: +92 3088337296 <+92%20308%208337296>
>
> <http://venturedive.com/>
>

Reply via email to