シナリオ1:JSONオブジェクトの展開と抽出
parse-json、json_extract_scalar、またはjson_extract 関数を使用して、ログからJSONオブジェクトを展開および抽出します。
例1:JSONの第1レベルの展開
この例では、data フィールドの第1レベルのキーと値のペアを展開します。
生ログ
data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}SPL ステートメント
* | parse-json data出力ログ
data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}} k1: v1 k2: {"k3": "v3", "k4": "v4"}
例2:JSONオブジェクトの完全な展開
この例では、data フィールドのすべてのキーと値のペアを完全に展開します。
生ログ
data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}SPL ステートメント
* | parse-json data | extend k3 = json_extract_scalar(k2, '$.k3'), k4 = json_extract_scalar(k2, '$.k4') | project k1, k3, k4,data出力ログ
data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}} k1: v1 k3: v3 k4: v4
例3:キーを指定した値の抽出
生ログ
data: { "foo": { "bar": "baz" }, "peoples": [{ "name": "xh", "sex": "girl" }, { "name": "xm", "sex": "boy" }] }SPL ステートメント
* | extend name = json_extract_scalar(data, '$.peoples[0].name'), bar = json_extract_scalar(data, '$.foo.bar'), foo_obj = json_extract(data, '$.foo')出力ログ
data: {"foo": {"bar": "baz"}, "peoples": [{"name": "xh", "sex": "girl"}, {"name": "xm", "sex": "boy"}]} name: xh bar: baz foo_obj: {"bar": "baz"}
シナリオ2:JSONオブジェクトからの値の抽出
json_extract_scalar 関数を使用して、ログ内のJSONオブジェクトから値を抽出します。
例1:JSONオブジェクトに対象フィールドが含まれる場合
この例では、JSONオブジェクトから k1 キーの値を抽出し、key1 という名前の新しいフィールドを作成します。
生ログ
data: {"k1": "v1", "k2": "v2"}SPL ステートメント
* | extend key1 = json_extract_scalar(data, '$.k1')出力ログ
data: {"k1": "v1", "k2": "v2"} key1: v1
例2:JSONオブジェクトに対象フィールドが含まれない場合
この例では、JSONオブジェクトから値を抽出する方法を示します。指定されたキーが存在しない場合、デフォルト値を持つ新しいフィールド key3 が作成されます。
生ログ
data: {"k1": "v1", "k2": "v2"}SPL ステートメント
* | extend key3 = coalesce(json_extract_scalar(data, '$.k3'), 'default')出力ログ
data: {"k1": "v1", "k2": "v2"} key3: default
シナリオ3:JSONオブジェクト内の値の更新
replace 関数を使用して、JSONオブジェクトの値を更新します。
この例では、JSONオブジェクト内の k1 キーの値を変更します。
生ログ
data: {"k1": "v1", "k2": "v2"}SPL ステートメント
* | extend data = replace(data, '"k1":"v1"', '"k1":"new_k1"')出力ログ
data: {"k1": "new_k1", "k2": "v2"}
シナリオ4:値のJSONオブジェクトとしての解析
json_parse 関数を使用して、文字列をJSONオブジェクトとして解析します。
この例では、data フィールドの文字列をJSONオブジェクトに変換します。
生ログ
data: "pre{ \"k1\": \"v1\", \"k2\": \"v2\"}"SPL ステートメント
* | extend json_object = replace(data, 'pre', '') | extend json_object=json_parse(json_object)出力ログ
data: pre{ "k1": "v1", "k2": "v2"} json_object: {"k1": "v1", "k2": "v2"}