在任何地方都找不到。我有一个MAP类型的列,该列可能有也可能没有值。插入NULL
会引发错误。插入map()
会引发错误,因为它会插入一个空的map<string, string>
,而我需要一个empty<int, int>
。如何创建类型为<int, int>
答案 0 :(得分:0)
尝试如下创建空地图:
select map(cast(null as int), cast(null as int))
答案 1 :(得分:0)
尝试如下创建空的map<int, int>
:
> create temporary function map_remove_keys as 'brickhouse.udf.collect.MapRemoveKeysUDF';
> select map_remove_keys(map(0, 0), array(0));
+------+
| _c0 |
+------+
| {} |
+------+
或使用UDAF(注意:这是一个聚合函数):
> create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';
> select collect(cast(null as int), cast(null as int));
+------+
| _c0 |
+------+
| {} |
+------+
作为比较:
> select map(cast(null as int), cast(null as int));
+--------------+
| _c0 |
+--------------+
| {null:null} |
+--------------+