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

关于ADX表数据分区及基于ingestionTime创建分区策略的咨询

Azure Data Explorer分区策略疑问解答

文档两段表述的含义

先看文档里的两段原文翻译:

默认情况下,数据分片(extents)按创建时间(摄入时间)进行分区,大多数情况下无需设置数据分区策略。
默认情况下,表的数据分区策略为null,此时表中的数据在摄入后不会被重新分区。

这两段讲的是ADX两个不同环节的行为:

  • 第一段是数据摄入阶段的默认处理:当数据被导入ADX时,系统会自动按数据的摄入时间把数据拆分到不同的分片里,这个是内置的默认行为,不需要额外配置。
  • 第二段是分区策略的默认状态:新建表的分区策略默认是null,这个策略管的是数据摄入完成后是否会被重新分区。如果策略为null,已经生成的分片就不会被系统调整分区;如果设置了策略,系统会定期按照规则对现有分片做重新分区操作。

简单说:摄入时自动按时间分片,但默认不会事后重新调整分区——这就是两段表述的核心逻辑。

你的业务场景问题解答

你需要基于ingestionTime做均匀范围分区,以下是具体解答:

1. 创建分区策略的方法

用ADX的.alter table命令来创建,示例代码如下(替换你的表名):

.alter table YourTableName policy partitioning @'
{
  "PartitionKeys": [
    {
      "ColumnName": "$IngestionTime",
      "Kind": "UniformRange",
      "Properties": {
        "Reference": "2020-01-01T00:00:00", // 分区起始参考时间
        "RangeSize": "1.00:00:00" // 每个分区的时间范围,比如1小时,可按需调整
      }
    }
  ]
}
'

注意:

  • $IngestionTime是ADX内置的隐藏列,直接用这个名称即可,不用提前创建
  • RangeSize支持多种时间格式,比如7.00:00:00代表7天一个分区,00:30:00代表30分钟一个分区
  • 执行该命令需要你有表的管理员权限

2. 摄入时间vs业务时间戳的选择

核心看你的查询习惯:

  • 如果你的查询大多是按数据进入系统的时间过滤(比如“查今天导入的所有数据”),选$IngestionTime分区最匹配,查询能快速定位到对应分片,性能更好。
  • 如果查询主要按业务事件发生的时间过滤(比如“查昨天产生的用户行为数据”),且业务时间戳(比如timestamp)和摄入时间差很多,那才需要按业务时间戳分区。

你的场景明确要求基于ingestionTime,所以直接选$IngestionTime做均匀范围分区就可以。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:38:32