gpt4 book ai didi

java - 无法从 Influx 数据库检索列

转载 作者:行者123 更新时间:2023-12-02 01:18:16 27 4
gpt4 key购买 nike

我正在使用 sprigboot 和 influx 客户端:https://github.com/influxdata/influxdb-java

我面临一个问题,我试图从流入数据库获取指定列,但当我将列名放入查询中时,我无法获取任何记录。但是,当我尝试使用 select * 时我正在获取数据。

@Data
@Measurement(name = "layout")
public class LayoutMapper {

@Column(name = "id", tag=true)
private String id;

@Column(name = "linename", tag=true)
private String lineName;

@Column(name = "tenantid")
private String tenantName;

@Column(name = "layout")
private String layout;



}

将 POJO 保存到数据库:

Point point = Point.measurementByPOJO(clazz.getClass()).addFieldsFromPOJO(pojoObject).build();
connection.query(new Query("CREATE RETENTION POLICY " + retentionPolicyName + " ON " + dbProperties.getDatabase() DURATION 1h REPLICATION 1 DEFAULT"));
connection.write(dbProperties.getDatabase(), retentionPolicyName, point);

工作:

  select * from layout;
select layout from layout;

不工作(提供空记录):

select linename from layout;

有人可以建议我做错了什么吗?

注意:观察很奇怪,我们无法对字符串列进行选择查询,有什么建议吗?

最佳答案

我认为 influxdb-java 客户端库创建访问数据的抽象的方法有点令人困惑。首先,这些实际上都不是列。在 InfluxDB 中,您的数据使用以下数据模型(也称为线路协议(protocol))存储:measurement-name,tag-set field-set timestamp

测量”是数据的高级分组,它是字符串,“标签集”是数据的集合键/值对,可以被视为元数据,其中所有值都是索引字符串,并且“字段集”是键的集合/value 对,其中值可以是 int64float64boolstring。与标签相反,字段没有索引。

LayoutMapper类中,为idlinename设置tag=true,这意味着这些两个是测量中标签集的成员。标签用于以高性能方式查询字段。因此,它们通常位于 WHERE 子句中,而不是单独位于 SELECT 中。

在 InfluxDB 中,如果要返回特定标签,则 SELECT 子句必须至少包含一个字段。这就是为什么您只能从包含 *layout 字段的查询中获得结果。总而言之,请尝试以下操作:

SELECT layout, linename FROM layout;

关于java - 无法从 Influx 数据库检索列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58199224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com