Kusto extractjson 无法使用电子邮件地址

Kusto extractjson not working with email address

我正在尝试使用 extractjson() 方法,该方法在源数据中包含电子邮件地址(特别是 @ 符号)。

let T = datatable(MyString:string)
[
    '{"user@domain.com": {"value":10}, "userdomain.com": { "value": 5}}'
];
T
| project extractjson('$.["user@domain.com"].value', MyString)

这会导致 returned 为 null,将 JSONPath 更改为“$.["userdomain.com"].value' return 会得到正确的结果。

Results

我知道@符号在过滤器表达式中用作当前节点,与 KQL 一起使用时是否需要转义?

作为旁注,我 运行 使用节点 'jsonpath' 包进行了相同的测试,并且按预期工作。

const jp = require('jsonpath');
const data = {"user@domain.com": {"value":10}, "name2": { "value": 5}};

console.log(jp.query(data, '$["user@domain.com"].score'));

您可以使用 parse_json() 函数代替,当您 没有 时使用 extract_json():

print MyString = '{"user@domain.com": {"value":10}, "userdomain.com": { "value": 5}}'
| project parse_json(MyString)["user@domain.com"].value
MyString_user@domain.com_value
10

来自文档:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/extractjsonfunction