首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用toscalar -只返回最后匹配记录的Kusto子查询选择

使用toscalar -只返回最后匹配记录的Kusto子查询选择
EN

Stack Overflow用户
提问于 2019-08-26 07:57:54
回答 1查看 3.4K关注 0票数 0

我指的是sqlcheatsheet -嵌套查询

查询1:

代码语言:javascript
运行
复制
traces
    | where customDimensions.Domain == "someDomain"
    | where message contains "some-text" 
    | project itemId=substring(itemId,indexof(itemId,"-"),strlen(itemId))

结果:

itemId

-C 580-11e9-888A-8776d3f65945 -C 580-11e9-888A-8776d3f65945 -c 580-11e9-9b01-c3be0f4a2bf2

查询2:

代码语言:javascript
运行
复制
traces
    | where customDimensions.Domain == "someDomain"
    | where itemId has toscalar(
    traces
        | where customDimensions.Domain == "someDomain"
        | where message contains "some-text"  
        | project itemId=substring(itemId,indexof(itemId,"-"),strlen(itemId)))

第二个查询的结果返回只匹配子查询的最后一个记录的记录。

ie:) >-c 580-11e9-9b01-c3be0f4a2bf2

问题:

如何获得与所有三项匹配的整个结果集。

我的要求是为特定请求获取完整的日志序列。

为了获得下面的输入,我可以获取一个日志,从中可以找到ItemId

itemId看起来像"b5066283-c7ea-11e9-9e9b-2ff40863cba4"。与此请求相关的所有日志的其余部分必须具有"-c7ea-11e9-9e9b-2ff40863cba4"这个值。只有第一部分才会像b5066284b5066285b5066286那样递增。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-26 15:23:42

顾名思义,toscalar()返回一个标量值。

给定带有N列和M行的表格参数,它将返回第1列和第1行中的值。

例如:下面将返回一个值- 1

代码语言:javascript
运行
复制
let T = datatable(a:int, b:int, c:int)
[
    1,2,3,
    4,5,6,
    7,8,9,
]
;
print toscalar(T)

如果我正确理解第二个查询的意图,您应该能够通过使用has_any实现您的需求。

例如

代码语言:javascript
运行
复制
let T = datatable(item_id:string)
[
    "c580-11e9-888a-8776d3f65945",
    "c580-11e9-888a-8776d3f65945",
    "c580-11e9-9b01-c3be0f4a2bf2",
]
;
T
| where item_id has_any (
    (
        T
        | parse item_id  with * "-" item_id
    )
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57653898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档