Darshan
Darshan

Reputation: 1011

How do I access outer column in subquery in kusto / Azure application insights?

I am trying to simply run a subquery in Azure application insights, using Kusto, so that I can get some information from two tables displayed as one.

The query I'm trying is

table1
| extend progressLog = toscalar(
    table2 
    | where common_Id == table1.common_Id // errors saying Ensure that expression: table1.common_Id is indeed a simple name
    | summarize makelist(stringColumn) 
)

I have attempted to alias this id, and even join the two tables, as such:

requests
| extend aliased_id = common_Id
| join traces on operation_Id, $left.operation_Id == $right.operation_Id
| extend test_id = operation_Id 
| extend progressLog = toscalar(
    traces 
    | where operation_Id == aliased_id // Failed to resolve column or scalar expression named 'aliased_id'
    | summarize makelist(message) 
)

Failed to resolve column or scalar expression named 'aliased_id'.

I am simply trying to do the equivalent of the T-SQL query:

SELECT 
    ... ,
    STRING_AGG(table2.stringColumn, ',')
FROM
    table1 
INNER JOIN 
    table2 
    ON table1.common_Id = table2.common_Id
GROUP BY 
    table.<props>

My main question is - how do I reference "common_Id" in the kusto language inside a subquery

Upvotes: 8

Views: 18125

Answers (1)

yifats
yifats

Reputation: 2744

Please see if the next query provides what you're looking for. If not, please share sample input using datatable, as I did below, and expected output:

let requests = datatable(common_Id:string, operation_Id:string)
[
    "A", "X", 
    "B", "Y", 
    "C", "Z"
]; 
let traces = datatable(operation_Id:string, message:string)
[
    "X", "m1", 
    "X", "m2",
    "Y", "m3"
]; 
let messagesByOperationId = traces | summarize makelist(message) by operation_Id;
requests 
| join kind=leftouter messagesByOperationId on operation_Id
| project common_Id, operation_Id, progressLog = list_message

Upvotes: 8

Related Questions