pivot problem

Brass Contributor

When rows are filtered such that zero rows are sent to the evaluate pivot clause, the subsequent references to fields generated by the pivot are considered syntax errors.

Perf
| where 1 == 2 // intentionally generate zero rows...
| evaluate pivot (CounterName, max(Max)) // would normally generate a column per unique CounterName
| where SomeCounterThatExists == 2 // and this would succeed.
SYNTAX ERROR
'where' operator: Failed to resolve scalar expression named 'SomeCounterThatExists'

 

Given that there are ZERO rows for the where to evaluate, I was hoping that it would short circuit the evaluation and not throw an error.

 

Any suggestions for how to avoid errors in this case?

6 Replies

Hi,

I am not sure what you are trying to achieve. For me it is normal that you get error because if there are no results there is nothing to evaluate. Is there any particular use case you are trying to achieve? Can you elaborate more on what end result you want to get if there is no data? Why resulting an error if there is no data a problem?

What would be normal would be to get no results, without error, since the input to the evaluate is empty. It should short circuit the pipeline. The use case is, when there are rows available to the evaluate pivot, it works, and when there aren’t it returns [] without error.

Ok. I cannot quite get the use case as from math point of view this is working fine. I would assume you can implement some logic in your queries to check first if you have any rows returned at all do the evaluation but if you do not have return something else. Other option is if you do not have results to populate some dummy results so the evaluation operation can have something to work with. If you have to implement that in every query won't be pretty though. You can probably also do a union with dymmy values to make sure you have something to work with. If anyone else can propose a better solution I would be happy to hear it

I’m aware of the workarounds. I can declare scalar variables of the same names as the columns I know will pivot out of the data. I’m suggesting that the language itself should not require this because it could short circuit when the pipeline has no rows in it. As I’ve pointed out in other posts, evaluate pivot is a fragile function.

Ok. Apologies. I was not aware that is a request. As this is related to the query language it might be best to address this request towards Azure Data Explorer service as they own the query language. They probably also have user voice or you can use whatever channel that you are aware to reach them.

These days it is hard to tell what is “Azure Log Analytics” and what is “Azure Data Explorer”... or “Azure Monitor logs” and wither Kusto? Things seem to be in the middle of a rebrand. But yes, I’m trying to report bugs in kusto.

https://docs.microsoft.com/en-us/azure/azure-monitor/azure-monitor-rebrand