我需要使用UDF在cassandra中使用nvl(oracle替换空值函数)

我需要使用UDF在cassandra中使用nvl(oracle替换空值函数),cassandra,cassandra-3.0,spring-data-cassandra,Cassandra,Cassandra 3.0,Spring Data Cassandra,我需要使用UDF在cassandra中使用nvl(oracle替换空值函数)。cassandra UDF的新增功能,因此任何人都可以在cassandra中共享nvl的UDF以替换表中的空值。您可以使用类似于以下内容的内容: CREATE OR REPLACE FUNCTION custom_nvl ( val1 double, default_val double ) CALLED ON NULL INPUT RETURNS double LANGUAGE java AS 'return

我需要使用UDF在cassandra中使用nvl(oracle替换空值函数)。cassandra UDF的新增功能,因此任何人都可以在cassandra中共享nvl的UDF以替换表中的空值。

您可以使用类似于以下内容的内容:

CREATE OR REPLACE FUNCTION custom_nvl ( val1 double, default_val double ) 
CALLED ON NULL INPUT 
RETURNS double LANGUAGE java AS 
'return (val1 == null)
            ? default_val
            : val1;';
默认值的文字仅在cassandra 3.8及以上版本中可用

如果您需要返回常量值,并且正在使用cassandra版本低于3.8,请使用以下命令:

CREATE OR REPLACE FUNCTION custom_udf ( val1 double) 
CALLED ON NULL INPUT 
RETURNS double LANGUAGE java AS 
'return (val1 == null)
            ? 2.0
            : val1;';
要使用
UDF
您应该在
cassandra.yaml
中将
启用用户定义的功能设置为
true

虽然
UDF
只能在
SELECT
语句中使用

注意:cassandra 3.8支持UDF中的文字值


您使用的是哪个版本的cassandra。。。请仅将相关版本保留在tagsi中。我使用的是cql_版本3.4.0和release_版本3.0.9Hi,感谢您的回复。我已经创建了这个UDF,现在就开始工作。在执行下面的查询时,“从cvm.customer\u ca\u details中选择ca\u available\u limit,cvm.custom\u nvl(cvm.customer\u ca\u details.ca\u average\u Halfyear\u balance,2)”;我得到“com.datastax.driver.core.exceptions.SyntaxError:第1:95行输入“2”时没有可行的替代方案(…cvm.custom\u nvl(cvm.customer\u details.ca\u\u-average\u Halfyear\u balance,[2]…)“此错误。cassandra 3.8支持cassandra中的文字值…如果找到空值并且使用的版本低于3.8Ya,则需要在UDF中对返回值进行硬编码。在硬编码返回值后,其工作正常。。谢谢,走吧!!!