繁体   English   中英

如何使用 kusto 查询合并两个词典

[英]How To Merge two dictionaries using kusto query

我希望我能够正确地表达这个问题,因为我是 kusto 的新手。 基本上我正在尝试编写一个 kusto 查询,该查询返回满足某些要求的字典。 我有一个包含多个列(名称、外部、父级)的表,目标是返回一个字典,其中键:名称,值:父级。 但是,在某些情况下,“Parent”列为空白,如果为真,则值需要改为:value:External。 目前我有一个查询在不同的行中返回两个字典,但我想知道是否可以将它们全部放在一个字典中。 我希望我解释得很好,代码如下:

let Query1 = view () {
cluster('mycluster').database('my_database').Sizes
|distinct Name, Size, External
|where isempty( Size)| extend p = pack(Name, External) 
|summarize dict=make_bag(p)};
let Query2 = view (){
cluster('mycluster').database('my_database').Sizes
|distinct Name, Size, External
|where not(isempty( Size))| extend o = pack(Name, Parent) 
|summarize dict=make_bag(o)};
union withsource="TempTableName" Query1, Query2

代码返回:

临时表名 字典
查询1 {B0:标准,B12:标准 1,B13:标准 5
查询2 {B1:Basic0, B5: Basic09, B19: Basic12}

你可以使用bag_merge() function: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/bag-merge-function

print d1 = dynamic({"B0": "Standard", "B12": "Standard1", "B13": "Standard5"}),
      d2 = dynamic({"B1":"Basic0", "B5": "Basic09", "B19": "Basic12"})
| project d3 = bag_merge(d1, d2)
d3
{
“B0”:“标准”,
“B12”:“标准1”,
"B13": "标准5",
“B1”:“基本0”,
“B5”:“Basic09”,
“B19”:“基本12”
}

或者,您的查询:

let d1 = toscalar(
    cluster('mycluster').database('my_database').Sizes
    | distinct Name, Size, External
    | where isempty(Size)
    | extend p = pack(Name, External) 
    | summarize dict=make_bag(p)
);
let d2 = toscalar(
    cluster('mycluster').database('my_database').Sizes
    | distinct Name, Size, External
    | where not(isempty(Size))
    | extend o = pack(Name, Parent) 
    | summarize dict=make_bag(o)
);
print d = bag_merge(d1, d2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM