operador parseparse operator

Avalia uma expressão de corda e analisa o seu valor em uma ou mais colunas calculadas.Evaluates a string expression and parses its value into one or more calculated columns. As colunas calculadas terão nulos, para cordas sem sucesso.The calculated columns will have nulls, for unsuccessfully parsed strings. Para mais informações, consulte o operador de parse- onde.For more information, see the parse-where operator.

T | parse Text with "ActivityName=" name ", ActivityType=" type

SyntaxSyntax

T | parse [ [ ] ] kind=regex flags=regex_flags simple | relaxed Expressão with * (StringConstant ColumnName [ : ColumnType]) * ...T | parse [kind=regex [flags=regex_flags] |simple|relaxed] Expression with * (StringConstant ColumnName [: ColumnType]) *...

ArgumentosArguments

  • T: A tabela de entrada.T: The input table.

  • tipo:kind:

    • simples (o padrão): StringConstant é um valor de corda regular e a correspondência é rigorosa.simple (the default): StringConstant is a regular string value and the match is strict. Todos os delimiters de cordas devem aparecer na corda parsed, e todas as colunas estendidas devem corresponder aos tipos necessários.All string delimiters should appear in the parsed string, and all extended columns must match the required types.

    • Regex: StringConstant pode ser uma expressão regular e a partida é rígida.regex: StringConstant may be a regular expression and the match is strict. Todos os delimiters de cordas, que podem ser um regex para este modo, devem aparecer na corda parsed, e todas as colunas estendidas devem corresponder aos tipos necessários.All string delimiters, which can be a regex for this mode, should appear in the parsed string, and all extended columns must match the required types.

    • bandeiras: Bandeiras a utilizar no modo regex como U (Ungreedy), m (modo multi-linha), s (combinar nova \n linha), i (caso-insensível) em bandeiras RE2.flags: Flags to be used in regex mode like U (Ungreedy), m (multi-line mode), s (match new line \n), i (case-insensitive) in RE2 flags.

    • relaxado: StringConstant é um valor de corda regular e a partida é relaxada.relaxed: StringConstant is a regular string value and the match is relaxed. Todos os delimiters de cordas devem aparecer na corda parsed, mas colunas estendidas podem corresponder parcialmente aos tipos necessários.All string delimiters should appear in the parsed string, but extended columns may partially match the required types. Colunas estendidas que não correspondem aos tipos necessários obterão o valor nulo.Extended columns that didn't match the required types will get the value null.

  • Expressão: Uma expressão que avalia a uma corda.Expression: An expression that evaluates to a string.

  • Nome da coluna: O nome de uma coluna para atribuir um valor a.extraído da expressão da corda.ColumnName: The name of a column to assign a value to, extracted from the string expression.

  • ColumnType: É opcional.ColumnType: Optional. O valor escalar que indica o tipo para converter o valor para.The scalar value that indicates the type to convert the value to. O padrão é o string tipo.The default is the string type.

DevoluçõesReturns

A tabela de entrada, estendida de acordo com a lista de colunas fornecidas ao operador.The input table, extended according to the list of columns that are provided to the operator.

SugestõesTips

  • Utilize project se também quiser deixar cair ou mudar o nome de algumas colunas.Use project if you also want to drop or rename some columns.

  • Use * no padrão, para saltar valores de lixo.Use * in the pattern, to skip junk values.

    Nota

    O * não pode ser usado depois de uma coluna string tipo.The * can't be used after a string type column.

  • O padrão de parse pode começar com o Nome da Coluna e não apenas com o StringConstant.The parse pattern may start with ColumnName and not only with StringConstant.

  • Se a expressão de análise não for do string tipo, será convertida para tipo string .If the parsed Expression isn't of type string, it will be converted to type string.

  • Se o modo Regex for usado, existe uma opção para adicionar bandeiras regex para controlar todo o regex que é usado na parse.If regex mode is used, there's an option to add regex flags to control the entire regex that is used in the parse.

  • No modo regex, a análise traduzirá o padrão para um regex.In regex mode, parse will translate the pattern to a regex. Utilize a sintaxe RE2 para fazer a correspondência e utilize grupos capturados numerados que são manuseados internamente.Use RE2 syntax to do the matching, and use numbered captured groups that are handled internally. Por exemplo:For example:

    parse kind=regex Col with * <regex1> var1:string <regex2> var2:long
    

    Na declaração de parse, o regex que será gerado internamente pela parse é .*?<regex1>(.*?)<regex2>(\-\d+) .In the parse statement, the regex that will be internally generated by the parse is .*?<regex1>(.*?)<regex2>(\-\d+).

    • * foi traduzido para .*? .* was translated to .*?.

    • string foi traduzido para .*? .string was translated to .*?.

    • long foi traduzido para \-\d+ .long was translated to \-\d+.

ExemplosExamples

O parse operador fornece um caminho simplificado para uma mesa utilizando extend extract várias aplicações na mesma string expressão.The parse operator provides a streamlined way to extend a table by using multiple extract applications on the same string expression. Este resultado é útil, quando a tabela tem uma string coluna que contém vários valores que pretende quebrar em colunas individuais.This result is useful, when the table has a string column that contains several values that you want to break into individual columns. Por exemplo, uma coluna que foi produzida por uma declaração de traços de desenvolvimento printf (""/" Console.WriteLine ".For example, a column that was produced by a developer trace ("printf"/"Console.WriteLine") statement.

No exemplo abaixo, assuma que a coluna EventText de tabela contém cordas do formulário Traces Event: NotifySliceRelease (resourceName={0}, totalSlices= {1}, sliceNumber={2}, lockTime={3}, releaseTime={4}, previousLockTime={5}) .In the example below, assume that the column EventText of table Traces contains strings of the form Event: NotifySliceRelease (resourceName={0}, totalSlices= {1}, sliceNumber={2}, lockTime={3}, releaseTime={4}, previousLockTime={5}). A operação vai estender a tabela com seis colunas: resourceName , , , , , , , e totalSlices sliceNumber lockTime releaseTime previousLockTime Month Day .The operation will extend the table with six columns: resourceName, totalSlices, sliceNumber, lockTime , releaseTime, previousLockTime, Month, and Day.

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces  
| parse EventText with * "resourceName=" resourceName ", totalSlices=" totalSlices:long * "sliceNumber=" sliceNumber:long * "lockTime=" lockTime ", releaseTime=" releaseTime:date "," * "previousLockTime=" previousLockTime:date ")" *  
| project resourceName ,totalSlices , sliceNumber , lockTime , releaseTime , previousLockTime
resourceNameresourceName totalSiãostotalSlices fatiaNumbersliceNumber lockTimelockTime releaseTimereleaseTime AnteriorLockTimepreviousLockTime
PipelineSchedulerPipelineScheduler 2727 1515 02/17/2016 08:40:0002/17/2016 08:40:00 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000 2016-02-17 08:39:00.00000002016-02-17 08:39:00.0000000
PipelineSchedulerPipelineScheduler 2727 2323 02/17/2016 08:40:0102/17/2016 08:40:01 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 2727 2020 02/17/2016 08:40:0102/17/2016 08:40:01 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 2727 1616 02/17/2016 08:41:0002/17/2016 08:41:00 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000
PipelineSchedulerPipelineScheduler 2727 2222 02/17/2016 08:41:0102/17/2016 08:41:01 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000

Para o modo regexFor regex mode

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces  
| parse kind = regex EventText with "(.*?)[a-zA-Z]*=" resourceName @", totalSlices=\s*\d+\s*.*?sliceNumber=" sliceNumber:long  ".*?(previous)?lockTime=" lockTime ".*?releaseTime=" releaseTime ".*?previousLockTime=" previousLockTime:date "\\)"  
| project resourceName , sliceNumber , lockTime , releaseTime , previousLockTime
resourceNameresourceName fatiaNumbersliceNumber lockTimelockTime releaseTimereleaseTime AnteriorLockTimepreviousLockTime
PipelineSchedulerPipelineScheduler 1515 02/17/2016 08:40:00,02/17/2016 08:40:00, 02/17/2016 08:40:00,02/17/2016 08:40:00, 2016-02-17 08:39:00.00000002016-02-17 08:39:00.0000000
PipelineSchedulerPipelineScheduler 2323 02/17/2016 08:40:01,02/17/2016 08:40:01, 02/17/2016 08:40:01,02/17/2016 08:40:01, 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 2020 02/17/2016 08:40:01,02/17/2016 08:40:01, 02/17/2016 08:40:01,02/17/2016 08:40:01, 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 1616 02/17/2016 08:41:00,02/17/2016 08:41:00, 02/17/2016 08:41:00,02/17/2016 08:41:00, 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000
PipelineSchedulerPipelineScheduler 2222 02/17/2016 08:41:01,02/17/2016 08:41:01, 02/17/2016 08:41:00,02/17/2016 08:41:00, 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000

Para o modo regex usando bandeiras regexFor regex mode using regex flags

Se estiver interessado em obter apenas o nome de recurso, utilize esta consulta:If you're interested in getting the resourceName only, use this query:

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces
| parse kind = regex  EventText with * "resourceName=" resourceName ',' *
| project resourceName
resourceNameresourceName
PipelineScheduler, totalSlices=27, fatiaNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01
PipelineScheduler, totalSlices=27, fatiaNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00
PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01
PipelineScheduler, totalSlices=27, fatiaNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00
PipelineScheduler, totalSlices=27, fatiaNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00

Não terá os resultados esperados, uma vez que o modo padrão é ganancioso.You won't get the expected results, since the default mode is greedy. Se tiver alguns registos em que o nome de recurso às vezes aparece como minúscula e, por vezes, como maiúsculo, pode obter nulos por alguns valores.If you have a few records where the resourceName sometimes appears as lower-case and sometimes as upper-case, you may get nulls for some values.

Para obter o resultado desejado, faça a consulta com os não U gananciosos e desative as bandeiras de regex sensíveis a i casos.To get the wanted result, run the query with the non-greedy U, and disable case-sensitive i regex flags.

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=02/17/2016 08:40:00, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=02/17/2016 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces
| parse kind = regex flags = Ui EventText with * "RESOURCENAME=" resourceName ',' *
| project resourceName
resourceNameresourceName
PipelineSchedulerPipelineScheduler
PipelineSchedulerPipelineScheduler
PipelineSchedulerPipelineScheduler
PipelineSchedulerPipelineScheduler
PipelineSchedulerPipelineScheduler

Se a corda parsed tiver linhas novas, use a s bandeira, para analisar o texto.If the parsed string has newlines, use the flag s, to parse the text.

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler\ntotalSlices=27\nsliceNumber=23\nlockTime=02/17/2016 08:40:01\nreleaseTime=02/17/2016 08:40:01\npreviousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler\ntotalSlices=27\nsliceNumber=15\nlockTime=02/17/2016 08:40:00\nreleaseTime=02/17/2016 08:40:00\npreviousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler\ntotalSlices=27\nsliceNumber=20\nlockTime=02/17/2016 08:40:01\nreleaseTime=02/17/2016 08:40:01\npreviousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler\ntotalSlices=27\nsliceNumber=22\nlockTime=02/17/2016 08:41:01\nreleaseTime=02/17/2016 08:41:00\npreviousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler\ntotalSlices=27\nsliceNumber=16\nlockTime=02/17/2016 08:41:00\nreleaseTime=02/17/2016 08:41:00\npreviousLockTime=02/17/2016 08:40:00)"
];
Traces
| parse kind=regex flags=s EventText with * "resourceName=" resourceName:string "(.*?)totalSlices=" totalSlices:long "(.*?)lockTime=" lockTime:datetime "(.*?)releaseTime=" releaseTime:datetime "(.*?)previousLockTime=" previousLockTime:datetime "\\)" 
| project-away EventText
resourceNameresourceName totalSiãostotalSlices lockTimelockTime releaseTimereleaseTime AnteriorLockTimepreviousLockTime
PipelineSchedulerPipelineScheduler
2727 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000 2016-02-17 08:39:00.00000002016-02-17 08:39:00.0000000
PipelineSchedulerPipelineScheduler
2727 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler
2727 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler
2727 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000
PipelineSchedulerPipelineScheduler
2727 2016-02-17 08:41:01.00000002016-02-17 08:41:01.0000000 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000

Modo descontraídoRelaxed mode

Neste exemplo para o modo descontraído, a coluna estendida totalSlices deve ser do tipo long .In this example for relaxed mode, totalSlices extended column must be of type long. No entanto, na cadeia de parsed, tem o valor nãoValValue.However, in the parsed string, it has the value nonValidLongValue. Na coluna estendida releaseTime, o valor nãoValidDateTime não pode ser analisado como data .In releaseTime extended column, the value nonValidDateTime can't be parsed as datetime. Estas duas colunas estendidas obterão o valor nulo enquanto as outras, como o SliceNumber, ainda obtêm os valores corretos.These two extended columns will get the value null while the other ones, such as sliceNumber, still get the correct values.

Se utilizar o tipo de opção = simples para a mesma consulta abaixo, obterá nulo para todas as colunas estendidas.If you use option kind = simple for the same query below, you'll get null for all extended columns. Esta opção é rigorosa em colunas estendidas, e é a diferença entre o modo descontraído e simples.This option is strict on extended columns, and is the difference between relaxed and simple mode.

Nota

Em modo descontraído, as colunas estendidas podem ser parcialmente correspondidas.In relaxed mode, extended columns can be partially matched.

let Traces = datatable(EventText:string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=23, lockTime=02/17/2016 08:40:01, releaseTime=nonValidDateTime 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=15, lockTime=02/17/2016 08:40:00, releaseTime=nonValidDateTime, previousLockTime=02/17/2016 08:39:00)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=nonValidLongValue, sliceNumber=20, lockTime=02/17/2016 08:40:01, releaseTime=nonValidDateTime 08:40:01, previousLockTime=02/17/2016 08:39:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=22, lockTime=02/17/2016 08:41:01, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:01)",
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=nonValidLongValue, sliceNumber=16, lockTime=02/17/2016 08:41:00, releaseTime=02/17/2016 08:41:00, previousLockTime=02/17/2016 08:40:00)"
];
Traces
| parse kind=relaxed EventText with * "resourceName=" resourceName ", totalSlices=" totalSlices:long * "sliceNumber=" sliceNumber:long * "lockTime=" lockTime ", releaseTime=" releaseTime:date "," * "previousLockTime=" previousLockTime:date ")" *
| project-away EventText
resourceNameresourceName totalSiãostotalSlices fatiaNumbersliceNumber lockTimelockTime releaseTimereleaseTime AnteriorLockTimepreviousLockTime
PipelineSchedulerPipelineScheduler 2727 1515 02/17/2016 08:40:0002/17/2016 08:40:00 2016-02-17 08:39:00.00000002016-02-17 08:39:00.0000000
PipelineSchedulerPipelineScheduler 2727 2323 02/17/2016 08:40:0102/17/2016 08:40:01 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 2020 02/17/2016 08:40:0102/17/2016 08:40:01 2016-02-17 08:39:01.00000002016-02-17 08:39:01.0000000
PipelineSchedulerPipelineScheduler 1616 02/17/2016 08:41:0002/17/2016 08:41:00 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:00.00000002016-02-17 08:40:00.0000000
PipelineSchedulerPipelineScheduler 2727 2222 02/17/2016 08:41:0102/17/2016 08:41:01 2016-02-17 08:41:00.00000002016-02-17 08:41:00.0000000 2016-02-17 08:40:01.00000002016-02-17 08:40:01.0000000