pivot() 函数
pivot()
会收集存储在垂直方向(按列)的唯一值,并将它们按水平方向(按行)对齐到逻辑集合中。
输出数据
结果表的分组键与输入表相同,但不包括在 columnKey
和 valueColumn
参数中找到的列。这些列不是结果输出表的一部分,并且从分组键中删除。
每个输入行应与输出表中特定行和列组合的 1:1 映射。行和列组合由 rowKey
和 columnKey
参数确定。在识别到同一行和列对有多个值的情况下,使用集合中遇到的最后一个值作为结果。
输出如下构造
- 新表的列集是
rowKey
与分组键的并集,但排除了由columnKey
和valueColumn
指示的列。 - 对于每个由
columnKey
参数识别的唯一值,都会向列集添加一个新列。 - 新列的标签是使用
_
作为分隔符连接columnKey
的值的串联。如果值为 null,则使用“null”。 - 对于每个由
rowKey
参数识别的唯一值,创建一个新行。 - 对于每个新行,分组键列的值保持不变,而新列的值由输入表中的
valueColumn
在由rowKey
值指定的行以及新列的标签确定。如果没有找到值,则将值设置为null
。 - 任何不属于分组键或未在
rowKey
、columnKey
和valueColumn
参数中指定的列都会被删除。
函数类型签名
(<-tables: stream[A], columnKey: [string], rowKey: [string], valueColumn: string) => stream[B] where A: Record, B: Record
参数
rowKey
(必需) 用于唯一标识输出行的列。
columnKey
(必需) 用于识别新输出列的列。
valueColumn
(必需) 用于填充旋转 columnKey
列值的列。
tables
输入数据。默认为管道转发数据(<-
)。
示例
根据时间将字段对齐到行
data
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
根据时间将值关联到标签
import "sampledata"
sampledata.int()
|> pivot(rowKey: ["_time"], columnKey: ["tag"], valueColumn: "_value")
这个页面有帮助吗?
感谢您的反馈!