首页 > 解决方案 > 如何访问 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

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

标签: azure-data-explorerkql

解决方案


这样的事情怎么样?

let events = datatable(Customer: string, Month:int, Usage:real) [
"ABC",       8,     10,
"DEF",      9,     12,
"GHI",      10,    10,
"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, Month:int, Usage:real) [
"ABC",       8,     10,
"DEF",      9,     12,
"GHI",      10,    10,
"JKL",      11,    15];
//
let first_usage = toscalar(events | summarize arg_min(Month, Usage) | project Usage); 
events
| serialize
| extend r=row_number()
| extend Change = iff(r==1, 0.0, 100*Usage/first_usage)
| project-away r

推荐阅读