ユーザー定義関数(UDF)の作成

SELECT、INSERT、およびUPDATE文で使用するカスタム関数を、JavaまたはJavaScriptを使用して作成します。

SELECT、INSERT、およびUPDATE文で使用したり、ユーザー定義集計(UDA)の構成要素として使用したりするために、JavaまたはJavaScriptを使用してカスタム関数を記述します。関数は、それが定義されているキースペース内でのみ使用できます。高速パフォーマンスを保持するには、短い計算用にユーザー定義関数を使用し、Javascript UDFではなくJava UDFを作成します。

ヒント: キースペースの定義済みUDFのCQLを表示するにはOpsCenterを使用します。

クエリー結果の一部としてテーブルに格納されているデータに対して実行される関数を定義できます。この関数はSELECT文で使用する前に作成する必要があります。関数は、テーブルの各行に対して実行されます。

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

始める前に

デフォルトでは、ユーザー定義関数を追加する機能は無効になっています。有効にするには、次の設定を cassandra.yamlファイルに追加します。

手順

  • 戻り値のデータ型、言語、および実行する関数の実際のコードを指定して関数を作成します。次の関数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 REPLACEIF 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()));$$;