首页 > 解决方案 > Kusto:从查询中摄取

问题描述

大家好 ,

我目前正在尝试使用批处理操作来摄取数据。我的查询是这样写的:

.set-or-append tableName with (folder = "rocky")<|
let _Scope = () {
    let N = 4;
    range p from 0 to N-1 step 1
    | partition by p
    {
        functionName((list_of_ids()
        | where hash(something, N) == toscalar(p)), datetime(2020-05-03))
        | extend
            batch_num = toscalar(p)
    }
};
union (_Scope())

我想了解这是否会为每个分区并行运行或按顺序运行?如果并行,我怎样才能更好地优化它?. 任何帮助深表感谢。

标签: azure-data-explorerkql

解决方案


partition运算符(您在函数中使用)允许您提供shint来控制并发:

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/partitionoperator

在此处输入图像描述

无论如何,根据具体functionName()情况(原始问题中未提及),您可以考虑使用以下distributed选项:

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/management/data-ingestion/ingest-from-query

distributed当查询产生的数据量很大(超过 1GB 的数据)并且查询不需要序列化(以便多个节点可以并行产生输出)时,将标志设置为 true 很有用。当查询结果很小时,不建议使用此标志,因为它可能会产生大量不必要的小数据分片。


推荐阅读