Kusto通过嵌套的摘要/联接对策略行为进行洗牌

问题描述

在提高Kusto查询性能时,我遇到了用于合并/汇总的混洗策略。我可以清楚地看到此策略对查询性能好处,因为该键的联接/汇总键基数很高。

在阅读shuffle query Kusto documentation时,似乎似乎有嵌套的洗牌运算符会忽略该策略。

当洗牌运算符具有其他可洗牌运算符(例如汇总或联接)时,查询将变得更加复杂,然后将不会使用hint.strategy = shuffle。

我的查询使用嵌套的摘要和联接(带有随机播放),但我也清楚地看到了性能提升。我的查询模式:

Table1
| summarize hint.strategy=shuffle arg_max(Timestamp) by Device,Interface
| join hint.strategy=shuffle (Table2) on Device,Interface

这样的查询是否受益于改组?

此外,如果始终存在Kusto查询计划程序,是否可以避免任何有问题的混洗?基本上,我想放心,可能只有PERF问题使用了错误的使用/创作,而不是数据问题。

解决方法

请注意,随机查询的文章建议在您嵌套了summary / join运算符的情况下使用hint.shufflekey,但它要求嵌套的summary / join运算符具有相同的group-by / join键。

因此,在上面的示例中,请应用以下内容(我假设设备具有较高的基数(并且您可以从摘要中删除/保留随机播放策略,只要您保持/删除该策略都是相同的行为,在连接此摘要的连接上指定随机键):

表1 |按设备,接口汇总arg_max(Timestamp) |在设备,接口上加入hint.shufflekey =设备(Table2)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...