如何解决为什么对 extents_tags() 的过滤很慢
为什么下面的命令很慢(5 分钟)?
mytable | where extent_tags() contains "20210613" | count
我知道这不是获得 count 的最佳方法,我可以使用 .show table extents
并且可以使用 sum(RowCount)
运算符简单地计算 summarize
。但我只是在测试。理想情况下,ADX 应该能够跨范围搜索标签并获取计数,因此它只是元数据搜索,一旦找到正确的范围,行数无论如何都已经作为范围元数据的一部分存储了,那么为什么要花 5 分钟呢?并且,我感兴趣的范围具有以下标签:-
drop-by:20210613
ingest-by:20210613
表中有一个日期时间字段,我也可以用来过滤,这是 adx 在一般情况下理想地推荐的,我可以猜测表中每个日期时间字段的最小值和最大值存储在每个表的范围——但类似地,甚至标签也存储在每个范围中。那么哪种方法更有效,过滤日期时间字段(如果可用)或标签?
解决方法
一个。你说得对,使用 .show table T extents where tags contains 'string' | ...
会更有效率
B.如文档中所述:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/extenttagsfunction
当使用以下字符串运算符之一时,对 extent_tags()
的值进行过滤的效果最佳:has
、has_cs
、!has
、!has_cs
。
c. 哪种方法更有效,过滤日期时间字段(如果可用)或标签?
前者,尤其是当您的过滤器位于子字符串而不是标签的全部内容时。标签是分片的非索引元数据属性,不是索引数据列。另见:https://yonileibowitz.github.io/blog-posts/datetime-columns.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。