ユーザー定義関数(UDF)の作成
SELECT、INSERT、およびUPDATE文で使用するカスタム関数を、JavaまたはJavaScriptを使用して作成します。
SELECT、INSERT、およびUPDATE文で使用したり、ユーザー定義集計(UDA)の構成要素として使用したりするために、JavaまたはJavaScriptを使用してカスタム関数を記述します。関数は、それが定義されているキースペース内でのみ使用できます。高速パフォーマンスを保持するには、短い計算用にユーザー定義関数を使用し、Javascript UDFではなくJava UDFを作成します。
クエリー結果の一部としてテーブルに格納されているデータに対して実行される関数を定義できます。この関数はSELECT文で使用する前に作成する必要があります。関数は、テーブルの各行に対して実行されます。
cassandra.yaml
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra.yaml |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra.yaml |
始める前に
デフォルトでは、ユーザー定義関数を追加する機能は無効になっています。有効にするには、次の設定を cassandra.yamlファイルに追加します。
- Java:enable_user_defined_functionsを
true
に設定 - JavaScript(Javaに加えて):enable_scripted_user_defined_functionsを
true
に設定
手順
-
戻り値のデータ型、言語、および実行する関数の実際のコードを指定して関数を作成します。次の関数
fLog()
は、各入力の対数値を計算します。この関数は、組み込みのjava
関数で、非線形データの線形プロットの生成に使用されます。この例では、単純な数学関数によってユーザー定義関数の機能を示します。CREATE FUNCTION cycling.flog(target_name double) CALLED ON NULL INPUT RETURNS double LANGUAGE java AS $$return Double.valueOf(Math.log(input.doubleValue()));$$;
注:- target_name
- ターゲット・カラムからの入力がnullの場合のアクション:
CALLED ON NULL INPUT
によって、関数は呼び出されると常に実行されることが保証されます。RETURNS NULL ON NULL INPUT
によって、入力引数のいずれかがNULL
の場合、関数が常にNULL
を返すことが保証されます。
RETURNS
は、関数によって返される値のCQLデータ型を定義します。
-
上の例に示したように
OR REPLACE
を使用すると、ある関数を別の関数で置き換えることができます。キースペースに同じシグネチャーを持つ別の関数が存在しない場合に限り、必要に応じてIF NOT EXISTS
キーワードを使用して関数を作成することができます。OR REPLACE
とIF NOT EXISTS
は同じコマンドで使用できません。CREATE OR REPLACE FUNCTION cycling.flog(input double) CALLED ON NULL INPUT RETURNS double LANGUAGE java AS $$return Double.valueOf(Math.log(input.doubleValue()));$$;