map_from_arrays和map_from_entries函数
目录
- map_from_arrays函数
- 示例
- map_from_entries函数
- 示例
map_from_arrays函数
MAP_FROM_ARRAYS函数用于从两个数组(一个作为键,一个作为值)创建一个Map。
语法:
MAP_FROM_ARRAYS(keys, values)
参数:
keys: 一个数组,包含Map的键。
values: 一个数组,包含Map的值。
要求:
两个数组必须具有相同的长度。
键数组不能包含null元素,且键必须是基本数据类型(不能是复杂类型如数组、映射、结构体)。
值数组可以包含null元素。
如果键重复,后面的键值对会覆盖前面的。
如果数组长度不一致,会抛出错误。
示例
SELECT MAP_FROM_ARRAYS(ARRAY('name', 'age', 'city'),ARRAY('Alice', 30, 'New York')
) AS profile;-- 结果: {"name":"Alice","age":30,"city":"New York"}SELECT user_id,MAP_FROM_ARRAYS(ARRAY('avg_session', 'purchase_count', 'last_active'),ARRAY(ROUND(avg_session_duration, 2),purchase_count,last_active_date)) AS user_features
FROM user_behavior;
map_from_entries函数
MAP_FROM_ENTRIES函数。该函数用于将一个包含键值对的结构体数组转换为一个Map对象。每个结构体通常包含两个字段:第一个字段作为键,第二个字段作为值。
语法:
MAP_FROM_ENTRIES(array_of_entries)
参数:
array_of_entries:一个数组,数组中的每个元素都是具有两个字段的结构体。第一个字段是键,第二个字段是值。
注意点:
键不能为NULL,且必须是基本数据类型(不能是复杂类型)。
值可以为NULL,且可以是任意类型。
如果存在重复的键,则后面的键值对会覆盖前面的(保留最后一个)。
示例
SELECT MAP_FROM_ENTRIES(ARRAY(STRUCT('name', 'Alice'),STRUCT('age', 30),STRUCT('city', 'New York'))
) AS profile;-- 结果: {"name":"Alice","age":30,"city":"New York"}SELECT user_id,MAP_FROM_ENTRIES(ARRAY(STRUCT('avg_session', ROUND(avg_session_duration, 2)),STRUCT('purchase_count', purchase_count),STRUCT('last_active', last_active_date))) AS user_features
FROM user_behavior;