如何基于UnixTime列对Azure Data Explorer外部表按日分区?
基于Unix时间戳(long型)实现Azure Data Explorer外部表按日分区
Azure Data Explorer外部表的分区表达式仅支持有限的确定性函数,你尝试的round()、datetime_add()不在允许范围内,但可以通过以下方式实现需求:
直接使用datetime_from_unixtime()将long型Unix时间戳转换为datetime,再结合startofday()生成日边界分区键,示例语法如下:
.create external table extTbl ( UnixTime: long, Data: dynamic ) kind = blob partition by (DatePartition:datetime = startofday(datetime_from_unixtime(UnixTime))) // 补充存储连接、路径模式等配置,例如: storage account_name = "yourstorageaccount" container = "yourcontainer" path_format = "data/datepartition={DatePartition:yyyy-MM-dd}/{*}" ...
关键说明:
- 分区键可以自定义名称(示例中用
DatePartition),无需与原表列名一致 - 如果你的Unix时间戳是毫秒级(而非秒级),需要先除以1000:
datetime_from_unixtime(UnixTime / 1000) - 路径模式必须与分区键匹配,示例中用
{DatePartition:yyyy-MM-dd}生成按年月日格式化的分区路径,确保数据文件能被正确映射到分区
内容的提问来源于stack exchange,提问作者Peter Vandivier
相关产品推荐
相关产品推荐

