2017-08-17 3 views
0

J'ai besoin de nvl (la fonction remplacer les valeurs nulles) dans cassandra en utilisant UDF. Nouveau aux UDF cassandra, donc quelqu'un peut-il partager le UDF pour nvl dans cassandra pour remplacer les valeurs nulles dans les tables.J'ai besoin de nvl (l'oracle remplace la fonction des valeurs nulles) dans cassandra en utilisant UDF

+0

version de cassandra que vous utilisez ... ne garder que celui pertinent dans les balises –

+0

i J'utilise cql_version 3.4.0 et release_version 3.0.9 –

Répondre

1

Vous pouvez utiliser quelque chose de similaire à ci-dessous:

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;'; 

littérale pour default_val est seulement possible dans cassandra 3.8 et au-dessus.

Si vous devez retourner valeur constante et utilisez la version cassandra moins de 3,8 puis utiliser quelque chose comme:

CREATE OR REPLACE FUNCTION custom_udf (val1 double) 
CALLED ON NULL INPUT 
RETURNS double LANGUAGE java AS 
'return (val1 == null) 
      ? 2.0 
      : val1;'; 

Pour utiliser UDF vous devez définir enable_user_defined_functions à true dans cassandra.yaml.

Bien que UDF ne puisse être utilisé que dans les instructions SELECT.

Note: valeurs littérales UDF sont pris en charge de Kassandra 3,8 CASSANDRA-10783

UDF in Cassandra

More on UDF

+0

Salut, Merci pour votre réponse. J'ai créé cet UDF et je travaille dessus maintenant. lors de l'exécution de cette requête ci-dessous, "sélectionnez ca_available_limit, cvm.custom_nvl (cvm.customer_ca_details.ca_average_halfyearly_balance, 2) à partir de cvm.customer_ca_details;" Je reçois "com.datastax.driver.core.exceptions.SyntaxError: ligne 1:95 pas d'alternative viable à l'entrée '2' (... cvm.custom_nvl (cvm.customer_ca_details.ca_average_halfyearly_balance, [2] ...) "cette erreur –

+0

Valeurs littérales dans Cassandra sont pris en charge de Cassandra 3.8 .... vous devez coder la valeur de retour dans UDF si la valeur NULL est trouvé et utilisez la version moins de 3,8 –

+0

Ya, son fonctionnement bien, après codé en dur le retour valeur .. Merci, Way to go !!! –