com.aliyun.openservices.paifeaturestore.domain.FeatureView Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of paifeaturestore-sdk Show documentation
Show all versions of paifeaturestore-sdk Show documentation
SDK for PAI-FeatureStore service
package com.aliyun.openservices.paifeaturestore.domain;
import com.aliyun.openservices.paifeaturestore.constants.DatasourceType;
import com.aliyun.openservices.paifeaturestore.constants.FSType;
import com.aliyun.openservices.paifeaturestore.constants.InsertMode;
import com.aliyun.openservices.paifeaturestore.dao.DaoConfig;
import com.aliyun.openservices.paifeaturestore.dao.FeatureViewDao;
import com.aliyun.openservices.paifeaturestore.dao.FeatureViewDaoFactory;
import com.aliyun.openservices.paifeaturestore.model.FeatureViewRequestFields;
import com.aliyun.tea.utils.StringUtils;
import com.google.gson.Gson;
import org.jacoco.agent.rt.internal_035b120.core.internal.flow.IFrame;
import java.util.*;
public class FeatureView implements IFeatureView {
com.aliyun.openservices.paifeaturestore.model.FeatureView featureView;
private final Project project;
private final FeatureEntity featureEntity;
private final FeatureViewDao featureViewDao;
private FeatureViewRequestFields primaryKeyField;
private FeatureViewRequestFields eventTimeField;
private final List featureFields = new ArrayList<>();
public FeatureView(com.aliyun.openservices.paifeaturestore.model.FeatureView featureView, Project project, FeatureEntity featureEntity) {
this.featureView = featureView;
this.project = project;
this.featureEntity = featureEntity;
for (FeatureViewRequestFields field : this.featureView.getFields()) {
if (field.isIsEventTime()) {
eventTimeField = field;
this.featureFields.add(field.getName());
} else if (field.isIsPrimaryKey()) {
primaryKeyField = field;
} else if (field.isIsPartition()) {
continue;
} else {
this.featureFields.add(field.getName());
}
}
DaoConfig daoConfig = new DaoConfig();
daoConfig.datasourceType = project.getProject().getOnlineDatasourceType();
daoConfig.primaryKeyField = this.primaryKeyField.getName();
if (null != this.eventTimeField) {
daoConfig.eventTimeField = this.eventTimeField.getName();
}
daoConfig.ttl = featureView.getTtl();
Map fieldTypeMap2 = new HashMap<>();
for (FeatureViewRequestFields field : featureView.getFields()) {
if (field.isIsPrimaryKey()) {
fieldTypeMap2.put(field.getName(), field.getType());
} else if (field.isIsPartition()) {
continue;
} else {
fieldTypeMap2.put(field.getName(), field.getType());
}
}
daoConfig.fieldTypeMap = fieldTypeMap2;
if ((null != featureView.getWriteToFeaturedb() && featureView.getWriteToFeaturedb()) || project.getProject().getOnlineDatasourceType().equals(DatasourceType.Datasource_Type_FeatureDB)) {
daoConfig.datasourceType = DatasourceType.Datasource_Type_FeatureDB;
daoConfig.featureDBName = project.getFeatureDBName();
daoConfig.featureDBDatabase = project.getProject().getInstanceId();
daoConfig.featureDBSchema = project.getProject().getProjectName();
daoConfig.featureDBTable = featureView.getName();
daoConfig.fields = this.featureFields;
} else {
switch (project.getProject().getOnlineDatasourceType()) {
case Datasource_Type_Hologres:
daoConfig.hologresName = project.getOnlineStore().getDatasourceName();
daoConfig.hologresTableName = project.getOnlineStore().getTableName(this);
break;
case Datasource_Type_IGraph:
if (!StringUtils.isEmpty(featureView.getConfig())) {
Gson gson = new Gson();
Map map = gson.fromJson(featureView.getConfig(), Map.class);
if (map.containsKey("save_original_field")) {
if (map.get("save_original_field") instanceof Boolean) {
daoConfig.saveOriginalField = (Boolean) map.get("save_original_field");
}
}
}
daoConfig.iGraphName = project.getOnlineStore().getDatasourceName();
daoConfig.groupName = project.getProject().getProjectName();
daoConfig.labelName = project.getOnlineStore().getTableName(this);
Map fieldMap = new HashMap<>();
Map fieldTypeMap = new HashMap<>();
for (FeatureViewRequestFields field : featureView.getFields()) {
if (field.isIsPrimaryKey()) {
fieldMap.put(field.getName(), field.getName());
fieldTypeMap.put(field.getName(), field.getType());
} else if (field.isIsPartition()) {
continue;
} else {
String name;
if (daoConfig.saveOriginalField) {
name = field.getName();
} else {
name = String.format("f%d", field.getPosition());
}
fieldMap.put(name, field.getName());
fieldTypeMap.put(name, field.getType());
}
}
daoConfig.fieldMap = fieldMap;
daoConfig.fieldTypeMap = fieldTypeMap;
break;
case Datasource_Type_TableStore:
daoConfig.otsTableName = project.getOnlineStore().getTableName(this);
daoConfig.otsName = project.getOnlineStore().getDatasourceName();
break;
default:
break;
}
}
this.featureViewDao = FeatureViewDaoFactory.getFeatureViewDao(daoConfig);
}
public com.aliyun.openservices.paifeaturestore.model.FeatureView getFeatureView() {
return featureView;
}
public Project getProject() {
return project;
}
public void setFeatureView(com.aliyun.openservices.paifeaturestore.model.FeatureView featureView) {
this.featureView = featureView;
}
public FeatureEntity getFeatureEntity() {
return featureEntity;
}
@Override
public void writeFeatures(List