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

Kusto中如何将月份名称转换为对应数字(如Mar→3、Jan→1)?

在Kusto中将月份名称转换为数字的优雅方案

嘿,这个问题我太熟了!完全不用折腾一堆替换变量或者硬编码字典,Kusto本身就有简洁又靠谱的解决方案,一步到位。

核心思路:利用日期转换函数

Kusto的todatetime()函数可以识别常见的月份缩写(比如Mar、Jan)和全称(比如March、January),只要给它凑一个合法的日期格式(比如加上日期“01”),就能把月份字符串转成datetime类型,再用monthofyear()函数提取对应的月份数字。

基础示例(单个月份)

如果只是处理单个月份字符串,直接这么写就行:

// 输出:3
print MonthNumber = monthofyear(todatetime("Mar 01"))
// 输出:1
print MonthNumber = monthofyear(todatetime("January 01"))

批量处理表数据

假设你有一张表SalesData,其中MonthName列存储了月份名称(缩写或全称),要生成对应的月份数字列,可以这么写:

SalesData
| extend MonthNumber = monthofyear(todatetime(strcat(MonthName, " 01")))

这里用strcat()把月份名称和“ 01”拼接成完整的日期字符串(比如"Mar" + " 01"变成"Mar 01"),再转成日期后提取月份数字。

处理异常情况(可选)

如果担心存在不规范的月份名称导致转换失败,可以用isdatetime()先判断合法性,避免查询报错:

SalesData
| extend MonthNumber = iff(
    isdatetime(strcat(MonthName, " 01")),
    monthofyear(todatetime(strcat(MonthName, " 01"))),
    null  // 不合法的月份名返回null,也可以换成你需要的默认值
)

为什么比替换方法好?

  • 无需硬编码:不用写一堆replace("Mar", "3")或者维护月份字典,Kusto帮你搞定所有标准月份名的识别
  • 兼容性强:同时支持缩写、全称,甚至不区分大小写(比如mar、MAR都能正常转换)
  • 代码简洁:一行代码就能完成转换,可读性和维护性都更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:52:47