Does the Azure Data Explorer optimizer optimize across function calls if your base table is encapsulated in a user defined function?

I am optimizing some Kusto code in which the access to base tables is encapsulated in user defined functions, sometimes several layers of function calls. For example, suppose you have a tabular function GetStuff() which in turn invokes a tabular function GetStuff2() which calls the base Kusto table Stuff. My question is: If I write a Kusto query which involves a join with the tabular function GetStuff(), will the Azure Data Explorer optimizer work to optimize the entire call stack that is involved? In other words, will it behave like views in a...Read more

azure data explorer - How to programmatically create a database in ADX using Java

I am using REST API (https://docs.microsoft.com/en-us/azure/kusto/api/rest/request) to interact with the database in ADX. I want to create more databases in the same cluster. How should I do it using Java?I am not using the Java SDK. I have relied on the REST APIs so far.I think I cannot create a new database using the REST API, so looking for alternative.It would have been really helpful if there was a command like ".create table tablename" just for the database....Read more

How to do a dynamic join in a JSON object in Azure Data Explorer

I have a nested json string that I'm parsing using the parse_json() function. Sample data looks like{"one":"OneValue","four""FourValue",{"1":"stringA", "24":"stringBlah"..}}The values "1" and "24" in the nested json string are keys to a mapping table.Sample mapping table data"1": "One""24": "TwentyFour"I'd like to join the keys in the nested json with the mapping table and have a query that outputs the values instead of the keys. Any suggestions on how I can do this dynamic join on the keys?...Read more

azure data explorer - What's the correct way to pass a cursor to a user defined function?

I'm trying to pass a cursor to a function like this:.create-or-alter function GetLatestValues(cursor:string) { Logs | where cursor_after(cursor)}But I get a Error cursor_after(): argument #1 is invalid response. Is there something I'm missing? Is string the wrong data type to use?This approach works properly for lambda functions:let GetLatestValues = (cursor:string) { Logs | where cursor_after(cursor)};GetLatestValues('') | take 1...Read more