как создать пользовательские пользовательские функции сделать конкатенацию строк в Kusto - PullRequest
0 голосов
/ 12 февраля 2020

мне нужно создать массив с использованием массива, для этого я создаю следующие запросы

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)"

что мне нужно сделать, это

это значения внутри - подробности [0] .parsedStack и это из базы данных

callStack

    [
{"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)

примечания к деталям [0] .parsedStack [0 ] это словарь, но, как я пишу, время от времени я получаю ошибки, пожалуйста, помогите мне сделать это правильно

1 Ответ

0 голосов
/ 13 февраля 2020

Вы можете попробовать следующее:

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, ")")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...