我的字段值具有以下格式:
GPU#nDisplays:Intel(R) Iris(TM) Graphics 540#1 Microsoft Basic Render Driver#0
现在我想在'#'之后想要一个值的总和。例如,在这种情况下,我的总和将是1 + 0 = 1。
如何使用Redshift SQL查询获得该功能?
我尝试过这样的事情开头:
(regexp_count(REGEXP_SUBSTR (cpu_params,'GPU#n[^,]*'),'#[0-9]')
答案 0 :(得分:0)
您可以将Redshift python UDF用于此
重要 - 您需要:
revoke usage on language PLPYTHONU from PUBLIC;
grant usage on language PLPYTHONU to group udf_devs;
or
grant usage on language PLPYTHONU to user youruserid;
请原谅我的非pythonic python代码 - 我相信这可以改进。
只需将“yourstring”替换为测试字符串,然后在Redshift中运行以下命令。
create or replace function f_sum_after_hash (s varchar(max))
returns integer
stable
as $$
def f_sum_after_hash(input_string):
parts = input_string.split("#")
score = 0
for part in parts[1:]:
index=0
for c in part:
if c.isdigit():
index+=1
else:
break
if index >0:
score+=int(part[:index])
return score
return f_sum_after_hash(s)
$$ language plpythonu;
select f_sum_after_hash ('yourstring');