如何在Azure Data Explorer(ADX)中获取所有表大小并存储至表中?
Azure Data Explorer(ADX)表大小查询及数据写入错误解决
一、获取所有表大小的高效查询
无需逐个查询单表extents,ADX提供了更直接的方式获取全量表存储大小:
方法1:使用内置统计命令
通过.show tables stats命令直接获取每个表的存储统计信息:
.show tables stats | project DatabaseName, TableName, TotalDataSize, SizeinGB = format_bytes(TotalDataSize, 2)
方法2:通过extents聚合查询所有表
若需要更细粒度的extents数据,可使用table_extents()函数(支持指定单表或查询所有表):
// 查询当前数据库所有表的大小 table_extents() | summarize TotalSize = sum(ExtentSize) by DatabaseName, TableName | extend SizeinGB = format_bytes(TotalSize, 2) | project DatabaseName, TableName, SizeinGB
二、解决.set-or-append语法错误
你遇到的错误是因为Kusto不允许在同一查询批次中混合使用.show控制命令和.set-or-append控制命令,$command_results仅能在单个控制命令的后续步骤中使用,无法跨控制命令传递结果。
正确写法
直接用table_extents()函数替代.show table extents,将计算逻辑整合到.set-or-append语句中:
// 写入单表大小到自定义表 .set-or-append adx_tables_space <| table_extents("dev_adls_la_parsed") | summarize num=sum(ExtentSize) by DatabaseName, TableName | extend SizeinGB = format_bytes(num, 2) | project DatabaseName, TableName, SizeinGB
如果需要写入当前数据库所有表的大小,去掉table_extents()的表名参数即可:
.set-or-append adx_tables_space <| table_extents() | summarize num=sum(ExtentSize) by DatabaseName, TableName | extend SizeinGB = format_bytes(num, 2) | project DatabaseName, TableName, SizeinGB
内容的提问来源于stack exchange,提问作者Brahmaiah Takkellapati
相关产品推荐
相关产品推荐

