我有一個昂貴的查詢,需要大量的 CPU 和記憶體才能產生結果。但是,結果資料集僅包含有限數量的行。
let result = expensive_function()
| summarize A=xxx, B=xxx by X, Y, Z;
我想從結果中附加另一行進一步總結。例如,省略Z匯總鍵中的列,并Z="ALL"為結果行設定。
result
| union (
result
| summarize A=XXX, B=XXX by X, Y
| extend Z="ALL"
)
執行此操作時,Kusto 似乎會擴展并expensive_function()在運算子中并行執行union,這會導致 CPU 和記憶體消耗增加一倍。
我嘗試添加hint.concurrency=1到union運算子,這將減少峰值記憶體與單個結果查詢相同,但是執行時間將增加一倍。
我們能否給 Kusto 一個提示,我們需要凍結中間結果,并且所有后續查詢都應??該對凍結的中間結果進行操作,而不是從源頭計算全部?
uj5u.com熱心網友回復:
使用 materialize() 函式:
let result = materialize(expensive_function()
| summarize A=xxx, B=xxx by X, Y, Z);
result
| union (
result
| summarize A=XXX, B=XXX by X, Y
| extend Z="ALL"
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446791.html
上一篇:@azure/storage-blob的BlockBlobClient.uploadData默認使用什么HTTP動詞?
