如何在Kusto中​​使用series_divide()?

时间:2019-07-17 21:16:43

标签: azure kusto azure-data-explorer

我无法正确地将时间序列数据与另一个时间序列相除。

我从TestTable获取数据,结果显示为以下视图:

TagId, sdata
8862, [0,0,0,0,2,2,2,3,4]
6304, [0,0,0,0,2,2,2,3,2]

我想将tagId 8862的sdata系列除以6304的系列

我希望得到以下结果:

[NaN,NaN,NaN,NaN,1,1,1,1,2]

当我尝试下面的代码时,我的ddata结果中只有两个空的S2

TestTable
| where TagId in (8862,6304)
| make-series sdata = avg(todouble(Value)) default=0 on TimeStamp in range (datetime(2019-06-27), datetime(2019-06-29), 1m) by TagId
| as S1;
S1 | project ddata = series_divide(sdata[0].['sdata'], sdata[1].['sdata'])
| as S2

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

series_divide()的两个参数不能来自数据集中的两个单独的行。

这是一个如何实现此目的的示例(基于您的实际用例的有限且可能不能完全代表的情况,如您的问题所示)

let T = 
    datatable(tag_id:long, sdata:dynamic)
    [
        8862, dynamic([0,0,0,0,2,2,2,3,4]),
        6304, dynamic([0,0,0,0,2,2,2,3,2]),
    ]
;
let get_value_from_T = (_tag_id:long) 
{ 
    toscalar(
        T 
        | where tag_id == _tag_id 
        | take 1
        | project sdata
    ) 
};
print sdata_1 = get_value_from_T(8862), sdata_2 = get_value_from_T(6304)
| extend result = series_divide(sdata_1, sdata_2)

返回:

|sdata_1             | sdata_2             | result                                      |
|--------------------|---------------------|---------------------------------------------|
|[0,0,0,0,2,2,2,3,4] | [0,0,0,0,2,2,2,3,2] |["NaN","NaN","NaN","NaN",1.0,1.0,1.0,1.0,2.0]|