Azure Workbook

2026-08-28T09:32:49.8266667+00:00

Hi i have an issue i am enountering. I am tryingto have different ysplit panels in azure but i cant. I used he render qquery but it is like ignore when running. Here is my query

let SHO_CPU =
Perf
| where Computer in (dynamic([{WVDHosts}]))
| where TimeGenerated {Timeline:query}
| where ObjectName == "Processor Information"
| where CounterName == "% Processor Time"
| where InstanceName == "_Total"
| summarize SHO_CPU = avg(CounterValue)
    by bin(TimeGenerated, {Timeline:grain});
 
let FS_CPU =
InsightsMetrics
| where Computer in (dynamic([{WVDHostsFil}]))
| where TimeGenerated {Timeline:query}
| where Namespace == "Processor"
| where Name == "UtilizationPercentage"
| summarize FS_CPU = avg(Val)
    by bin(TimeGenerated, {Timeline:grain});
 
let TenTau_Rows =
cja_from_auto_acocunt_tenthousand_rows_CL
| where Computer in (dynamic([{WVDHostsql}]))
| where TimeGenerated {Timeline:query}
| summarize TenTau_Rows = avg(ExecTimeInt)
    by bin(TimeGenerated, {Timeline:grain});
 
let COMOS_Processes =
VMProcess
| where Computer in (dynamic([{WVDHosts}]))
| where TimeGenerated {Timeline:query}
| where ExecutableName =~ "comos"
| extend ProcessKey = strcat(Computer, "|", tostring(FirstPid))
| summarize COMOS_Processes = dcount(ProcessKey)
    by bin(TimeGenerated, {Timeline:grain});
 
SHO_CPU
| join kind=fullouter FS_CPU on TimeGenerated
| join kind=fullouter TenTau_Rows on TimeGenerated
| join kind=fullouter COMOS_Processes on TimeGenerated
| project
    TimeGenerated,
    SHO_CPU,
    FS_CPU,
    TenTau_Rows,
    COMOS_Processes

Azure documentation talks of ysplit but idk whyits not working in azure workbook. How can i get the visualizationi want

Microsoft Security | Microsoft Sentinel
0 comments No comments

1 answer

Sort by: Most helpful
  1. Konstantinos Lianos 830 Reputation points Student Ambassador
    2026-08-31T10:59:51.82+00:00

    Hi @Tchakounte Tchakounte, Hillary

    The issue here is not your KQL. It is a visualization limitation/difference in Azure Workbooks.

    ysplit=panels is a valid property of the Kusto render operator:

    | render timechart with (

    ysplit=panels,
    
    ycolumns=SHO_CPU, FS_CPU, TenTau_Rows, COMOS_Processes
    

    )

    However, the render operator only adds visualization metadata to the query result. Microsoft specifically notes that the actual interpretation of this metadata depends on the client/user agent, and different clients can support different visualization properties.

    Azure Workbooks uses its own visualization configuration, so ysplit=panels isn't currently honored in the same way as Azure Data Explorer/Kusto visualizations. This is why the query executes successfully but the ysplit setting appears to be ignored.

    For Workbooks, I would recommend converting the result into a long/series format:

    let SHO_CPU = Perf

    | where Computer in (dynamic([{WVDHosts}]))

    | where TimeGenerated {Timeline:query}

    | where ObjectName == "Processor Information"

    | where CounterName == "% Processor Time"

    | where InstanceName == "_Total"

    | summarize Value = avg(CounterValue)

    by TimeGenerated = bin(TimeGenerated, {Timeline:grain})
    

    | extend Metric = "SHO_CPU";

    let FS_CPU = InsightsMetrics

    | where Computer in (dynamic([{WVDHostsFil}]))

    | where TimeGenerated {Timeline:query}

    | where Namespace == "Processor"

    | where Name == "UtilizationPercentage"

    | summarize Value = avg(Val)

    by TimeGenerated = bin(TimeGenerated, {Timeline:grain})
    

    | extend Metric = "FS_CPU";

    let TenTau_Rows = cja_from_auto_acocunt_tenthousand_rows_CL

    | where Computer in (dynamic([{WVDHostsql}]))

    | where TimeGenerated {Timeline:query}

    | summarize Value = avg(ExecTimeInt)

    by TimeGenerated = bin(TimeGenerated, {Timeline:grain})
    

    | extend Metric = "TenTau_Rows";

    let COMOS_Processes = VMProcess

    | where Computer in (dynamic([{WVDHosts}]))

    | where TimeGenerated {Timeline:query}

    | where ExecutableName =~ "comos"

    | extend ProcessKey = strcat(Computer, "|", tostring(FirstPid))

    | summarize Value = todouble(dcount(ProcessKey))

    by TimeGenerated = bin(TimeGenerated, {Timeline:grain})
    

    | extend Metric = "COMOS_Processes";

    union SHO_CPU, FS_CPU, TenTau_Rows, COMOS_Processes

    | project TimeGenerated, Metric, Value

    | order by TimeGenerated asc

    Then in the Workbook configure the visualization as a Time chart with:

    X axis: TimeGenerated

    Y axis: Value

    Split/Series by: Metric

    This gives you four independent series without having to perform the fullouter joins.

    Was this answer helpful?

    1 person found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.