parse-where operátor
Kiértékel egy sztringkifejezést, és az értékét egy vagy több számított oszlopba elemzi. Az eredmény csak a sikeresen elemezt sztringek.
parse-where
A sztringeket ugyanúgy elemzi, mint az elemzést, és kiszűri azokat a sztringeket, amelyeket nem sikerült elemezni.
Lásd az elemzési operátort, amely null értékeket állít elő a sikertelenül elemezett sztringekhez.
Syntax
T| parse-where
[kind=
kind [flags=
regexFlags]] kifejezéswith
*
(stringConstantcolumnName [:
columnType]) *
...
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
T | string |
✔️ | Az elemezni kívánt táblázatos bemenet. |
Fajta | string |
✔️ | Az egyik támogatott fajtaérték. Az alapértelmezett érték simple . |
regexFlags | string |
Ha a típus , regex akkor megadhat regex jelzőket, például U nem elfogadott, többsoros módhoz, m s új sor \n egyeztetéséhez és kis- és i nagybetűk megkülönböztetéséhez. További jelzők a jelölők között találhatók. |
|
expression | string |
✔️ | Sztringre kiértékelt kifejezés. |
stringConstant | string |
✔️ | Egy sztringállandó, amelynek keresésére és elemzésére van sor. |
columnName | string |
✔️ | A sztringkifejezésből kinyert érték hozzárendeléséhez tartozó oszlop neve. |
columnType | string |
A skaláris érték, amely azt jelzi, hogy milyen típusúra szeretné konvertálni az értéket. Az alapértelmezett érték a string . |
Megjegyzés
- Ha egyes oszlopokat is szeretne elvetni vagy átnevezni, használja a projectet .
- Használja
*
a mintában a levélszemétértékek kihagyásához. Ez az érték oszlop utánstring
nem használható. - Az elemzési minta a StringConstant mellett a ColumnName értékkel is kezdődhet.
- Ha az elemzett kifejezés nem típus
string
, akkor a program a következő típusrastring
konvertálja: .
Támogatott típusértékek
Szöveg | Description |
---|---|
simple |
Ez az alapértelmezett érték. a stringConstant egy normál sztringérték, és az egyezés szigorú. Az összes sztringelválasztónak meg kell jelennie az elemzett sztringben, és minden kiterjesztett oszlopnak meg kell egyeznie a szükséges típusokkal. |
regex |
stringConstant lehet egy reguláris kifejezés, és az egyezés szigorú. Az összes sztringelválasztónak, amely regex lehet ehhez a módhoz, meg kell jelennie az elemzett sztringben, és minden kiterjesztett oszlopnak meg kell egyeznie a szükséges típusokkal. |
Regex mód
Regex módban az elemzés regexre fordítja a mintát, és reguláris kifejezéseket használ az egyeztetéshez a belsőleg kezelt számozott rögzített csoportok használatával. Például:
parse-where kind=regex Col with * <regex1> var1:string <regex2> var2:long
A belső elemzés által generált regex a ..*?<regex1>(.*?)<regex2>(\-\d+)
*
lefordítva a(z) kifejezésre.*?
.string
lefordítva a(z) kifejezésre.*?
.long
lefordítva a(z) kifejezésre\-\d+
.
Válaszok
A bemeneti tábla, amely az operátornak biztosított oszlopok listájának megfelelően van kiterjesztve.
Megjegyzés
Csak a sikeresen elemzett sztringek lesznek a kimenetben. A rendszer kiszűri azokat a sztringeket, amelyek nem felelnek meg a mintának.
Példák
Az parse-where
operátor leegyszerűsített módszert kínál a táblákhoz extend
, ha több extract
alkalmazást használ ugyanazon string
a kifejezésen. Ez akkor hasznos, ha a táblázat olyan oszlopot string
tartalmaz, amely több értéket tartalmaz, amelyeket egyes oszlopokra szeretne bontani. Feloszthat például egy fejlesztői nyomkövetési ("printf
/"Console.WriteLine
") utasítással létrehozott oszlopot.
Az parse
használata
Az alábbi példában a tábla Traces
oszlopa EventText
az űrlap Event: NotifySliceRelease (resourceName={0}, totalSlices= {1}, sliceNumber={2}, lockTime={3}, releaseTime={4}, previousLockTime={5})
sztringeit tartalmazza. Az alábbi művelet hat oszlopból áll: resourceName
, , totalSlices
, sliceNumber
, releaseTime
lockTime
, , previousLockTime
, Month
és Day
.
Néhány sztringnek nincs teljes egyezése.
A használatával parse
a számított oszlopok null értékűek lesznek.
let Traces = datatable(EventText: string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=invalid_number, 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=invalid_datetime, 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=invalid_number, 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=" previouLockTime: date ")" *
| project
resourceName,
totalSlices,
sliceNumber,
lockTime,
releaseTime,
previouLockTime
Kimenet
resourceName | totalSlices | sliceNumber | lockTime | releaseTime | previousLockTime |
---|---|---|---|---|---|
PipelineScheduler | 27 | 20 | 02/17/2016 08:40:01 | 2016-02-17 08:40:01.0000000 | 2016-02-17 08:39:01.0000000 |
PipelineScheduler | 27 | 22 | 02/17/2016 08:41:01 | 2016-02-17 08:41:00.0000000 | 2016-02-17 08:40:01.0000000 |
Az parse-where
használata
A "parse-where" használatával kiszűri a sikertelenül elemzett sztringeket az eredményből.
let Traces = datatable(EventText: string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=27, sliceNumber=invalid_number, 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=invalid_datetime, 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=invalid_number, 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-where 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
Kimenet
resourceName | totalSlices | sliceNumber | lockTime | releaseTime | previousLockTime |
---|---|---|---|---|---|
PipelineScheduler | 27 | 20 | 02/17/2016 08:40:01 | 2016-02-17 08:40:01.0000000 | 2016-02-17 08:39:01.0000000 |
PipelineScheduler | 27 | 22 | 02/17/2016 08:41:01 | 2016-02-17 08:41:00.0000000 | 2016-02-17 08:40:01.0000000 |
Regex mód regex jelzőkkel
A resourceName és a totalSlices lekérdezéséhez használja a következő lekérdezést:
let Traces = datatable(EventText: string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=non_valid_integer, sliceNumber=11, 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=non_valid_integer, sliceNumber=44, 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-where kind = regex EventText with * "RESOURCENAME=" resourceName "," * "totalSlices=" totalSlices: long "," *
| project resourceName, totalSlices
Kimenet
resourceName | totalSlices |
---|---|
parse-where
kis- és nagybetűket nem megkülönböztető regex jelzővel
A fenti lekérdezésben az alapértelmezett mód megkülönböztette a kis- és nagybetűket, így a sztringek elemzése sikerült. Nem kapott eredményt.
A szükséges eredmény lekéréséhez futtassa a parancsot parse-where
egy kis- és nagybetűket nem megkülönböztető (i
) regex jelzővel.
Csak három sztring lesz sikeresen elemezve, így az eredmény három rekord (egyes totalSlices érvénytelen egész számokat tartalmaz).
let Traces = datatable(EventText: string)
[
"Event: NotifySliceRelease (resourceName=PipelineScheduler, totalSlices=non_valid_integer, sliceNumber=11, 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=non_valid_integer, sliceNumber=44, 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-where kind = regex flags=i EventText with * "RESOURCENAME=" resourceName "," * "totalSlices=" totalSlices: long "," *
| project resourceName, totalSlices
Kimenet
resourceName | totalSlices |
---|---|
PipelineScheduler | 27 |
PipelineScheduler | 27 |
PipelineScheduler | 27 |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: