I have an application that uses the Python library azure.kusto.data to query data from a Kusto cluster. I’m wondering, is it possible to use a dynamic array as input for paramterizing a kusto query?
The existing documentation doesn’t seem to call out such functionality. https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/queryparametersstatement?pivots=azuredataexplorer
Passing in string type values has worked fine in the past:
params = {
"scenario": "string",
"env": "string2",
"duration": "string3",
}
query = """
declare query_parameters(scenario:string, env:string, duration:string);
Some_Kusto_Query(scenario, env, duration)
"""
I will then pass the dictionary and query string into the Kusto library to get the data I need. This works fine. What does not work fine is whenever I try some version of this:
params = {
"scenario": "string",
"env": "string2",
"duration": "string3",
"value_list": [1,2,3,4]
}
query = """
declare query_parameters(scenario:string, env:string, duration:string, value_list:dynamic);
Some_Kusto_Query(scenario, env, duration)
| where value in value_list
"""
I’ve tried many different iterations of this and can’t seem to get it to work. The only other idea I have at this point would be to pass in value_list as a delimited string (e.g., “1-2-3-4”) and use the split() function in kusto to deserialize the string back to an array, but this doesn’t seem ideal.
Any tips or pointers would be appreciated – I’ve scoured the Kusto docs/Google and haven’t come across any good examples online.
Thanks!
Advertisement
Answer
The value in the parameter list has to be a literal, for dynamic arrays a literal looks like this:
dynamic([1,2,3])
for example:
params = {
"scenario": "string",
"env": "string2",
"duration": "string3",
"value_list": "dynamic([1,2,3,4])"
}