azure - 如何创建用户用户定义函数在 kusto 中进行字符串连接
问题描述
我需要使用数组创建一个我为此创建以下查询
let MyDistinct = (T:(table:dynamic)) {
range x from 0 to array_length(table) step 1
T | extend strcat_array(details[0].parsedStack[x].method,'(',details[0].parsedStack[x].assembly,')')
};
let T1 = MyDistinct((exceptions | extend itemType =iif(itemType=='exception',itemType,"") | where itemType=='exception' and type == "System.Web.HttpException" | where timestamp >= ago(7d) | project callStack=details[0].parsedStack));
union
(T1),
(T2| project outerMessage,type,problemId,outerAssembly,itemType,operation_Name,operation_Id,operation_ParentId,client_Type,client_IP,cloud_RoleInstance,assembly)
我需要将 details[0].parsedStack[x] 值作为字符串放入以下格式 xxx_(xxx)"System.Web.Mvc.DefaultControllerFactory.GetControllerInstance (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)"
我需要做的是
这是里面的值 - details[0].parsedStack 这来自数据库
调用栈
[
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.DefaultControllerFactory.GetControllerInstance","level":0,"line":0},
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.DefaultControllerFactory.CreateController","level":1,"line":0},
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.ProcessRequestInit","level":2,"line":0},
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.BeginProcessRequest","level":3,"line":0},
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.BeginProcessRequest","level":4,"line":0},
{"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest","level":5,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute","level":6,"line":0},{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+<>c__DisplayClass285_0.<ExecuteStepImpl>b__0","level":7,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+StepInvoker.Invoke","level":8,"line":0},{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+StepInvoker+<>c__DisplayClass4_0.<Invoke>b__0","level":9,"line":0},
{"assembly":"Microsoft.AspNet.TelemetryCorrelation, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule.OnExecuteRequestStep","level":10,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+<>c__DisplayClass284_0.<OnExecuteRequestStep>b__0","level":11,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+StepInvoker.Invoke","level":12,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication.ExecuteStepImpl","level":13,"line":0},
{"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication.ExecuteStep","level":14,"line":0}
]
我想将上面的 Jason 数组制作成以下格式
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(System.Web.Mvc,版本=4.0.0.1,文化=中性,PublicKeyToken=31bf3856ad364e35)
xxxxx (x,x,x)
xxxxx (x,x,x)
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.Mvc.DefaultControllerFactory.CreateController (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.Mvc.MvcHandler.ProcessRequestInit (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest (System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication+<>c__DisplayClass285_0.<ExecuteStepImpl>b__0 (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication+StepInvoker.Invoke (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication+StepInvoker+<>c__DisplayClass4_0.<Invoke>b__0 (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule.OnExecuteRequestStep (Microsoft.AspNet.TelemetryCorrelation, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
System.Web.HttpApplication+<>c__DisplayClass284_0.<OnExecuteRequestStep>b__0 (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication+StepInvoker.Invoke (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication.ExecuteStepImpl (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.Web.HttpApplication.ExecuteStep (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
注意 details[0].parsedStack[0] 是一本字典,但是我写的方式我有时会出错,请帮我解决这个问题
解决方案
您可以尝试以下方法:
datatable(d:dynamic)
[
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.DefaultControllerFactory.GetControllerInstance","level":0,"line":0}),
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.DefaultControllerFactory.CreateController","level":1,"line":0}),
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.ProcessRequestInit","level":2,"line":0}),
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.BeginProcessRequest","level":3,"line":0}),
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.BeginProcessRequest","level":4,"line":0}),
dynamic({"assembly":"System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest","level":5,"line":0}),
dynamic({"assembly":"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute","level":6,"line":0})
]
| project result = strcat(d.method, "(", d.assembly, ")")
推荐阅读
- file - 打开文件资源管理器按日期显示
- java - 如何使Java进程使用多个CPU内核
- sql - 如何在 PL SQL 中使用 Replace/Substitution 函数
- android - 当用户单击我的应用程序中的按钮时,如何自动向自己发送电子邮件?
- macos - 为什么在 Mac 上 Angular 安装问题和权限失败?
- arrays - 将变量列表转换为数组
- python - TF 2.0 while_loop 和 parallel_iterations
- amazon-web-services - 是否可以从 AWS S3 批量下载?
- python - 根据请求触发 VS Code python 调试器
- java - Tika - 内存不足异常