如何在特定行号和特定列号的Kusto表中访问值?

问题描述

通过使用row_number(),我们可以获得整个行。但是,如果我们想要该行中的特定值并将其用于进一步的计算,该怎么做呢?

Example:
Customer Month  Usage. %Change
ABC       8.     10.      0
DEF       9.     12.      120
GHI       10.    10.      100
JKL.      11.    15.      150

我正在寻找的计算是:- 第一个月的使用量是10 从下个月开始

12/10 * 100 = 120
10/10 * 100 = 100
15/10 * 100 = 150

如何获取第一行,第二列的值并将其存储到变量中,以便我可以将其用于进一步的计算?

解决方法

这样的事情怎么样?

let events = datatable(Customer: string,Month:int,Usage:real) [
"ABC",8,10,"DEF",9,12,"GHI","JKL",11,15];
//
let first_usage = toscalar(events | summarize arg_min(Month,Usage) | project Usage); 
events | extend Change = 100*Usage/first_usage

将first_usage变量设置为最低月份的“用法”值。如果您确定它们已经被排序,则可以只选择第一行。我们必须将其转换为标量,以在将来的计算中使用它。

接下来,我们在您的计算中添加一个新的更改列。第一行将是100(而不是0),但是如果很重要,也可以通过使用iff()来不同地处理第一行来解决此问题:

let events = datatable(Customer: string,Usage) | project Usage); 
events
| serialize
| extend r=row_number()
| extend Change = iff(r==1,0.0,100*Usage/first_usage)
| project-away r

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...