我正试图在雪花中将十六进制FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF转换为十进制。预期输出为340282366920938463463374607431768211455。(它包含39位数字)当我尝试像下面这样使用雪花java函数时,输出为指数格式。问题是雪花号数据类型支持38位。
create or replace function js_hextoint (s string)
returns double language JAVASCRIPT
as
'if (S !== null)
{
output = parseInt(S, 16);
}
我使用Java雪花JDBC客户机(3.13.10)和jooq创建Javascript UDF。通过jooq构造并输入到JDBC客户机的查询字符串包括完整的JS函数体。
例如,这是在执行查询之前附加的调试器。查询内容:
CREATE OR REPLACE FUNCTION "DB_EXAMPLE"."SCHEMA_EXAMPLE"."MATCH_SCORE"(sources varchar,basescore double precision) RETURNS double precision LANGUAGE javascript AS
$$
使用databricks spark,能够使用connector(spark-snowflake_2.11-2.3.0.jar,spark雪花-JDBC2.8.1.jar将数据写入雪花中,而不是使用JDBC。但是如果没有databricks,当我试图在安装了火花的本地机器上应用相同的代码时,我无法使用火花-雪花连接器写入雪花。我面临的错误是classNotFoundExceptoion for snowflake.DefaultSource。但是能够使用JDBC连接从本地安装spark的本地机器写入雪花。
在postgres中有inm雪花和postgres两种格式,数值列在雪花中被定义为数字(20,6),它也被定义为数字(20,6),但是当我执行该列的和时,得到的值如下:
0.00123 in postgres and
0.000124 in snowflake
现在,我再次跳进雪花,将列的定义改为(20,5),然后,我得到了与postgres相同的结果,即0.00123
有人能解释一下雪花这种奇怪的行为吗?
提前谢谢