支持的 PPL 命令 - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

支持的 PPL 命令

以下参考表显示了 D OpenSearch iscover 中支持哪些PPL命令来查询 CloudWatch 日志、Amazon S3 或安全湖中的数据,以及 L CloudWatch ogs Insights 中支持哪些PPL命令。 CloudWatch Logs Insights 中支持的PPL语法与 OpenSearch Discover 中支持的用于查询 CloudWatch 日志的语法相同,在下表中被称为 “ CloudWatch 日志”。

注意

在 S OpenSearch ervice 之外分析数据时,命令的执行方式可能与对 OpenSearch 索引执行的命令不同。

命令

PPL command 描述 CloudWatch 日志 Amazon S3 Security Lake 示例命令
字段命令 显示一组需要投影的字段。 支持的 支持的 支持的
fields field1, field2
命令在哪里

根据您指定的条件筛选数据。

支持的 支持的 支持的
where field1="success" | where field2 != "i -023fe0a90929d8822" | fields field3, col4, col5, col6 | head 1000
stats 命令

执行聚合和计算。

支持的 支持的 支持的
stats count(), count(`field1`), min(`field1`), max(`field1`), avg(`field1`) by field2 | head 1000
解析命令

从字符串中提取正则表达式(regex)模式并显示提取的模式。提取的模式可以进一步用于创建新字段或筛选数据。

支持的 支持的 支持的
parse `field1` ".*/(?<field2>[^/]+$)" | where field2 = "requestId" | fields field2, `field2` | head 1000
模式命令

从文本字段中提取日志模式并将结果附加到搜索结果中。按模式对日志进行分组可以更轻松地从大量日志数据中汇总统计数据,以进行分析和故障排除。

不支持 支持的 支持的
patterns new_field='no_numbers' pattern='[0-9]' message | fields message, no_numbers
排序命令

按字段名对显示的结果进行排序。使用 sor FieldNamet- 按降序排序。

支持的 支持的 支持的
stats count(), count(`field1`), min(`field1`) as field1Alias, max(`field1`), avg(`field1`) by field2 | sort -field1Alias | head 1000
eval 命令

修改或处理字段的值并将其存储在不同的字段中。这对于以数学方式修改列、对列应用字符串函数或对列应用日期函数非常有用。

支持的 支持的 支持的
eval field2 = `field1` * 2 | fields field1, field2 | head 20
重命名命令

重命名搜索结果中的一个或多个字段。

支持的 支持的 支持的
rename field2 as field1 | fields field1
head 命令

将显示的查询结果限制为前 N 行。

支持的 支持的 支持的
fields `@message` | head 20
grok 命令

使用基于正则表达式的 grok 模式解析文本字段,并将结果附加到搜索结果中。

支持的 支持的 支持的
grok email '.+@%{HOSTNAME:host}' | fields email
top 命令

查找字段中最常用的值。

支持的 支持的 支持的
top 2 Field1 by Field2
重复数据删除命令

根据您指定的字段删除重复的条目。

支持的 支持的 支持的
dedup field1 | fields field1, field2, field3
加入命令

将两个数据集连接在一起。

不支持 支持的 支持的
source=customer | join ON c_custkey = o_custkey orders | head 10
查找命令

通过添加或替换查询索引(维度表)中的数据来丰富您的搜索数据。您可以使用维度表中的值扩展索引的字段,在匹配查找条件时追加或替换值

不支持 支持的 支持的
where orderType = 'Cancelled' | lookup account_list, mkt_id AS mkt_code replace amount, account_name as name | stats count(mkt_code), avg(amount) by name
子查询命令 在管道处理语言 (PPL) 语句中执行复杂的嵌套查询。 不支持 支持的 支持的
where id in [ subquery source=users | where user in [ subquery source=actions | where action="login" | fields user ] | fields uid ]
罕见的命令

查找字段列表中所有字段中频率最低的值。

支持的 支持的 支持的
rare Field1 by Field2
趋势线命令 计算字段的移动平均值。 支持的 支持的 支持的
trendline sma(2, field1) as field1Alias
eventstats 命令 使用计算出的汇总统计数据丰富您的事件数据。它分析事件中的指定字段,计算各种统计度量,然后将这些结果作为新字段附加到每个原始事件中。

支持(除外count()

支持的 支持的
eventstats sum(field1) by field2
扁平化命令

展平字段,该字段必须是以下类型:struct<?,?> or array<struct<?,?>>

不支持 支持的 支持的
source=table | flatten field1
字段摘要 计算每个字段的基本统计数据(计数、非重复计数、最小值、最大值、平均值、stddev 和平均值)。 支持(每个查询一个字段) 支持的 支持的
where field1 != 200 | fieldsummary includefields=field1 nulls=true
fillnull 命令 使用您提供的值填充空字段。它可以用于一个或多个字段。 不支持 支持的 支持的
fields field1 | eval field2=field1 | fillnull value=0 field1
扩展命令 将包含多个值的字段分解为单独的行,为指定字段中的每个值创建一个新行。 不支持 支持的 支持的
expand employee | stats max(salary) as max by state, company
描述命令

获取有关表、架构和目录的结构和元数据的详细信息

不支持 支持的 支持的
describe schema.table

函数

PPL 函数 描述 CloudWatch 日志 Amazon S3 Security Lake 示例命令

PPL字符串函数

(CONCAT, CONCAT_WS, LENGTH, LOWER, LTRIM, POSITION, REVERSE, RIGHT, RTRIM, SUBSTRING, TRIM, UPPER)

中的PPL内置函数可以在PPL查询中操作和转换字符串和文本数据。例如,转换大小写、合并字符串、提取部分和清理文本。

支持的 支持的 支持的
eval col1Len = LENGTH(col1) | fields col1Len

PPL日期和时间函数

(DAY, DAYOFMONTH, DAY_OF_MONTH,DAYOFWEEK, DAY_OF_WEEK, DAYOFYEAR, DAY_OF_YEAR, DAYNAME, FROM_UNIXTIME, HOUR, HOUR_OF_DAY, LAST_DAY, LOCALTIMESTAMP, LOCALTIME, MAKE_DATE, MINUTE, MINUTE_OF_HOUR, MONTH, MONTHNAME, MONTH_OF_YEAR, NOW, QUARTER, SECOND, SECOND_OF_MINUTE, SUBDATE, SYSDATE, TIMESTAMP, UNIX_TIMESTAMP, WEEK, WEEKDAY, WEEK_OF_YEAR, DATE_ADD, DATE_SUB, TIMESTAMPADD, TIMESTAMPDIFF, UTC_TIMESTAMP, CURRENT_TIMEZONE)

用于处理和转换PPL查询中的日期和时间戳数据的内置函数。例如,date_add、date_f ormat、datediff 和当前日期

支持的 支持的 支持的
eval newDate = ADDDATE(DATE('2020-08-26'), 1) | fields newDate

PPL条件函数

(EXISTS, IF, IFNULL, ISNOTNULL, ISNULL, NULLIF)

内置函数,可对多行执行计算以生成单个汇总值。例如,总和计数平均值、最大值和最值。

支持的 支持的 支持的
eval field2 = isnull(col1) | fields field2, col1, field3

PPL数学函数

(ABS, ACOS, ASIN, ATAN, ATAN2, CEIL, CEILING, CONV, COS, COT, CRC32, DEGREES, E, EXP, FLOOR, LN, LOG, LOG2, LOG10, MOD, PI. POW, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, CBRT)

用于在PPL查询中执行数学计算和转换的内置函数。例如:abs(绝对值)、四舍五入(四舍五入数字)、sqrt(平方根)、pow(乘方计算)和 ceil(向上舍入到最接近的整数)。

支持的 支持的 支持的
eval field2 = ACOS(col1) | fields col1

PPL表达式

(算术运算符 (+、、*) -、谓词运算符 (>. <、) IN)

表达式的内置函数,尤其是值表达式,返回标量值。表达式有不同的类型和形式。

支持的 支持的 支持的
where age > (25 + 5) | fields age

PPLIP 地址函数

(CIDRMATCH)

用于处理 IP 地址的内置函数,例如CIDR.

不支持 支持的 支持的
where cidrmatch(ip, '***********/24') | fields ip

PPLJSON函数

(ARRAY_LENGTH, ARRAY_LENGTH, JSON, JSON_ARRAY, JSON_EXTRACT, JSON_KEYS, JSON_OBJECT, JSON_VALID, TO_JSON_STRING)

用于处理的内置函数,JSON包括数组、提取和验证。

不支持 支持的 支持的
eval `json_extract('{"a":"b"}', '$.a')` = json_extract('{"a":"b"}', '$a')

PPL Lambda 函数

(EXISTS, FILTER, REDUCE, TRANSFORM)

用于处理的内置函数,JSON包括数组、提取和验证。

不支持 支持的 支持的
eval array = json_array(1, -1, 2), result = filter(array, x -> x > 0) | fields result

PPL加密哈希函数

(MD5, SHA1, SHA2)

内置函数允许您生成唯一的数据指纹,这些指纹可用于验证、比较或作为更复杂的安全协议的一部分。

支持的 支持的 支持的
eval `MD5('hello')` = MD5('hello') | fields `MD5('hello')`

为 CloudWatch 日志见解用户提供的其他信息 OpenSearch PPL

尽管 CloudWatch Logs Insights 支持大多数 OpenSearch PPL命令和函数,但目前不支持某些命令和函数。例如,它目前不支持 JOIN “查找” 或 “查找” 中的子查询。PPL有关支持的查询命令和函数的完整列表,请参阅上表中的 Ama CloudWatch zon Logs 列。

查询和配额示例

以下内容适用于 CloudWatch Logs Insights OpenSearch 用户和查询 CloudWatch 数据的用户。

有关查询 OpenSearch 服务 CloudWatch 日志时适用的限制的信息,请参阅 Amazon Logs 用户指南中的CloudWatch CloudWatch 日志配额。限制包括您可以查询的 CloudWatch 日志组数量、可以执行的最大并发查询数、最长查询执行时间以及结果中返回的最大行数。无论您使用哪种语言查询 CloudWatch 日志(即、和 Logs Insights QL) OpenSearch PPLSQL,限制都是一样的。