我在配置单元中有一个函数str_to_map(),我需要将其转换为Big Query。因为我们在BigQuery中没有map,所以我想找到另一种方法来拥有map格式,然后使用键名称来提取键值。
Example :
Select str_to_map('cars:0,kids:143,cats:1,lost:0,win:1,chances:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0,missed:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0',',',':')
如果我把键称为‘Cars’,我得到的值是‘0’。如果我把这个键叫做‘机会’,我应该得到‘0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0’
对于我来说,有一个像‘map’类型(key-value)这样的类型是必要的。
谢谢你,😀
2条答案
按热度按时间qyuhtwio1#
Google在BigQuery-utils中为BigQuery提供了一些有用的UDF。
不要重新发明轮子
所以,我带来了两个UDF来回答这个问题。
1.GET_VALUE(k字符串,arr any类型)
给定[{‘key’:‘a’,‘Value’:‘aaa’}形式的键和键值Map列表,返回标量类型值。
2.cw_map_parse(m字符串,pd字符串,kvd字符串)
要进行Map转换的字符串。
有了这些,您可以编写如下查询:
但由于以下要求,需要对CW_MAP_PARSE实现进行一点定制。
如果我把键称为‘Cars’,我得到的值是‘0’。如果我把这个键叫做‘机会’,我应该得到‘0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0’
下面是一个带有定制UDF函数的查询。
str_to_map()
是cw_map_parse()
的定制版本。yeotifhr2#
针对该特定情况的另一个超级简单的选择
带输出