Podporované funkce KQL v transformacích služby Azure Monitor
Transformace ve službě Azure Monitor umožňují spustit dotaz KQL na příchozí data služby Azure Monitor, abyste mohli filtrovat nebo upravovat příchozí data před jejich uložením v pracovním prostoru služby Log Analytics. Tento článek obsahuje podrobnosti o aspektech KQL a podporovaných funkcích v transformačních dotazech kromě speciálních operátorů, které jsou dostupné pouze v transformacích.
Vzhledem k tomu, že transformace se u každého záznamu používají jednotlivě, nemůžou používat žádné operátory KQL, které pracují s více záznamy. Podporují se jenom operátory, které jako vstup přebírají jeden řádek a nevrací více než jeden řádek. Souhrn se například nepodporuje, protože shrnuje více záznamů.
Transformace podporují pouze operátory uvedené v tomto článku. Všechny ostatní operátory, které se můžou použít v jiných dotazech protokolu, nejsou v transformacích podporované.
Speciální předpoklady
Parsovat příkaz
Příkaz analýzy v transformaci je omezený na 10 sloupců na příkaz z důvodů výkonu. Pokud transformace vyžaduje parsování více než 10 sloupců, rozdělte ho na několik příkazů, jak je popsáno v tématu Rozdělení velkých příkazů analýzy.
Zpracování dynamických dat
Zvažte následující vstup s dynamickými daty:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Pokud chcete získat přístup k vlastnostem v AdditionalContext, definujte ho jako sloupec dynamického typu ve vstupním streamu:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Obsah sloupce AdditionalContext je teď možné analyzovat a používat v transformaci KQL:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Dynamické literály
parse_json
Funkce slouží ke zpracování dynamických literálů.
Například následující dotazy poskytují stejné funkce:
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
Speciální funkce
Následující funkce jsou k dispozici pouze v transformacích. Nelze je použít v jiných dotazech protokolu.
parse_cef_dictionary
Vzhledem k řetězci obsahujícímu zprávu parse_cef_dictionary
CEF parsuje vlastnost Extension zprávy do objektu dynamického klíče/hodnoty. Středník je vyhrazený znak, který by měl být nahrazen před předáním nezpracované zprávy do metody, jak je znázorněno v příkladu.
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
Vzhledem k tomu, že se podporuje řetězec obsahující IP adresu (podporuje se protokol IPv4 a IPv6), geo_location
vrátí funkce přibližné zeměpisné umístění, včetně následujících atributů:
- Země
- Oblast
- State
- City
- Latitude
- Longitude
| extend GeoLocation = geo_location("1.0.0.5")
Důležité
Vzhledem k povaze služby geografické polohy IP, kterou tato funkce využívá, může při nadměrném použití zavádět latenci příjmu dat. Při použití této funkce více než několikrát pro každou transformaci buďte opatrní.
Podporované příkazy
Příkaz let
Pravou stranou let
může být skalární výraz, tabulkový výraz nebo uživatelsky definovaná funkce. Podporují se pouze uživatelem definované funkce s skalárními argumenty.
Příkazy tabulkových výrazů
Jediné podporované zdroje dat pro příkaz KQL v transformaci jsou následující:
zdroj, který představuje zdrojová data. Příklad:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Message
print
operátor, který vždy vytvoří jeden řádek. Příklad:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Podporované tabulkové operátory
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(místo column_ifexists použijte columnifexisty).
Podporované skalární operátory
- Podporují se všechny číselné operátory .
- Podporují se všechny aritmetické operátory Datetime a Timespan.
- Podporují se následující operátory string.
- `=
!=
=~
!~
contains
!contains
contains_cs
!contains_cs
has
!has
has_cs
!has_cs
startswith
!startswith
startswith_cs
!startswith_cs
endswith
!endswith
endswith_cs
!endswith_cs
matches regex
in
!in
- Podporují se následující bitové operátory .
binary_and()
binary_or()
binary_xor()
binary_not()
binary_shift_left()
binary_shift_right()
Skalární funkce
- Bitové funkce
- Převodní funkce
- Funkce DateTime a TimeSpan
- Dynamické a maticové funkce
- Matematické funkce
- Podmíněné funkce
- Řetězcové funkce
base64_encodestring
(místo base64_encode_tostring použijte base64_encodestring)base64_decodestring
(místo base64_decode_tostring použijte base64_decodestring)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
replace
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- Funkce typů
Uvozování identifikátorů
Podle potřeby použijte uvozování identifikátorů .
Další kroky
- Vytvořte pravidlo shromažďování dat a přidružení k němu z virtuálního počítače pomocí agenta služby Azure Monitor.