in src/main/java/com/aliyun/openservices/paifeaturestore/dao/FeatureViewIgraphDao.java [232:277]
public List<SequenceInfo> getSeqDB(String key,String[] selectfields,HashMap<String, Double> playtimefilter,String event,FeatureViewSeqConfig config,Long currentime) {
List<SequenceInfo> sequenceInfos = new ArrayList<>();
//pk
String pKField=String.format("%s_%s",key,event);
String queryString=String.format(
"g(\"%s\").E(\"%s\").hasLabel(\"%s\").fields(\"%s\")" +
".order().by(\"%s\",Order.decr).limit(%d)",
this.group,pKField,this.edgename,StringUtil.join(selectfields,";"),config.getTimestampField(),config.getSeqLenOnline());
ResultSet rs = this.client.submit(queryString);
List<Result> join = rs.all().join();
for (Result r:join) {
if (!StringUtils.isEmpty(playtimefilter) && !StringUtils.isEmpty(playtimefilter.get(event))) {
Double playtime = r.getVertex().value(config.getPlayTimeField());
if (playtime < playtimefilter.get(event)) {
continue;
}
}
if (r.isNull()) {
continue;
}
SequenceInfo sequenceInfo = new SequenceInfo();
for (String name:selectfields) {
if (name.equals(config.getItemIdField())) {
Long i = r.getVertex().value(name);
sequenceInfo.setItemIdField(i);
} else if (name.equals(config.getTimestampField())) {
Long et = r.getVertex().value(name);
sequenceInfo.setTimestampField(et);
} else if (name.equals(config.getEventField())) {//event
String e = r.getVertex().value(name);
sequenceInfo.setEventField(e);
} else if (name.equals(config.getPlayTimeField())) {
Double d = r.getVertex().value(name);
if (d==-1024.0) {
d=null;
}
sequenceInfo.setPlayTimeField(d);
}
}
sequenceInfos.add(sequenceInfo);
}
return sequenceInfos;
}