[ 
https://issues.apache.org/jira/browse/FLINK-32261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741199#comment-17741199
 ] 

Sergey Nuyanzin commented on FLINK-32261:
-----------------------------------------

Thanks for the question.

Let's not look at spark only

Based on some research and besides Spark
there is {{map_union}} supporting arbitrary number of args for MaxCompute[1]

{{map_concat}} supporting arbitrary number of args for  Trino [2], Presto[3]
{{map_union}} only for 2 args is supported by ksqlDB[4]

Based on this yep, probably it would make sense to support varargs since there 
are several vendors already supporting it.

WDYT [~hanyuzheng]?

[1] https://www.alibabacloud.com/help/en/maxcompute/user-guide/map-union
[2] https://trino.io/docs/current/functions/map.html 
[3] https://prestodb.io/docs/current/functions/aggregate.html
[4] 
https://docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/scalar-functions/#map_union


> Add MAP_UNION support in SQL & Table API
> ----------------------------------------
>
>                 Key: FLINK-32261
>                 URL: https://issues.apache.org/jira/browse/FLINK-32261
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table SQL / Planner
>    Affects Versions: 1.18.0
>            Reporter: Bonnie Varghese
>            Assignee: Hanyu Zheng
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.18.0
>
>
> Description:
> This is an implementation of MAP_UNION 
> Returns a map created by merging two maps, 'map1' and 'map2'. This two maps 
> should have same data structure. If there are overlapping keys, the value 
> from 'map2' will overwrite the value from 'map1'. If any of maps are null, 
> return null.
> Syntax:
> {code:java}
> MAP_UNION(map1, map2){code}
> Arguments:
>  * map1:The first map to be merged.
>  * map2:The second map to be merged.
> Returns: A new map that contains the combined key-value pairs from {{map1}} 
> and map{{{}2{}}}. If there are any overlapping keys, the value from {{map2}} 
> will overwrite the value from {{{}map1{}}}.
> Examples:
>  Merging maps with unique keys:
>  
> {code:java}
> map1 = ['a': 1, 'b': 2] map2 = ['c': 3, 'd': 4] 
> map_union[map1, map2]  
> Output: ['a': 1, 'b': 2, 'c': 3, 'd': 4]{code}
>  Merging maps with overlapping keys:
>  
>  
> {code:java}
> map1 = ['a': 1, 'b': 2] map2 = ['b': 3, 'c': 4] 
> map_union[map1, map2] 
> Output: ['a': 1, 'b': 3, 'c': 4]{code}
> See also:
> prestodb: [https://prestodb.io/docs/current/functions/aggregate.html]
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to