ユーザー定義関数の作成

完了

ユーザー定義関数 (UDF) は、Azure Cosmos DB for NoSQL のクエリ言語の文法を拡張して、カスタム ビジネス ロジックを実装するために使われます。 UDF を呼び出すことができるのは、SQL クエリ言語を強化して拡張するクエリ内からのみです。

注意

UDF はコンテキスト オブジェクトにアクセスできません。また、コンピューティング専用コードとして使用することを意図しています

nameprice プロパティを持つ製品の JSON ドキュメントの例を次に示します。

{
  "name": "Black Bib Shorts (Small)",
  "price": 80.00
}

このような多くの項目を含むコンテナーからデータを取得する単純な SQL クエリは、両方のフィールドを含むように構築されます。

SELECT 
    p.name,
    p.price
FROM
    products p

UDF は、単純なビジネス ロジックをクエリに挿入できる小さな領域を提供することで、SQL クエリ言語を拡張します。 この例を見て、事業税を適用するユーザー定義関数を作成しましょう。 このシナリオの例では、15% の税金を適用し、3 つ目の priceWithTax プロパティを含む理想的な結果セットを得る必要があります。

[
  {
    "name": "Black Bib Shorts (Small)",
    "price": 80.00,
    "priceWithTax": 92.00
  }
]

ユーザー定義関数は、1 つ以上のスカラー入力を受け取り、出力としてスカラー値を返す JavaScript 関数として定義されます。

function name(input) {
    return output;
}

この例の関数では、スカラー入力は数値と見なされ、1.15 が乗算されて、15% の税金が追加されます。

function addTax(preTax) {
    return preTax * 1.15;
}

更新されたクエリには、入力パラメーターとして udf.addTax() フィールドを渡し、そのフィールドの出力を priceWithTax という名前にエイリアス化する udf.addTax() 構文を使用して、udf 関数を参照する 3 つ目の投影フィールドが含まれています。

SELECT 
    p.name,
    p.price,
    udf.addTax(p.price) AS priceWithTax
FROM
    products p