如何使用Kusto的ago函数按年份筛选数据?
问题:Kusto中使用
ago()函数按年份筛选数据的替代方法? 我尝试使用Kusto的ago()函数筛选表数据,但该函数仅支持秒(s)、分钟(m)、月和天(d)作为时间单位,无法使用年份(y)。示例如下:
T | where TimeStamp > ago(5s) --> 有效 T | where TimeStamp > ago(5m) --> 有效 T | where TimeStamp > ago(5d) --> 有效 T | where TimeStamp > ago(2y) --> 年份单位无效
请问除了使用ago(365d)或ago(730d)之外,是否有更简便的按年份筛选数据的方法?
回答
有两种更优的方法,不仅比硬编码天数更简便,还能自动处理闰年等时间计算问题:
直接使用
datetime_add()函数
这个函数支持year作为时间单位,能基于当前时间精准往前推指定年份,逻辑和ago()完全对齐,示例:T | where TimeStamp > datetime_add('year', -2, now())把代码里的
-2替换成你需要的年份数即可。封装自定义复用函数
如果需要频繁按年份筛选,可以封装一个自定义函数,调用起来和ago()一样顺手:// 定义自定义函数 let ago_years = (years: int) { datetime_add('year', -years, now()) }; // 调用筛选最近2年的数据 T | where TimeStamp > ago_years(2)
另外,如果你的需求是筛选从N年前的年初至今的数据,可以用startofyear()函数:
// 筛选2年前的年初到现在的数据 T | where TimeStamp > startofyear(now(), -2)
内容的提问来源于stack exchange,提问作者Born2Code
相关产品推荐
相关产品推荐

