Search code examples
arraysdatatablekql

kql - datatable with one cell from an array


How can I create a datatable with one cell from an array?

I have this as an input:

let arr = dynamic ([
    "Harjumaa",
    "Tallinn",
    "Lastekodu",
    "24",
    ""
]);

This code works:

let dt = datatable(value:dynamic)
[
    dynamic([
        "",
         "Harjumaa",
         "Tallinn",
         "Lastekodu",
         "24",
         ""
    ]), 
];
let cleanedArr = dt
| mv-apply value on (
    summarize value = make_list_if(value, isnotempty(value))  
);
print toscalar(cleanedArr);

but I need to use arr variable as an input


Solution

  • let arr = dynamic ([
        "Harjumaa",
        "Tallinn",
        "Lastekodu",
        "24",
        ""
    ]);
    print source_arr = arr
    | mv-apply a = source_arr on (summarize clean_arr = make_list_if(a, isnotempty(a)))
    

    +--------------------------------------------+-----------------------------------------+
    |                 source_arr                 |                clean_arr                |
    +--------------------------------------------+-----------------------------------------+
    | ["Harjumaa","Tallinn","Lastekodu","24",""] | ["Harjumaa","Tallinn","Lastekodu","24"] |
    +--------------------------------------------+-----------------------------------------+
    

    Fiddle

    Or

    let arr = dynamic ([
        "Harjumaa",
        "Tallinn",
        "Lastekodu",
        "24",
        ""
    ]);
    print dummy = 0
    | mv-apply a = arr on (summarize clean_arr = make_list_if(a, isnotempty(a)))
    

    +-------+-----------------------------------------+
    | dummy |                clean_arr                |
    +-------+-----------------------------------------+
    |     0 | ["Harjumaa","Tallinn","Lastekodu","24"] |
    +-------+-----------------------------------------+
    

    Fiddle