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

使用ID分区创建Azure Data Explorer外部表时ID列为何为空?

问题原因及最优解决方案

原因分析

你遇到的ID列值为空的问题,核心是分区列的映射规则:

  • 你定义的ID列默认是从Parquet文件内部的字段读取,但你的Parquet文件里并没有这个字段,所以显示为空。
  • 路径中的ID=X/ID=Y属于存储路径分区参数,Kusto不会自动把这类路径参数映射到表定义的同名列,必须显式配置绑定关系。

你创建ID2列并在路径中引用能生效,是因为用@ID2显式把路径分区参数和ID2列做了绑定,但这属于绕路的方式,并非最优解。

最优解决方案

不需要新增列,直接通过partition by子句将路径分区参数绑定到原有的ID列即可,修改后的KQL语句如下:

.create external table TESTS (Key: string, Value: string)
kind=adl
dataformat=parquet
partition by ID string
(
    h@'abfss://gold@dev.dfs.core.windows.net/db/1/ID=@ID;impersonate',
    h@'abfss://gold@dev.dfs.core.windows.net/db/1/ID=@ID;impersonate'
)

关键修改点说明

  1. 移除表定义中的ID列:因为ID已经通过partition by声明为分区列,不需要再作为文件内字段定义。
  2. 添加partition by ID string:明确ID是分区列,指定其数据类型为string。
  3. 路径中的ID=X/ID=Y改为ID=@ID:将路径中的分区占位符与表的ID列绑定,Kusto会自动把每个路径对应的X、Y值填充到ID列中。

执行上述语句后,查询外部表时ID列就会正确显示X或Y的值,同时Key和Value列也能正常读取文件内的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:47:08