Hi Andreas,

First of all I would highly recommend converting a non-structured types
to structured types as soon as possible as it opens more possibilities
to optimize the plan.

Have you tried:

Table users =
batchTableEnvironment.fromDataSet(usersDataset).select("getField(f0,
userName) as userName", "f0")
Table other =
batchTableEnvironment.fromDataSet(otherDataset).select("getField(f0,
userName) as user", "f1")

Table result = other.join(users, "user = userName")

You could also check how the
org.apache.flink.formats.avro.AvroRowDeserializationSchema class is
implemented which internally converts an avro record to a structured Row.

Hope this helps.

Best,

Dawid

On 03/01/2020 23:16, Hailu, Andreas wrote:
>
> Hi folks,
>
>  
>
> I’m trying to join two Tables which are composed of complex types,
> Avro’s GenericRecord to be exact. I have to use a custom UDF to
> extract fields out of the record and I’m having some trouble on how to
> do joins on them as I need to call this UDF to read what I need.
> Example below:
>
>  
>
> batchTableEnvironment.registerFunction("getField", new
> GRFieldExtractor()); // GenericRecord field extractor
>
> Table users = batchTableEnvironment.fromDataSet(usersDataset); //
> Converting from some pre-existing DataSet
>
> Table otherDataset = batchTableEnvironment.fromDataSet(someOtherDataset);
>
> Table userNames = t.select("getField(f0, userName)"); // This is how
> the UDF is used, as GenericRecord is a complex type requiring you to
> invoke a get() method on the field you’re interested in. Here we get a
> get on field ‘userName’
>
>  
>
> I’d like to do something using the Table API similar to the query
> “SELECT * from otherDataset WHERE otherDataset.userName =
> users.userName”. How is this done?
>
>  
>
> Best,
>
> Andreas
>
>  
>
> *The Goldman Sachs Group, Inc. All rights reserved*.
>
> See http://www.gs.com/disclaimer/global_email for important risk
> disclosures, conflicts of interest and other terms and conditions
> relating to this e-mail and your reliance on information contained in
> it.  This message may contain confidential or privileged information. 
> If you are not the intended recipient, please advise us immediately
> and delete this message.  See http://www.gs.com/disclaimer/email for
> further information on confidentiality and the risks of non-secure
> electronic communication.  If you cannot access these links, please
> notify us by reply message and we will send the contents to you.
>
>  
>
>
> ------------------------------------------------------------------------
>
> Your Personal Data: We may collect and process information about you
> that may be subject to data protection laws. For more information
> about how we use and disclose your personal data, how we protect your
> information, our legal basis to use your information, your rights and
> who you can contact, please refer to: www.gs.com/privacy-notices
> <http://www.gs.com/privacy-notices>

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to