My particular use case can throw an error if the lists are different length.

I think our real goal should be to have a logically complete set of simple
primitives that lets any sort of back and forward conversions of this kind.




On Fri, May 29, 2015 at 9:58 AM, Jason Altekruse <[email protected]>
wrote:

> I understand what you want to do, unfortunately we don't have support for
> this right now. A UDF is the best I can suggest at this point.
>
> Just to explore the idea a little further for the sake of creating a
> complete feature request, I assume you would just want nulls filled in for
> the cases where the lists were different lengths?
>
> On Fri, May 29, 2015 at 8:58 AM, Ted Dunning <[email protected]>
> wrote:
>
> > Input is here: https://gist.github.com/tdunning/07ce66e7e4d4af41afd7
> >
> > Output is here: https://gist.github.com/tdunning/3aa841c56bfcdc0ab90e
> >
> > log-synth schema for generating input data is here:
> > https://gist.github.com/tdunning/638dd52c00569ffa9582
> >
> >
> > Preferred syntax would be like
> >
> > select flatten(t, v1, v2) from ...
> >
> >
> >
> >
> > On Fri, May 29, 2015 at 7:04 AM, Neeraja Rentachintala <
> > [email protected]> wrote:
> >
> > > Ted
> > > can you pls give an example with few data elements in a, b and the
> > expected
> > > output you are looking from the query.
> > >
> > > -Neeraja
> > >
> > > On Fri, May 29, 2015 at 6:43 AM, Ted Dunning <[email protected]>
> > > wrote:
> > >
> > > > I have two arrays.  Their elements are correlated times and values.
> I
> > > > would like to flatten them into rows, each with two elements.
> > > >
> > > > The query
> > > >
> > > >    select flatten(a), flatten(b) from ...
> > > >
> > > > doesn't work because I get the cartesian product (of course).  The
> > query
> > > >
> > > >    select flatten(a, b) from ...
> > > >
> > > > also doesn't work because flatten doesn't have a multi-argument form.
> > > >
> > > > Going crazy, this query kind of sort of almost works, but not really:
> > > >
> > > >      select r.x.`key`, flatten(r.x.`value`)  from (
> > > >
> > > >          select flatten(kvgen(x)) as x from ...) r;
> > > >
> > > > What I really want to see is something like this:
> > > >    select zip(flatten(a), flatten(b)) from ...
> > > >
> > > > Any pointers?  Is my next step to write a UDF?
> > > >
> > >
> >
>

Reply via email to