Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Znajduje wiersze pasujące do predykatu w zestawie tabel.
Zakres operatora find może być również między bazami danych lub między klastrami.
find in (Table1, Table2, Table3) where Fruit=="apple"
find in (database('*').*) where Fruit == "apple"
find in (cluster('cluster_name').database('MyDB*').*) where Fruit == "apple"
find in (Table1, Table2, Table3) where Fruit=="apple"
Uwaga
find operator jest znacznie mniej wydajny niż filtrowanie tekstu specyficzne dla kolumny. Za każdym razem, gdy kolumny są znane, zalecamy użycie operatora where.
find nie działa dobrze, gdy obszar roboczy zawiera dużą liczbę tabel i kolumn, a skanowany wolumin danych jest wysoki, a zakres czasu zapytania jest wysoki.
Składnia
find[ColumnNamewithsource= ]in([)whereColumnName[project-smart|project... ] [:]]findPredykat [project-smart|projectColumnName[:ColumnType,... ] [,pack_all()]]
Dowiedz się więcej na temat konwencji składni.
Parametry
| Nazwisko | Typ | Wymagania | opis |
|---|---|---|---|
| Nazwakolumny | string |
Domyślnie dane wyjściowe zawierają kolumnę o nazwie source_, której wartości wskazują, która tabela źródłowa przyczyniła się do każdego wiersza. W przypadku określenia parametru Nazwakolumny jest używana zamiast source_. Po dopasowaniu symboli wieloznacznych, jeśli zapytanie odwołuje się do tabel z więcej niż jednej bazy danych, łącznie z domyślną bazą danych, wartość tej kolumny ma nazwę tabeli kwalifikowaną z bazą danych. Podobnie klastra i kwalifikacje bazy danych znajdują się w wartości, jeśli odwołano się do więcej niż jednego klastra. | |
| Predykat | bool |
✔️ | To wyrażenie logiczne jest obliczane dla każdego wiersza w każdej tabeli wejściowej. Aby uzyskać więcej informacji, zobacz szczegóły składni predykatu. |
| Tabele | string |
Zero lub więcej odwołań do tabeli rozdzielanych przecinkami. Domyślnie find wyszukuje wszystkie tabele w bieżącej bazie danych. Możesz użyć:1. Nazwa tabeli, na przykład Events2. Wyrażenie zapytania, takie jak (Events | where id==42)3. Zestaw tabel określonych z symbolem wieloznacznymi. Na przykład E* może utworzyć związek wszystkich tabel w bazie danych, których nazwy zaczynają się od E. |
|
project-smart lub project |
string |
Jeśli nie zostanie określony, project-smart jest używany domyślnie. Aby uzyskać więcej informacji, zobacz szczegóły schematu wyjściowego. |
withsource=Nazwakolumny: opcjonalnie. Domyślnie dane wyjściowe zawierają kolumnę o nazwie source_, której wartości wskazują, która tabela źródłowa przyczyniła się do każdego wiersza. W przypadku określenia parametru Nazwakolumny jest używana zamiast source_.Predykat:
booleanwyrażenie dla kolumn tabel,, ...]. Jest on oceniany dla każdego wiersza w każdej tabeli wejściowej. Aby uzyskać więcej informacji, zobacz szczegóły składni predykatu.Tabele: opcjonalne. Zero lub więcej odwołań do tabeli rozdzielanych przecinkami. Domyślnie znaleźć wyszukuje wszystkie tabele:
- Nazwa tabeli, na przykład
Events - Wyrażenie zapytania, takie jak
(Events | where id==42) - Zestaw tabel określonych z symbolami wieloznacznymi. Na przykład może utworzyć związek wszystkich tabel,
E*których nazwy zaczynają się odE.
- Nazwa tabeli, na przykład
project-smart|project: jeśli nie określonoproject-smartjest używana domyślnie. Aby uzyskać więcej informacji, zobacz szczegóły schematu wyjściowego.
Zwraca
Przekształcanie wierszy w , ...], dla których , to . Wiersze są przekształcane zgodnie ze schematem danych wyjściowych.
Schemat danych wyjściowych
kolumna source_
Dane wyjściowe operatora find zawsze zawierają kolumnę source_ z nazwą tabeli źródłowej. Nazwę kolumny można zmienić przy użyciu parametru withsource .
kolumny wyników
Tabele źródłowe, które nie zawierają żadnej kolumny używanej przez ocenę predykatu, są filtrowane.
W przypadku używania project-smartkolumny wyświetlane w danych wyjściowych to:
- Kolumny, które są wyświetlane jawnie w predykacie.
- Kolumny wspólne dla wszystkich filtrowanych tabel.
Pozostałe kolumny są pakowane do torby właściwości i pojawiają się w dodatkowej kolumnie pack.
Kolumna, do którego odwołuje się jawnie predykat i pojawia się w wielu tabelach z wieloma typami, ma inną kolumnę w schemacie wyników dla każdego takiego typu. Każda z nazw kolumn jest tworzona z oryginalnej nazwy i typu kolumny oddzielonej podkreśleniami.
W przypadku korzystania z kolumny ColumnNameproject
- Tabela wyników zawiera kolumny określone na liście. Jeśli tabela źródłowa nie zawiera określonej kolumny, wartości w odpowiednich wierszach mają wartość null.
- Po określeniu ColumnType z Nazwakolumnyta kolumna w wyniku ma podany typ, a wartości są rzutowane do tego typu, jeśli jest to konieczne. Rzutowanie nie ma wpływu na typ kolumny podczas obliczania predykatu.
- Gdy
pack_all()jest używana, wszystkie kolumny, w tym przewidywane kolumny, są pakowane do torby właściwości i pojawiają się w dodatkowej kolumnie, domyślnie "column1". W torbie właściwości nazwa kolumny źródłowej służy jako nazwa właściwości, a wartość kolumny służy jako wartość właściwości.
Składnia predykatu
Operator find obsługuje alternatywną składnię terminu * has i używa tylko terminu, wyszukuje termin we wszystkich kolumnach wejściowych.
Aby zapoznać się z podsumowaniem niektórych funkcji filtrowania, zobacz , gdzie operator.
Zagadnienia dotyczące
- Jeśli klauzula
projectodwołuje się do kolumny, która pojawia się w wielu tabelach i ma wiele typów, typ musi postępować zgodnie z tym odwołaniem do kolumny w klauzuli projektu - Jeśli kolumna jest wyświetlana w wielu tabelach i ma wiele typów i
project-smartjest używana, istnieje odpowiednia kolumna dla każdego typu w wynikufind, zgodnie z opisem w union - W przypadku używania inteligentnego projektu zmiany w predykacie w zestawie tabel źródłowych lub w schemacie tabel mogą spowodować zmianę schematu wyjściowego. Jeśli wymagany jest stały schemat wyników, użyj projektu zamiast tego
-
findzakres nie może zawierać funkcji. Aby uwzględnić funkcję w zakresiefind, zdefiniuj instrukcję let za pomocą słowa kluczowego view.
Wskazówki dotyczące wydajności
- Używaj tabel w przeciwieństwie do wyrażeń tabelarycznych.
Jeśli wyrażenie tabelaryczne, operator find powraca do
unionzapytania, które może spowodować obniżenie wydajności. - Jeśli kolumna wyświetlana w wielu tabelach i ma wiele typów, jest częścią klauzuli projektu, preferuj dodanie typu ColumnType do klauzuli projektu w celu zmodyfikowania tabeli przed przekazaniem jej do
findelementu . - Dodaj filtry oparte na czasie do predykatu. Użyj wartości kolumny data/godzina lub ingestion_time().
- Wyszukaj w określonych kolumnach, a nie w wyszukiwaniu pełnotekstowym.
- Lepiej nie odwoływać się do kolumn, które pojawiają się w wielu tabelach i mają wiele typów. Jeśli predykat jest prawidłowy podczas rozpoznawania takich kolumn dla więcej niż jednego typu, zapytanie wraca do unii.
Zobacz na przykład przykłady przypadków, w których
finddziała jakounii .
Przykłady
Przykłady ogólne
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel w bieżącej bazie danych, w której każda kolumna zawiera wyraz Hernandez. Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych. Dane wyjściowe zawierają wiersze z Customers tabeli i SalesTable tabeli ContosoSales bazy danych.
find "Hernandez"
Wyjście
W tej tabeli przedstawiono pierwsze trzy wiersze danych wyjściowych.
| źródło_ | paczka_ |
|---|---|
| Klientela | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":5023,"Education":"Partial High School","FirstName":"Devin","Gender":"M","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Clerical","RegionCountryName":"United States","StateProvinceName":"Washington"} |
| Klientela | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":7814,"Education":"Partial College","FirstName":"Kristy","Gender":"F","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Professional","RegionCountryName":"United States","StateProvinceName":"Washington"} |
| Klientela | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":7888,"Education":"Partial High School","FirstName":"Kari","Gender":"F","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Clerical","RegionCountryName":"United States","StateProvinceName":"Washington"} |
| ...\ | ...\ |
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel w bieżącej bazie danych, których nazwa zaczyna się od C, i w której każda kolumna zawiera wyraz Hernandez. Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych. Teraz dane wyjściowe zawierają tylko rekordy z Customers tabeli.
find in (C*) where * has "Hernandez"
Wyjście
W tej tabeli przedstawiono pierwsze trzy wiersze danych wyjściowych.
| źródło_ | paczka_ |
|---|---|
| KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| KonferencjaSesje | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: szczegółowe omówienie języka zapytań usługi Azure Kusto. ","session_type":"Theater","owner":"Jean Francois Berenguer","uczestnicy":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329","level":300,"session_location":"","starttime":null,"duration":null,"time_and_duration":"","kusto_affinity":"Focused"} |
| KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| ...\ | ...\ |
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel we wszystkich bazach danych w klastrze, w którym każda kolumna zawiera wyraz Kusto.
To zapytanie jest zapytaniem między bazami danych .
Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych.
find in (database('*').*) where * has "Kusto"
Wyjście
W tej tabeli przedstawiono pierwsze trzy wiersze danych wyjściowych.
| źródło_ | paczka_ |
|---|---|
| database("Samples"). KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| database("Samples"). KonferencjaSesje | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: szczegółowe omówienie języka zapytań usługi Azure Kusto. ","session_type":"Theater","owner":"Jean Francois Berenguer","uczestnicy":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329","level":300,"session_location":"","starttime":null,"duration":null,"time_and_duration":"","kusto_affinity":"Focused"} |
| database("Samples"). KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| ...\ | ...\ |
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel, których nazwa zaczyna się od we wszystkich bazach danych, których nazwa zaczyna się K od B i w której każda kolumna zawiera wyraz Kusto.
Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych.
find in (database("S*").C*) where * has "Kusto"
Wyjście
W tej tabeli przedstawiono pierwsze trzy wiersze danych wyjściowych.
| źródło_ | paczka_ |
|---|---|
| KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| KonferencjaSesje | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","uczestnicy":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.00000Z","duration":60,"time_and_duration":"Środa, 26 maja\n8:30–9:30 GMT","kusto_affinity":"Focused"} |
| ...\ | ...\ |
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel, których nazwa zaczyna się od we wszystkich bazach danych, których nazwa zaczyna się K od B i w której każda kolumna zawiera wyraz Kusto.
Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych.
find in (cluster("cluster1").database("B*").K*, cluster("cluster2").database("C*".*))
where * has "Kusto"
Poniższy przykład znajduje wszystkie wiersze ze wszystkich tabel, w których każda kolumna zawiera wyraz Kusto.
Wynikowe rekordy są przekształcane zgodnie ze schematem danych wyjściowych.
find "Kusto"
Przykłady wyników wyjściowych find
Załóżmy, że mamy następną zawartość tych dwóch tabel:
EventTable1
| Session_Id | Poziom | Tekst Wydarzenia | Wersja |
|---|---|---|---|
| acbd207d-51aa-4df7-bfa7-be70eb68f04e | Informacja | Tekst1 | Wersja 1.0.0 |
| acbd207d-51aa-4df7-bfa7-be70eb68f04e | Błąd | Część tekstu2 | Wersja 1.0.0 |
| 28b8e46e-3c31-43cf-83cb-48921c3986fc | Błąd | Tekst3 | Wersja 1.0.1 |
| 8f057b11-3281-45c3-a856-05ebb18a3c59 | Informacja | Tekst4 | wersja 1.1.0 |
EventTable2
| Session_Id | Poziom | Tekst Wydarzenia | Nazwa wydarzenia |
|---|---|---|---|
| f7d5f95f-f580-4ea6-830b-5776c8d64fdd | Informacja | Inny tekst1 | Zdarzenie1 |
| acbd207d-51aa-4df7-bfa7-be70eb68f04e | Informacja | Inny tekst2 | Zdarzenie 2 |
| acbd207d-51aa-4df7-bfa7-be70eb68f04e | Błąd | Inny tekst3 | Zdarzenie 3 |
| 15eaeab5-8576-4b58-8fc6-478f75d8fee4 | Błąd | Inny tekst4 | Zdarzenie4 |
Poniższy przykład wyszukuje określone rekordy w tabeli EventsTable1 i EventsTable2 na podstawie danego Session_Id i poziomu błędu . Następnie projektuje trzy określone kolumny: EventText, Versioni EventNamei pakuje wszystkie pozostałe kolumny do obiektu dynamicznego.
find in (EventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' and Level == 'Error'
project EventText, Version, EventName, pack_all()
Wyjście
| źródło_ | Tekst Wydarzenia | Wersja | Nazwa wydarzenia | paczka_ |
|---|---|---|---|---|
| EventTable1 | Część tekstu2 | Wersja 1.0.0 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} | |
| EventTable2 | Inny tekst3 | Zdarzenie 3 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} |
Poniższy przykład wyszukuje rekordy, które mają wersję "v1.0.0" lub EventName jako "Event1 ", a następnie projektuje cztery określone kolumny: Session_Id, EventText, Version i EventName z tych filtrowanych wyników.
find Version == 'v1.0.0' or EventName == 'Event1' project Session_Id, EventText, Version, EventName
Wyjście
| źródło_ | Session_Id | Tekst Wydarzenia | Wersja | Nazwa wydarzenia |
|---|---|---|---|---|
| EventTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Tekst1 | Wersja 1.0.0 | |
| EventTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Część tekstu2 | Wersja 1.0.0 | |
| EventTable2 | f7d5f95f-f580-4ea6-830b-5776c8d64fdd | Inny tekst1 | Zdarzenie1 |
Uwaga
W praktyce wiersze EventsTable1 są filtrowane przy użyciu predykatu Version == 'v1.0.0', a wiersze EventsTable2 są filtrowane przy użyciu predykatu EventName == 'Event1'.
W poniższym przykładzie baza danych wyszukuje wszystkie rekordy z Session_Id zgodnym z elementem "acbd207d-51aa-4df7-bfa7-be70eb68f04e". Pobiera rekordy ze wszystkich tabel i kolumn zawierających tę konkretną Session_Id.
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
Wyjście
| źródło_ | Session_Id | Poziom | Tekst Wydarzenia | paczka_ |
|---|---|---|---|---|
| EventTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Informacja | Tekst1 | {"Version":"v1.0.0"} |
| EventTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Błąd | Część tekstu2 | {"Version":"v1.0.0"} |
| EventTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Informacja | Inny tekst2 | {"EventName":"Event2"} |
| EventTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Błąd | Inny tekst3 | {"EventName":"Event3"} |
W poniższym przykładzie baza danych wyszukuje rekordy z określonym Session_Id i zwraca wszystkie kolumny tych rekordów jako pojedynczy obiekt dynamiczny.
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' project pack_all()
Wyjście
| źródło_ | paczka_ |
|---|---|
| EventTable1 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Information", "EventText":"Some Text1", "Version":"v1.0.0"} |
| EventTable1 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error", "EventText":"Some Text2", "Version":"v1.0.0"} |
| EventTable2 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Information", "EventText":"Some Other Text2", "EventName":"Event2"} |
| EventTable2 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error", "EventText":"Some Other Text3", "EventName":"Event3"} |
Przykłady przypadków, w których find działa jako unia
Operator find w usłudze Kusto może czasami działać jak operator union, głównie wtedy, gdy jest używany do wyszukiwania w wielu tabelach.
Poniższy przykład najpierw tworzy widok, który filtruje tabelę EventsTable1 w celu uwzględnienia tylko rekordów na poziomie błędu. Następnie wyszukuje je w tym filtrowanych widokach i tabeli EventsTable2 dla rekordów z określonym Session_Id.
let PartialEventsTable1 = view() { EventsTable1 | where Level == 'Error' };
find in (PartialEventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
W poniższych przykładach pokazano, jak find operator może działać jako union kolumna, gdy kolumna jest wyświetlana w wielu tabelach z różnymi typami. W takim przypadku kolumna ProcessId znajduje się zarówno w tabeli Table1 , jak i Table2, ale z różnymi typami.
W tym przykładzie utwórz dwie tabele, uruchamiając polecenie:
.create tables
Table1 (Level:string, Timestamp:datetime, ProcessId:string),
Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
- Następujące zapytanie jest wykonywane jako
union.
find in (Table1, Table2) where ProcessId == 1001
Schemat wyniku wyjściowego jest (Level:string, Timestamp, ProcessId_string, ProcessId_int).
- Następujące zapytanie jest wykonywane jako
union, ale generuje inny schemat wyników.
find in (Table1, Table2) where ProcessId == 1001 project Level, Timestamp, ProcessId:string
Schemat wyniku wyjściowego jest (Level:string, Timestamp, ProcessId_string)