次の方法で共有


CosmosScripts.CreateUserDefinedFunctionAsync メソッド

定義

Azure Cosmos DB サービスで非同期操作としてユーザー定義関数を作成します。

public abstract System.Threading.Tasks.Task<Azure.Response<Azure.Cosmos.Scripts.UserDefinedFunctionProperties>> CreateUserDefinedFunctionAsync (Azure.Cosmos.Scripts.UserDefinedFunctionProperties userDefinedFunctionProperties, Azure.Cosmos.RequestOptions requestOptions = default, System.Threading.CancellationToken cancellationToken = default);
abstract member CreateUserDefinedFunctionAsync : Azure.Cosmos.Scripts.UserDefinedFunctionProperties * Azure.Cosmos.RequestOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Azure.Response<Azure.Cosmos.Scripts.UserDefinedFunctionProperties>>
Public MustOverride Function CreateUserDefinedFunctionAsync (userDefinedFunctionProperties As UserDefinedFunctionProperties, Optional requestOptions As RequestOptions = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of Response(Of UserDefinedFunctionProperties))

パラメーター

userDefinedFunctionProperties
UserDefinedFunctionProperties

UserDefinedFunctionProperties オブジェクト。

requestOptions
RequestOptions

(省略可能)ユーザー定義関数要求のオプション RequestOptions

cancellationToken
CancellationToken

(省略可能) CancellationToken 要求の取り消しを表します。

戻り値

非同期操作のサービス応答を表すタスク オブジェクト。

例外

が設定されていない場合 userDefinedFunctionProperties

非同期処理中に発生したエラーの統合を表します。 InnerExceptions 内を見て、実際の例外を見つけます

この例外により、さまざまな種類のエラーがカプセル化される可能性があります。 特定のエラーを特定するには、常に StatusCode プロパティを参照してください。 ユーザー定義関数を作成するときに取得できる一般的なコードは次のとおりです。

StatusCode例外の理由
400BadRequest - これは、指定された要求に問題が発生したことを意味します。 新しいユーザー定義関数に ID が指定されていないか、本文の形式が正しくない可能性があります。
403禁止 - 指定されたコレクションのユーザー定義関数のクォータに達しました。 このクォータを増やすには、サポートにお問い合わせください。
409競合 - 指定した ID と一致する ID が既に存在する を意味 UserDefinedFunctionProperties します。
413RequestEntityTooLarge - 作成しようとした本文が UserDefinedFunctionProperties 大きすぎます。

これにより、ユーザー定義関数が作成され、項目クエリで 関数が使用されます。

CosmosScripts scripts = this.container.Scripts;
await scripts.UserDefinedFunctions.CreateUserDefinedFunctionAsync(
    new UserDefinedFunctionProperties 
    { 
        Id = "calculateTax", 
        Body = @"function(amt) { return amt * 0.05; }" 
    });

QueryDefinition sqlQuery = new QueryDefinition(
    "SELECT VALUE udf.calculateTax(t.cost) FROM toDoActivity t where t.cost > @expensive and t.status = @status")
    .WithParameter("@expensive", 9000)
    .WithParameter("@status", "Done");

await foreach (double tax in this.container.Items.GetItemsQueryIterator<double>(
    sqlQueryDefinition: sqlQuery,
    partitionKey: "Done"))
{
    Console.WriteLine(tax);
}

適用対象