You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Workbook - 多选下拉框整数类型参数使用报错及severtityLevel过滤方法咨询

解决日志级别下拉参数的类型转换问题与优化过滤方法

一、修复类型转换错误

下拉框参数默认传递的是字符串类型,而你的severityLevel是整数字段,直接比较自然会触发类型不匹配的错误。这里有两种实用的解决思路:

1. 在查询中转换参数类型

如果没办法修改下拉框的参数值类型,可以在查询里用类型转换函数把字符串参数转成整数。比如用Kusto查询语言的话,就用tolong()或parse_int()函数:

// 假设你的下拉参数名为SelectedLogLevel
YourLogTable
| where severityLevel == tolong(@SelectedLogLevel)

要是用的是SQL,就换成CAST(@SelectedLogLevel AS INT)或者CONVERT(INT, @SelectedLogLevel)就行。

2. 直接设置下拉框的选项值为整数

如果你的参数配置工具支持,把下拉选项的实际值改成整数(显示名称还保留“Error”“Warning”这类友好名称)。比如:

  • 显示“Verbose”,值设为0
  • 显示“Information”,值设为1
  • 显示“Warning”,值设为2
  • 显示“Error”,值设为3
    这样参数传递过来本身就是整数类型,不用额外转换,直接写where severityLevel == @SelectedLogLevel就可以正常运行。

二、更简便的severityLevel过滤方式

想要让过滤逻辑更直观、好维护,可以试试以下两种方式:

方法1:利用内置的severity字段(如果存在)

不少日志系统(比如Azure Monitor)会自动生成severity字段,对应“Error”“Warning”这类友好的级别名称,你可以直接用这个字段配合下拉参数:

YourLogTable
| where severity == @SelectedLogLevelName

这样下拉框让用户直接选级别名称,完全不用处理整数转换,对用户更友好。

方法2:自定义映射表

如果没有内置的名称字段,自己建一个映射表关联查询也很方便:

// 先定义级别名称和整数的对应关系
let LevelMap = datatable(LevelName:string, LevelInt:int) [
    "Verbose", 0,
    "Information", 1,
    "Warning", 2,
    "Error", 3,
    "Critical", 4
];
// 关联映射表,用名称过滤日志
YourLogTable
| join kind=inner LevelMap on $left.severityLevel == $right.LevelInt
| where LevelName == @SelectedLogLevelName

这种方式的好处是,后续如果级别定义有变化,只需要修改映射表就行,不用改动核心查询逻辑。


内容的提问来源于stack exchange,提问作者Kapoue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:47:32