Search code examples
azure-data-explorerkql

coalesce columns for a uniqueid across multiple rows


I have a kusto table in this format and I need to coalesce the value in columns into one row for a UniqueId. Could you give me some pointers?

UniqueId latencyForCall1 latencyForCall2 latencyForCall3
abcd 100
abcd 120
abcd 240
efgh 130
efgh 110
efgh 310
UniqueId latencyForCall1 latencyForCall2 latencyForCall3
abcd 100 120 240
efgh 130 110 310

Solution

  • You can use a summarize with take_any() aggregation function. If only one column is provided to it, it will attempt to use a non-null value.

    Here is your example:

    let T = datatable(UniqueId:string, latencyForCall1:long, latencyForCall2:long, latencyForCall3:long)
    [
        "abcd", 100, long(null), long(null), 
        "abcd", long(null), 120, long(null), 
        "abcd", long(null), long(null), 240, 
        "efgh", 130, long(null), long(null), 
        "efgh", long(null), 110, long(null), 
        "efgh", long(null), long(null), 310, 
    ];
    T
    | summarize take_any(latencyForCall1), take_any(latencyForCall2), take_any(latencyForCall3) by UniqueId
    
    UniqueId latencyForCall1 latencyForCall2 latencyForCall3
    abcd 100 120 240
    efgh 130 110 310