首页 > 解决方案 > Azure 数据资源管理器中的多行数据整合

问题描述

我有多行数据对应于 ADX 表中的单个项目。我需要合并单个项目的属性,以便输出包含属性的最新值(按时间)。挑战在于,并非所有行都更新了每个属性的值。另一个挑战是,操作需要跟上实时数据,所以我正在寻找一种轻量级的解决方案,其中需要每 20 秒合并大约 10k 的更改。因此,昂贵的连接和包操作可能并不理想。

例如,数据如下所示

INPUT TABLE CONTENT
time1   item1   prop1-0 null    prop3-0 null
time2   item1   null    null    prop3-1 null
time3   item1   prop1-1 null    null    prop4-0
time4   item1   prop1-2 prop2-0 prop3-2 null

EXPECTED PROCESSED OUTPUT
time4   item1   prop1-2 prop2-0 prop3-2 prop4-0

标签: azure-data-explorer

解决方案


这符合您的要求吗?

我使用 substring 来获取主要和次要版本,您也可以使用 parse 来做这个更清洁。

然后我使用summarize max(),然后用strcat 重构这些值。

datatable (ts:int, prop:string, a:string, b:string, c:string, d:string) [
1, 'item1', 'prop1-0', '', 'prop3-0', '',
2, 'item1', '', '', 'prop3-1', '',
3, 'item1', 'prop1-1', '', '', 'prop4-1',
4, 'item1', 'prop1-2', 'prop2-0', 'prop3-2', ''
]
| extend aMaj = substring(a, 4, 1), 
aMin = substring(a, 6, 1), 
bMaj = substring(b, 4, 1), 
bMin = substring(b, 6, 1), 
cMaj = substring(c, 4, 1), 
cMin = substring(c, 6, 1), 
dMaj = substring(d, 4, 1), 
dMin = substring(d, 6, 1)
| summarize ts = max(ts), max(aMaj), max(aMin), max(bMaj), max(bMin), max(cMaj), max(cMin), max(dMaj), max(dMin) by prop
| project ts, prop, strcat('prop', max_aMaj, '-', max_aMin), strcat('prop', max_bMaj, '-', max_bMin), strcat('prop', max_cMaj, '-', max_cMin), strcat('prop', max_dMaj, '-',         max_dMin)

返回

ts  prop    Column1 Column2 Column3 Column4
4   item1   prop1-2 prop2-0 prop3-2 prop4-1

推荐阅读