Snowflake cloud data platform 雪花-将字符串转换为秒
我得到了以下格式的几个字段的API响应,我想在加载到snowflake目标表时将它们转换为秒数。是否有可能使用雪花内置功能进行转换?否则,请将源数据转换为所需格式Snowflake cloud data platform 雪花-将字符串转换为秒,snowflake-cloud-data-platform,datetime-conversion,Snowflake Cloud Data Platform,Datetime Conversion,我得到了以下格式的几个字段的API响应,我想在加载到snowflake目标表时将它们转换为秒数。是否有可能使用雪花内置功能进行转换?否则,请将源数据转换为所需格式 API response "field1":"13 Days 1 Hour 51 Minutes", "field2":"11 Hours 24 Minutes" I want above response to be converted into
API response
"field1":"13 Days 1 Hour 51 Minutes",
"field2":"11 Hours 24 Minutes"
I want above response to be converted into seconds
field1 to --> '1129860'
field2 to --> '41040'
谢谢这不是一个有效的代码,而是一个想法:
11小时24分钟
,
->11小时24分钟
A我认为UDF最适合这一点。它将更具可读性。您可能可以在SQLUDF中实现这一点,但对于这一点,JavaScript也可以很好地工作
create or replace function TIME_STRING_TO_SECONDS(TIME_STRING string)
returns float
language javascript
as
$$
var s = TIME_STRING.split(" ");
var seconds = 0;
for (var i = 1; i <= s.length; i = i + 2) {
seconds += getSeconds(s[i], s[i-1]);
}
return seconds;
function getSeconds(unit, sec) {
switch (unit.toUpperCase()) {
case 'DAYS':
return 86400 * sec;
case "DAY":
return 86400 * sec;
case 'HOURS':
return 3600 * sec;
case "HOUR":
return 3600 * sec;
case "MINUTES":
return 60 * sec;
case "MINUTE":
return 60 * sec;
default:
return sec;
}
}
$$;
您的格式似乎表明API正在返回JSON。只需使用标准的雪花冒号和点符号解析JSON,并将每个部分传递到UDF中
请记住,JavaScript没有整数类型,因此如果需要将类型作为整数,可以在SQL中显式执行:
select TIME_STRING_TO_SECONDS('11 Hours 24 Minutes')::int;
谢谢@Lukasz。。这需要添加逗号,然后转换为秒。。然而,格雷格的UDF工作得很好。。感谢您的时间和回复。
select TIME_STRING_TO_SECONDS('13 Days 1 Hour 51 Minutes');
select TIME_STRING_TO_SECONDS('11 Hours 24 Minutes');
select TIME_STRING_TO_SECONDS('11 Hours 24 Minutes')::int;