半结构化数据的雪花条件类型
Snowflake condition type on semi-structured data
在 Snowflake 中,我有一个包含半结构化数据的列,该数据应该包含数字,但就半结构化数据性质而言,这并不严格。我想检查数据类型并在可能的情况下转换为浮点数。类似的东西:
SELECT IFF(TYPEOF(column_name::data_name) is NUMBER, column_name::data_name::FLOAT, null)
FROM some_table
我怎样才能让这个查询起作用?
TRY_TO_DOUBLE 是您正在寻找的工具,如果您希望它是浮点数的话。否则如果只有 Integer TRY_TO_NUMBER
SELECT try_to_double(column_name::data_name::TEXT)
FROM some_table
这里的数据库不喜欢 VARAINT 类型的输出,这是从 VARAINT 中选择一个值给你的。解决方法是先将其转换为文本:
SELECT
parse_json('{"data_name":3.14, "it_is_a_number":1234}') as column_name
,try_to_double(column_name:data_name::text) as dub
,try_to_number(column_name:it_is_a_number::text) as int
;
COLUMN_NAME
DUB
INT
{ "data_name": 3.14, "it_is_a_number": 1234 }
3.14
1,234
在 Snowflake 中,我有一个包含半结构化数据的列,该数据应该包含数字,但就半结构化数据性质而言,这并不严格。我想检查数据类型并在可能的情况下转换为浮点数。类似的东西:
SELECT IFF(TYPEOF(column_name::data_name) is NUMBER, column_name::data_name::FLOAT, null)
FROM some_table
我怎样才能让这个查询起作用?
TRY_TO_DOUBLE 是您正在寻找的工具,如果您希望它是浮点数的话。否则如果只有 Integer TRY_TO_NUMBER
SELECT try_to_double(column_name::data_name::TEXT)
FROM some_table
这里的数据库不喜欢 VARAINT 类型的输出,这是从 VARAINT 中选择一个值给你的。解决方法是先将其转换为文本:
SELECT
parse_json('{"data_name":3.14, "it_is_a_number":1234}') as column_name
,try_to_double(column_name:data_name::text) as dub
,try_to_number(column_name:it_is_a_number::text) as int
;
COLUMN_NAME | DUB | INT |
---|---|---|
{ "data_name": 3.14, "it_is_a_number": 1234 } | 3.14 | 1,234 |