Hi Rex,

as far as I know, the IN operator only works on tables or a list of literals where the latter one is just a shortcut for multiple OR operations. I would just go with a UDF for this case. In SQL you could do an UNNEST to convert the array into a table and then use the IN operator. But I'm not sure if this is a better solution.

Regards,
Timo



On 04.11.20 01:13, Rex Fenley wrote:
None of the following appear to work either. Flink 1.11.2, Scala 2.12.

table.filter("apple".in(List("apple")))
[info]   org.apache.flink.table.api.ValidationException: IN operator on incompatible types: String and ObjectArrayTypeInfo<String>.

table.filter("apple".in(java.util.Arrays.asList("apple")))
[info]   org.apache.flink.table.api.ValidationException: IN operator on incompatible types: String and ObjectArrayTypeInfo<String>.

table.filter(
"apple".in(newju.ArrayList[String](java.util.Arrays.asList("apple")))
)
[info]   org.apache.flink.table.api.ValidationException: IN operator on incompatible types: String and ObjectArrayTypeInfo<String>.


On Tue, Nov 3, 2020 at 2:32 PM Rex Fenley <r...@remind101.com <mailto:r...@remind101.com>> wrote:

    Using a custom serializer to make sure I'm using a List<String> does
    not help.

    [info]   org.apache.flink.table.api.ValidationException: IN operator
    on incompatible types: String and List<String>.

    On Tue, Nov 3, 2020 at 12:44 PM Rex Fenley <r...@remind101.com
    <mailto:r...@remind101.com>> wrote:

        For clarification, I'm using Pojo and operating on a column of
        this type
        publicjava.util.List<String> fruits

        adding the following annotation does not help
        @DataTypeHint("ARRAY<STRING NOT NULL>")

        On Mon, Nov 2, 2020 at 7:02 AM Aljoscha Krettek
        <aljos...@apache.org <mailto:aljos...@apache.org>> wrote:

            I believe this is happening because the type system does not
            recognize
            that list of Strings as anything special but treats it as a
            black-box type.

            @Timo: Would this work with the new type system?

            Best,
            Aljoscha

            On 02.11.20 06:47, Rex Fenley wrote:
             > Hello,
             >
             > I'm trying to filter the rows of a table by whether or
            not a value exists
             > in an array column of a table.
             > Simple example:
             > table.where("apple".in($"fruits"))
             >
             > In this example, each row has a "fruits" Array<String>
            column that could
             > have 1 or many fruit strings which may or may not be "apple".
             >
             > However, I keep receiving the following error when I do
            something similar
             > to the example above:
             > "IN operator on incompatible types: String and
            GenericType<java.util.List>"
             >
             > Is there any way to accomplish this?
             >
             > Thanks!
             >



--
        Rex Fenley|Software Engineer - Mobile and Backend


        Remind.com <https://www.remind.com/>| BLOG
        <http://blog.remind.com/> | FOLLOW US
        <https://twitter.com/remindhq> | LIKE US
        <https://www.facebook.com/remindhq>



--
    Rex Fenley|Software Engineer - Mobile and Backend


    Remind.com <https://www.remind.com/>| BLOG
    <http://blog.remind.com/> | FOLLOW US
    <https://twitter.com/remindhq> | LIKE US
    <https://www.facebook.com/remindhq>



--

Rex Fenley|Software Engineer - Mobile and Backend


Remind.com <https://www.remind.com/>| BLOG <http://blog.remind.com/> | FOLLOW US <https://twitter.com/remindhq> | LIKE US <https://www.facebook.com/remindhq>


Reply via email to