diff --git a/pykusto/_src/functions.py b/pykusto/_src/functions.py index 2885200b..660827c8 100644 --- a/pykusto/_src/functions.py +++ b/pykusto/_src/functions.py @@ -848,6 +848,18 @@ def array_slice(array: ArrayType, start: NumberType, end: NumberType) -> _ArrayE """ return _ArrayExpression(KQL(f'array_slice({_to_kql(array)}, {_to_kql(start)}, {_to_kql(end)})')) + @staticmethod + def array_sort_asc(array1: ArrayType, nulls_last: BooleanType = None, *more_arrays: ArrayType) -> _ArrayExpression: + """ + https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/arraysortascfunction + """ + res = f'array_sort_asc({_to_kql(array1)}' + if len(more_arrays) > 0: + res = res + ', ' + ', '.join(_to_kql(array) for array in more_arrays) + if nulls_last is not None: + res = res + ', ' + f'{_to_kql(nulls_last)}' + return _ArrayExpression(KQL(res + ')')) + @staticmethod def array_split(array: ArrayType, indices: Union[NumberType, ArrayType]) -> _ArrayExpression: """ diff --git a/test/test_functions.py b/test/test_functions.py index 698ec9fc..22b64594 100644 --- a/test/test_functions.py +++ b/test/test_functions.py @@ -1042,6 +1042,22 @@ def test_array_slice(self): Query().extend(foo=f.array_slice(t.arrayField, t.numField, t.numField2)).render() ) + def test_array_sort_asc(self): + self.assertEqual( + ' | extend foo = array_sort_asc(arrayField1, arrayField2, boolField)', + Query().extend(foo=f.array_sort_asc(t.arrayField1, t.boolField, t.arrayField2)).render()) + self.assertEqual( + ' | extend foo = array_sort_asc(arrayField1, arrayField2)', + Query().extend(foo=f.array_sort_asc(t.arrayField1, t.arrayField2)).render()) + self.assertEqual( + ' | extend foo = array_sort_asc(arrayField1, boolField)', + Query().extend(foo=f.array_sort_asc(t.arrayField1, t.boolField)).render() + ) + self.assertEqual( + ' | extend foo = array_sort_asc(arrayField1)', + Query().extend(foo=f.array_sort_asc(t.arrayField1)).render() + ) + def test_array_split(self): self.assertEqual( ' | extend foo = array_split(arrayField, numField)',