ストアド関数を作成し、これは、所定の名前を有する再利用可能な KQL クエリです。 関数*定義は、データベース* メタデータ*とともに永続化されます。
関数は他の関数を呼び出すことができます (再帰性はサポートされていません)。 さらに、let ステートメントは "関数本体" のパーツとして許可されます。
letステートメントをご覧ください。
パラメーターの型およびCSLステートメントのルールは、letステートメントの場合と同じです。
アクセス許可
このコマンドを実行するには、少なくとも Database User アクセス許可が必要です。
構文
.create
function [ ifnotexists ] [ with(propertyName=propertyValue [, ...]) ] ] functionName(parameters){body}
構文規則について詳しく知る。
パラメーター
| 件名 | タイプ | Required | 説明 |
|---|---|---|---|
ifnotexists |
string |
指定した場合、関数は、関数がまだ存在しない場合にのみ作成されます。 | |
| functionName | string |
✔️ | 作成または変更する関数の名前。 |
| propertyName, propertyValue | string |
キーと値のプロパティのペアのコンマ区切りのリスト。 サポートされるプロパティを参照してください。 | |
| parameters | string |
関数で必要なパラメーターのコンマ区切りのリスト。 各パラメーターの形式は、 ParameterName:ParameterDataType にする必要があります。 |
|
| body | string |
✔️ | ユーザー定義の関数式。 |
サポートされるプロパティ
| 件名 | タイプ | 説明 |
|---|---|---|
docstring |
string |
UI 用の関数の説明。 |
folder |
string |
UI 関数の分類に使用されるフォルダーの名前。 |
view |
bool |
保存されるビューとしてこの関数を指定します。 保存されたビューは、 search および union * シナリオに参加できます。 詳細については、「 Views」を参照してください。 |
skipvalidation |
bool |
関数に対して検証ロジックを実行するかどうかを決定し、関数が有効でない場合はプロセスを失敗します。 既定値は、false です。 |
ヒント
関数にクロス クラスター クエリが含まれる場合Kusto 照会言語 スクリプトを使用して関数を再作成する予定がある場合skipvalidationを true に設定します。
返品
| 出力パラメーター | タイプ | 説明 |
|---|---|---|
| 件名 | string |
関数の名前です。 |
| パラメーター | string |
関数に必要なパラメーター。 |
| 本文 | string |
(0 個以上) 関数の呼び出し時に評価される有効な CSL 式が後に続く let ステートメント。 |
| フォルダー | string |
UI 関数の分類に使用されるフォルダー。 このパラメーターは、関数*の呼び出し*方法を変更しません。 |
| DocString | string |
UI 用の関数の説明。 |
Note
- 関数が既に存在する場合:
-
ifnotexistsフラグ*を指定した場合、コマンドを無視します (変更は適用されない)。 -
ifnotexistsフラグ*を指定していない場合、エラー*を返します。 - 既存の関数*の変更については、
.alter functionを参照してください。
-
- すべてのデータ型*が
letステートメント*にサポート*されているわけではありません。 サポーされる型*は、boolean、string、long、datetime*、timespan、double、およびdynamicです。 -
skipvalidationを使用すると、関数のセマンティック評価がスキップされます。 これは、関数が正しくない順序で作成され、F2 を使用する F1 が先に作成された場合に役立ちます。
例
単純関数
次の例では、説明 (MyFunction1)、docstringという名前のフォルダーを含むDemo関数を作成し、関数を定義します。
.create function
with (docstring = 'Simple demo function', folder='Demo')
MyFunction1()
{StormEvents | take 100}
| 件名 | パラメーター | 本文 | フォルダー | DocString |
|---|---|---|---|---|
| MyFunction1 | () | {StormEvents | take 100} | Demo | 単純なデモ関数* |
パラメーターを持つ関数
次の例では、MyFunction2という名前の description (docstring) フォルダーを使用して Demo 関数を作成し、Mytimestamp パラメーターを定義します。
.create function with (docstring = "Demo function with date parameter",folder = "Demo")
MyFunction2(Mytimestamp:datetime) {
StormEvents
| where EndTime <= Mytimestamp
}
| 件名 | パラメーター | 本文 | フォルダー | DocString |
|---|---|---|---|---|
| MyFunction2 | (Mytimestamp:datetime) | {StormEvents | where EndTime <= Mytimestamp} | Demo | date パラメーターを持つ Demo 関数 |
関連コンテンツ
- .create-or-alter 関数 を する