次の方法で共有


assert()

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

条件をチェックします。 条件が false の場合、エラー メッセージが出力され、クエリは失敗します。

Note

assert関数は、定数折りたたみや述語の短絡などの最適化が適用される前に、クエリ分析フェーズ中に評価されます。

Note

assertに指定されたパラメーターは、クエリ分析フェーズ中に定数に評価する必要があります。 つまり、定数のみを参照する他の式から構築でき、行コンテキストにバインドすることはできません。

構文

assert(condition,message)

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
condition bool ✔️ 評価する条件式です。 クエリ分析フェーズでは、条件を定数に評価する必要があります。
message string ✔️ アサーションが falseに評価される場合に使用されるメッセージ。

返品

条件がtrueされている場合は、trueを返します。 条件が falseに評価されると、セマンティック エラーが発生します。

次のクエリを使用すると、入力文字列の長さをチェックする checkLength() 関数が定義され、assert を使用して入力長パラメーターを検証します (これが 0 より大きいことを確認します)。

let checkLength = (len:long, s:string)
{
    assert(len > 0, "Length must be greater than zero") and
    strlen(s) > len
};
datatable(input:string)
[
    '123',
    '4567'
]
| where checkLength(len=long(-1), input)

このクエリを実行すると、エラー assert() has failed with message: 'Length must be greater than zero' が生成されます。

有効な len 入力で実行する例:

let checkLength = (len:long, s:string)
{
    assert(len > 0, "Length must be greater than zero") and strlen(s) > len
};
datatable(input:string)
[
    '123',
    '4567'
]
| where checkLength(len=3, input)

出力

input
4567

次のクエリは常に失敗し、bfalseされたときにwhere b演算子がデータを返さない場合でも、assert関数が評価されることを示します。

let b=false;
print x="Hello"
| where b
| where assert(b, "Assertion failed")