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

SELECT、INSERTおよびUPDATE文で使用するカスタム関数を、Javaやその他のプログラミング言語を使用して作成します。

SELECT、INSERTおよびUPDATE文で使用するカスタム関数を、Javaやその他のプログラミング言語を使用して作成します。関数は、それが定義されているキースペース内でのみ使用できます。

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

言語の追加

DataStax Enterprise 5.0以降では、デフォルトでJavaおよびJavaScriptで作成された関数をサポートしています。PythonRubyScalaなど、他のスクリプト言語のサポートを追加するには、JARをclasspathに追加します。JARファイルを次の場所にインストールします。
  • パッケージおよびInstaller-Servicesのインストール: /usr/share/dse/cassandra/lib/jsr223/language/jar-name.jar
  • tarボールおよびInstaller-No Servicesのインストール: installation_location/jsr223/language/jar-name.jar
注: 関数を作成するときは、LANGUAGEをjrubyjpython、またはscalaと定義します。

始める前に

デフォルトでは、ユーザー定義関数を追加する機能は無効になっています。有効にするには、次の設定を 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()));$$;