我在Azure Data Explorer中有两个数据集:请求和例外。我想基于动态correlationId连接这些数据集。correlationId应使用两个数据集的operation_ParentId和operation_Id列的组合生成。
下面是我尝试的查询示例:
requests
| extend correlationId = strcat('c3172da7e4803fc2', '-', operation_Id)
| join kind=inner (exceptions
| extend correlationId = strcat('c3172da7e4803fc2', '-', operation_Id)
) on correlationId
| project ProcessingDate, OpCo, Cosmos_OrderId, ReasonMessage, data, operation_ParentId, operation_Id, correlationId
| where Cosmos_OrderId contains "1983"
字符串
当我使用固定值作为correlationId的前缀时,上面的查询可以工作,但是当我尝试使用correlationId = strcat(operation_ParentId,'-',operation_Id)时,它不返回任何结果。
问题似乎是operation_ParentId对于两个数据集(请求和异常)是相同的,我不能将其用作唯一标识符。我还尝试使用Cosmos_OrderId和OpCo列,但它们在异常数据集中不可用。
有没有一种方法可以创建一个动态correlationId,将两个数据集的operation_ParentId和operation_Id结合起来,并使用它来有效地连接数据集?我知道笛卡尔连接可能是资源密集型的,所以我愿意探索其他方法来提高连接效率。
任何关于如何使用Kusto实现此连接的帮助或建议都将不胜感激。谢谢你,谢谢
1条答案
按热度按时间waxmsbnn1#
我在我的环境中尝试了你的场景,它对我来说工作得很好。
我取了两个样本数据集,并能够基于动态correlationId连接这两个数据集。
我的密码:
字符串
您还可以看到两个数据集的内部联接和动态列。
的数据
重新检查数据集数据,确保
operation_ParentId
列是字符串类型。尝试通过添加一些列(如operation_ParentId
)来执行相同的操作,并检查结果是否相同。