-1

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

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}
4

1 回答 1

0

您可以使用该bag_merge()功能:https ://docs.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”:“Basic0”,
“B5”:“Basic09”,
“B19”:“Basic12”
}

或者,根据您的查询:

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)
于 2022-02-25T15:52:51.163 回答