在 InfluxDB 2.0 中,pivot() 函数用于将原始数据按照指定的行和列重新组织,并将特定字段的值填充到新生成的单元格中。下面是 pivot() 函数中可用的属性:
rowKey: 必需。一个字符串数组,表示要作为新表格的行键使用哪些字段名。columnKey: 必需。一个字符串数组,表示要作为新表格的列键使用哪些字段名。valueColumn: 必需。一个字符串,表示要将哪个字段作为填充新表格单元格的值。defaultValue: 可选。一个字符串或数值类型,表示如果源数据不包含指定行和列的某个组合,则在新表格中该单元格应该填充什么值,默认值为 null。nullValuesAsZero: 可选。一个布尔型参数,当设置为 true 时,在没有源数据时自动将空白单元格填充为零(即默认值改为0)。默认情况下该参数为 false。
以下是一些示例:
// pivot函数示例1
from(bucket: "my-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
// pivot函数示例2
from(bucket: "my-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value", defaultValue: "N/A")
// pivot函数示例3
from(bucket: "my-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value", nullValuesAsZero:true)
在上面的示例中,我们都使用 filter() 函数来过滤出 _measurement 等于 temperature 的记录,并使用 pivot() 函数将 _field 字段的值作为新列名。
在第一个示例中,我们没有设置任何默认值或空白单元格填充策略,因此默认情况下会用 null 值填充这些单元格。在第二个示例中,我们指定了一个字符串 “N/A” 作为默认值,如果源数据不包含某个行/列组合,则会在新表格中填充该值。在第三个示例中,我们将 nullValuesAsZero 参数设置为 true,以便自动将空白单元格填充为零。




