Azure data explorer KQL窗口函数-如何按多个列进行分区?
输入表1: 销售员 产品 模型 1/1/2020 汽车 1. 1/2/2020 自行车 1. 2/1/2020 汽车 2. 3/1/2020 自行车 2.Azure data explorer KQL窗口函数-如何按多个列进行分区?,azure-data-explorer,kql,Azure Data Explorer,Kql,输入表1: 销售员 产品 模型 1/1/2020 汽车 1. 1/2/2020 自行车 1. 2/1/2020 汽车 2. 3/1/2020 自行车 2. 如果我正确理解了你的问题,这应该是可行的: datatable(SaleStart:datetime, Product:string, Model:int) [ datetime(1/1/2020), 'Car', 1, datetime(1/2/2020), 'Bike', 1, datetime(2/1/2020
如果我正确理解了你的问题,这应该是可行的:
datatable(SaleStart:datetime, Product:string, Model:int)
[
datetime(1/1/2020), 'Car', 1,
datetime(1/2/2020), 'Bike', 1,
datetime(2/1/2020), 'Car', 2,
datetime(3/1/2020), 'Bike', 2,
]
| order by Product asc, SaleStart asc
| extend SaleEnd = iff(next(Product) == Product and next(Model) != Model, next(SaleStart), datetime(null))
销售员
产品
模型
塞伦德
2020-01-01 00:00:00.0000000
汽车
1.
2020-02-01 00:00:00.0000000
2020-01-02 00:00:00.0000000
自行车
1.
2020-03-01 00:00:00.0000000
2020-02-01 00:00:00.0000000
汽车
2.
2020-03-01 00:00:00.0000000
自行车
2.
如果我正确理解了你的问题,这应该是可行的:
datatable(SaleStart:datetime, Product:string, Model:int)
[
datetime(1/1/2020), 'Car', 1,
datetime(1/2/2020), 'Bike', 1,
datetime(2/1/2020), 'Car', 2,
datetime(3/1/2020), 'Bike', 2,
]
| order by Product asc, SaleStart asc
| extend SaleEnd = iff(next(Product) == Product and next(Model) != Model, next(SaleStart), datetime(null))
销售员
产品
模型
塞伦德
2020-01-01 00:00:00.0000000
汽车
1.
2020-02-01 00:00:00.0000000
2020-01-02 00:00:00.0000000
自行车
1.
2020-03-01 00:00:00.0000000
2020-02-01 00:00:00.0000000
汽车
2.
2020-03-01 00:00:00.0000000
自行车
2.
为了对任何人都有用,我找到了一个比Yoni的完美解决方案更合适的解决方案
let MyTable = datatable(SaleStart:datetime, Product:string, Model:int)
[
datetime(1/1/2020), 'Car', 1,
datetime(1/2/2020), 'Bike', 1,
datetime(2/1/2020), 'Car', 2,
datetime(3/1/2020), 'Bike', 2,
];
MyTable
| partition by Product
(
order by Model asc
| extend SaleEnd = next(SaleStart)
)
在我看来,这似乎是在抽象出所需逻辑的细节,只表达思想。如果对任何人有用,我找到了一个我更喜欢的解决方案,而不是Yoni的完美解决方案
let MyTable = datatable(SaleStart:datetime, Product:string, Model:int)
[
datetime(1/1/2020), 'Car', 1,
datetime(1/2/2020), 'Bike', 1,
datetime(2/1/2020), 'Car', 2,
datetime(3/1/2020), 'Bike', 2,
];
MyTable
| partition by Product
(
order by Model asc
| extend SaleEnd = next(SaleStart)
)
在我看来,这似乎是为了抽象出所需逻辑的细节,仅表达思想。啊,所以手动检查行-谢谢!如果next()使用参数PartitionByColumnList来处理这个问题,那就太好了——如果高粒度表中有许多列要处理,那么它会变得很乏味。啊,那么手动检查行-谢谢!如果next()接受一个参数PartitionByColumnList来处理这个问题,那就太好了——对于具有许多col的高粒度表来说,它会变得单调乏味。