Search code examples
azure-data-explorerkusto-explorer

Join corresponding elements of 2 array columns by a delimiter in Azure Data Explorer to create a 3rd column


Azure Data Explorer table has 2 columns with array of same size. I want to add a new column that joins ith index of both arrays with underscore to create new array of same size.

zip() function can only create array of array with each element being an array of 2 of type [ array1[i], array2[i] ].

I want each element of new column array as array[i]_array2[i].

e.g. Column arr1 = [ 'A1', 'A2', 'A3', arr2 = ['10', '20', '30'] I want to create a new column 'Out' = [ 'A1_10', 'A2_20', 'A3_30']

Input table:

datatable (Val:int, Arr1:dynamic, Arr2:dynamic)
[ 1, dynamic(['A1', 'A2', 'A3']), dynamic(['C1', 'C2', 'C3']), 
  2, dynamic(['B1', 'B2']),       dynamic(['D1', 'D2'])
] 

Expected table:

datatable (Val:int, Arr1:dynamic, Arr2:dynamic, Out:dynamic )
[ 1, dynamic(['A1', 'A2', 'A3']), dynamic(['C1', 'C2', 'C3']), 
     dynamic(['A1_C1', 'A2_C2', 'A3_C3']),
  2, dynamic(['B1', 'B2']), dynamic(['D1', 'D2']), 
     dynamic(['B1_D1', 'B2_D2'])
]

Solution

  • Does this work?

    datatable (Val:int, Arr1:dynamic, Arr2:dynamic)
    [ 1, dynamic(['A1', 'A2', 'A3']), dynamic(['C1', 'C2', 'C3']), 
      2, dynamic(['B1', 'B2']),       dynamic(['D1', 'D2'])
    ] 
    | mv-apply Arr1, Arr2 on (
     extend Out = strcat(Arr1, "_", Arr2)
     | summarize Arr1 = make_list(Arr1), Arr2 = make_list(Arr2), Out= make_list(Out)
    )
    
    Val Arr1 Arr2 Out
    1 [
    "A1",
    "A2",
    "A3"
    ]
    [
    "C1",
    "C2",
    "C3"
    ]
    [
    "A1_C1",
    "A2_C2",
    "A3_C3"
    ]
    2 [
    "B1",
    "B2"
    ]
    [
    "D1",
    "D2"
    ]
    [
    "B1_D1",
    "B2_D2"
    ]