Yea, the reason is that SQL relations are not ordered. So any ordering of [1, 2, 3, 4] and [5, 6] and [7, 8, 9] is possible and correct.
Kenn On Mon, Mar 1, 2021 at 11:01 AM Tyson Hamilton <tyso...@google.com> wrote: > 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/> >> >