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

如何在历史数据摄入时设置正确的creationTime?

问题解答

核心问题回应

目前Azure Data Explorer(Kusto)不支持基于单条数据行的表达式设置creationTime。因为creationTime是数据扩展(data extent)级别的属性,对应一批摄入的数据,而非单条数据行的属性。

便捷替代方案

针对历史数据摄入时对齐流式数据缓存/保留策略的需求,推荐以下实用方案:

1. 按时间分片批量摄入

将历史数据按时间窗口(如小时、天)拆分,为每个分片设置对应的creationTime,确保每个数据扩展的creationTime与分片时间匹配,从而对齐流式数据的策略。可通过脚本自动化循环处理各时间分片:

// 示例:按天分片摄入历史数据
let startDate = datetime(2023-01-01);
let endDate = datetime(2023-12-31);
for day in range(startDate, endDate, 1d) {
    ingest into table TargetTable 
    with (creationTime=day)
    <| SourceHistoricalData
    | where EventTime between (day .. day + 1d - 1tick)
}

2. 基于虚拟时间列修改缓存/保留策略

在目标表中新增虚拟时间列(如VirtualIngestionTime),从数据的datetime列或ID转换得到,然后修改表的缓存、保留策略,让策略基于这个虚拟列生效,而非默认的creationTime:

// 新增虚拟时间列(映射现有EventTime列)
.alter-merge table TargetTable policy ingestion mapping '[{"column":"VirtualIngestionTime","path":"$.EventTime","datatype":"datetime"}]'

// 设置缓存策略:基于虚拟列保留最近30天热数据
.alter table TargetTable policy caching hot = 30d on column VirtualIngestionTime

// 设置保留策略:基于虚拟列保留1年数据
.alter table TargetTable policy retention softdelete = 365d on column VirtualIngestionTime

3. 利用LightIngest的文件名匹配批量设置

将历史数据文件按时间规则命名(如data_2023-05-15_00.csv),通过LightIngest的creationTimePattern参数匹配文件名中的时间,批量自动设置creationTime:

LightIngest.exe 
  --cluster "https://mycluster.kusto.windows.net" 
  --database "MyDB" 
  --table "TargetTable" 
  --source "C:\HistoricalData\*.csv" 
  --creationTimePattern "data_(yyyy-MM-dd_HH).csv"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:05:14