簡體   English   中英

如何在 Kusto 中使用物化?

[英]How to make use of materialize in Kusto?

我有一個 function 叫做 consumption,它有 4 個參數,最后通過 Name 總結一個值。 從這個 function 我試圖具體化一些公式,從而獲得更好的查詢性能。

例如:

let firstFormula = materialize (
    consumption("ID", "scale", "node", 100.0)
);

let secondformula = materialize (
    consumption("ID", "scale", "node", 60.0)
);

然后我創建了一個公式,它將來自第一個公式的值除以來自第二個公式的值。

let thirdFormula =  view (){
union 
    firstformula,
    secondformula
    | summarize 
        value1 = max(case(Name == "ABCD", todouble(Value), 0.0)),
        value2 = max(case(Name == "EFGH", todouble(Value), 0.0))
    | project Value = round(value1 / value2 * 100.0, 2)
};

為了檢查 CPU 性能,我首先在不使用物化 function 的情況下測試了公式。 然后我使用物化對其進行了測試。 我最終從不使用物化的人那里獲得了更好的表現。 我在這里做錯了什么嗎? 我是否以錯誤的方式使用了物化 function?

materialize() function 可用於緩存將在后續查詢語句中使用的查詢結果,例如,如果您有一個組織的匯總,然后有一列顯示它占總數的百分比,在這種情況下具體化結果聚合然后計算總數,將顯着減少(可能幾乎一半)處理時間,例如:

let Agg = materialize(T | filter | summarize sum(Value) by Org);
let total_sum = toscalar(Agg | summarize sum(sum_Value))
Agg
| extend PercentOfTotal = sum_Value/total_sum

在您的情況下,您似乎正在具體化處理每一行的結果,但之后從未多次使用具體化數據來證明緩存成本的合理性,這導致了更高的查詢成本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM