mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[improvement][launcher]Refactor unit tests and demo data.
[improvement][launcher]Refactor unit tests and demo data. [improvement][launcher]Refactor unit tests and demo data. [improvement][launcher]Refactor unit tests and demo data.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package com.tencent.supersonic.chat.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
@@ -7,9 +10,10 @@ import java.util.Date;
|
||||
|
||||
@Data
|
||||
@ToString
|
||||
@TableName("s2_chat_config")
|
||||
public class ChatConfigDO {
|
||||
|
||||
/** database auto-increment primary key */
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long modelId;
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
package com.tencent.supersonic.chat.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
||||
@Data
|
||||
@TableName("s2_chat_context")
|
||||
public class ChatContextDO implements Serializable {
|
||||
|
||||
@TableId
|
||||
private Integer chatId;
|
||||
private Instant modifiedAt;
|
||||
@TableField("query_user")
|
||||
private String user;
|
||||
private String queryText;
|
||||
private String semanticParse;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.tencent.supersonic.chat.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.chat.server.config.ChatConfigFilterInternal;
|
||||
import com.tencent.supersonic.chat.server.persistence.dataobject.ChatConfigDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -7,11 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface ChatConfigMapper {
|
||||
|
||||
Long addConfig(ChatConfigDO chaConfigPO);
|
||||
|
||||
Long editConfig(ChatConfigDO chaConfigPO);
|
||||
public interface ChatConfigMapper extends BaseMapper<ChatConfigDO> {
|
||||
|
||||
List<ChatConfigDO> search(ChatConfigFilterInternal filterInternal);
|
||||
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
package com.tencent.supersonic.chat.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.chat.server.persistence.dataobject.ChatContextDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface ChatContextMapper {
|
||||
public interface ChatContextMapper extends BaseMapper<ChatContextDO> {
|
||||
|
||||
ChatContextDO getContextByChatId(Integer chatId);
|
||||
|
||||
int updateContext(ChatContextDO contextDO);
|
||||
|
||||
int addContext(ChatContextDO contextDO);
|
||||
}
|
||||
|
||||
@@ -32,15 +32,15 @@ public class ChatConfigRepositoryImpl implements ChatConfigRepository {
|
||||
@Override
|
||||
public Long createConfig(ChatConfig chaConfig) {
|
||||
ChatConfigDO chaConfigDO = chatConfigHelper.chatConfig2DO(chaConfig);
|
||||
chatConfigMapper.addConfig(chaConfigDO);
|
||||
chatConfigMapper.insert(chaConfigDO);
|
||||
return chaConfigDO.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long updateConfig(ChatConfig chaConfig) {
|
||||
ChatConfigDO chaConfigDO = chatConfigHelper.chatConfig2DO(chaConfig);
|
||||
|
||||
return chatConfigMapper.editConfig(chaConfigDO);
|
||||
chatConfigMapper.updateById(chaConfigDO);
|
||||
return chaConfigDO.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,12 +35,7 @@ public class ChatContextRepositoryImpl implements ChatContextRepository {
|
||||
|
||||
@Override
|
||||
public void updateContext(ChatContext chatCtx) {
|
||||
ChatContextDO context = cast(chatCtx);
|
||||
if (chatContextMapper.getContextByChatId(chatCtx.getChatId()) == null) {
|
||||
chatContextMapper.addContext(context);
|
||||
} else {
|
||||
chatContextMapper.updateContext(context);
|
||||
}
|
||||
chatContextMapper.insertOrUpdate(cast(chatCtx));
|
||||
}
|
||||
|
||||
private ChatContext cast(ChatContextDO contextDO) {
|
||||
|
||||
@@ -20,54 +20,6 @@
|
||||
<result column="updated_at" property="updatedAt"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="addConfig"
|
||||
parameterType="com.tencent.supersonic.chat.server.persistence.dataobject.ChatConfigDO"
|
||||
useGeneratedKeys="true" keyProperty="id">
|
||||
insert into s2_chat_config
|
||||
(
|
||||
model_id, `chat_detail_config`, chat_agg_config, recommended_questions, status, llm_examples, created_by, updated_by, created_at, updated_at
|
||||
)
|
||||
values
|
||||
(
|
||||
#{modelId}, #{chatDetailConfig}, #{chatAggConfig}, #{recommendedQuestions}, #{status}, #{llmExamples}, #{createdBy}, #{updatedBy}, #{createdAt}, #{updatedAt}
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="editConfig">
|
||||
update s2_chat_config
|
||||
<set>
|
||||
`updated_at` = #{updatedAt} ,
|
||||
<if test="chatDetailConfig != null and chatDetailConfig != ''">
|
||||
`chat_detail_config` = #{chatDetailConfig} ,
|
||||
</if>
|
||||
<if test="chatAggConfig != null and chatAggConfig != ''">
|
||||
chat_agg_config = #{chatAggConfig} ,
|
||||
</if>
|
||||
<if test="recommendedQuestions != null and recommendedQuestions != ''">
|
||||
recommended_questions = #{recommendedQuestions} ,
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
status = #{status} ,
|
||||
</if>
|
||||
<if test="updatedBy != null and updatedBy != ''">
|
||||
updated_by = #{updatedBy} ,
|
||||
</if>
|
||||
<if test="llmExamples != null and llmExamples != ''">
|
||||
llm_examples = #{llmExamples} ,
|
||||
</if>
|
||||
</set>
|
||||
|
||||
<where>
|
||||
<if test="id != null and id != ''">
|
||||
id = #{id}
|
||||
</if>
|
||||
<if test="modelId != null and modelId != ''">
|
||||
and model_id = #{modelId}
|
||||
</if>
|
||||
</where>
|
||||
</update>
|
||||
|
||||
<select id="search" resultMap="chaConfigDO">
|
||||
select *
|
||||
from s2_chat_config
|
||||
|
||||
@@ -20,11 +20,4 @@
|
||||
from s2_chat_context where chat_id=#{chatId} limit 1
|
||||
</select>
|
||||
|
||||
<insert id="addContext" parameterType="com.tencent.supersonic.chat.server.persistence.dataobject.ChatContextDO" >
|
||||
insert into s2_chat_context (chat_id,user,query_text,semantic_parse) values (#{chatId}, #{user},#{queryText}, #{semanticParse})
|
||||
</insert>
|
||||
<update id="updateContext">
|
||||
update s2_chat_context set query_text=#{queryText},semantic_parse=#{semanticParse} where chat_id=#{chatId}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -74,7 +74,6 @@ public class SqlValidHelper {
|
||||
CCJSqlParserUtil.parse(sql);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("isValidSQL parse:{}", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,9 @@ public class PostgresqlAdaptor extends BaseDbAdaptor {
|
||||
}
|
||||
return o;
|
||||
});
|
||||
return SqlReplaceHelper.replaceFunction(sql, functionMap, functionCall);
|
||||
sql = SqlReplaceHelper.replaceFunction(sql, functionMap, functionCall);
|
||||
sql = sql.replaceAll("`", "\"");
|
||||
return sql;
|
||||
}
|
||||
|
||||
public List<String> getTables(ConnectInfo connectionInfo, String schemaName)
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("s2_available_date_info")
|
||||
public class DateInfoDO {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String type;
|
||||
private Long itemId;
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("s2_query_stat_info")
|
||||
public class QueryStatDO {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String traceId;
|
||||
private Long modelId;
|
||||
private Long dataSetId;
|
||||
@TableField("query_user")
|
||||
private String user;
|
||||
private String createdAt;
|
||||
/** corresponding type, such as sql, struct, etc */
|
||||
private String queryType;
|
||||
/** NORMAL, PRE_FLUSH */
|
||||
private Integer queryTypeBack;
|
||||
private String querySqlCmd;
|
||||
@TableField("sql_cmd_md5")
|
||||
private String querySqlCmdMd5;
|
||||
private String queryStructCmd;
|
||||
@TableField("struct_cmd_md5")
|
||||
private String queryStructCmdMd5;
|
||||
private String sql;
|
||||
private String sqlMd5;
|
||||
private String queryEngine;
|
||||
// private Long startTime;
|
||||
private Long elapsedMs;
|
||||
private String queryState;
|
||||
private Boolean nativeQuery;
|
||||
private String startDate;
|
||||
private String endDate;
|
||||
private String dimensions;
|
||||
private String metrics;
|
||||
private String selectCols;
|
||||
private String aggCols;
|
||||
private String filterCols;
|
||||
private String groupByCols;
|
||||
private String orderByCols;
|
||||
private Boolean useResultCache;
|
||||
private Boolean useSqlCache;
|
||||
private String sqlCacheKey;
|
||||
private String resultCacheKey;
|
||||
private String queryOptMode;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.ItemDateFilter;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.DateInfoDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -7,9 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface DateInfoMapper {
|
||||
|
||||
Boolean upsertDateInfo(DateInfoDO dateInfoDO);
|
||||
public interface DateInfoMapper extends BaseMapper<DateInfoDO> {
|
||||
|
||||
List<DateInfoDO> getDateInfos(ItemDateFilter itemDateFilter);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.QueryStatDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface StatMapper {
|
||||
|
||||
Boolean createRecord(QueryStat queryStatInfo);
|
||||
public interface StatMapper extends BaseMapper<QueryStatDO> {
|
||||
|
||||
List<QueryStat> getStatInfo(ItemUseReq itemUseCommend);
|
||||
}
|
||||
|
||||
@@ -12,5 +12,4 @@ public interface StatRepository {
|
||||
|
||||
List<ItemUseResp> getStatInfo(ItemUseReq itemUseCommend);
|
||||
|
||||
List<QueryStat> getQueryStatInfoWithoutCache(ItemUseReq itemUseCommend);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class DateInfoRepositoryImpl implements DateInfoRepository {
|
||||
private Integer batchUpsert(List<DateInfoDO> dateInfoDOList) {
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
for (DateInfoDO dateInfoDO : dateInfoDOList) {
|
||||
dateInfoMapper.upsertDateInfo(dateInfoDO);
|
||||
dateInfoMapper.insertOrUpdate(dateInfoDO);
|
||||
}
|
||||
log.info("before final, elapsed time:{}", stopwatch.elapsed(TimeUnit.MILLISECONDS));
|
||||
return 0;
|
||||
|
||||
@@ -6,11 +6,13 @@ import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.QueryStatDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.mapper.StatMapper;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.StatRepository;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -36,7 +38,9 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
|
||||
@Override
|
||||
public Boolean createRecord(QueryStat queryStatInfo) {
|
||||
return statMapper.createRecord(queryStatInfo);
|
||||
QueryStatDO queryStatDO = new QueryStatDO();
|
||||
BeanUtils.copyProperties(queryStatInfo, queryStatDO);
|
||||
return statMapper.insertOrUpdate(queryStatDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -66,11 +70,6 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueryStat> getQueryStatInfoWithoutCache(ItemUseReq itemUseCommend) {
|
||||
return statMapper.getStatInfo(itemUseCommend);
|
||||
}
|
||||
|
||||
private void updateStatMapInfo(Map<String, Long> map, String dimensions, String type,
|
||||
Long dataSetId) {
|
||||
if (StringUtils.isNotEmpty(dimensions)) {
|
||||
@@ -92,14 +91,4 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStatMapInfo(Map<String, Long> map, Long modelId, String type) {
|
||||
if (Objects.nonNull(modelId)) {
|
||||
String key = type + AT_SYMBOL + AT_SYMBOL + modelId;
|
||||
if (map.containsKey(key)) {
|
||||
map.put(key, map.get(key) + 1);
|
||||
} else {
|
||||
map.put(key, 1L);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,21 +40,6 @@
|
||||
<result column="query_opt_mode" property="queryOptMode"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="createRecord">
|
||||
insert into s2_query_stat_info
|
||||
(
|
||||
trace_id, model_id, data_set_id, `user`, query_type, query_type_back, query_sql_cmd, sql_cmd_md5, query_struct_cmd, struct_cmd_md5, `sql`, sql_md5, query_engine,
|
||||
elapsed_ms, query_state, native_query, start_date, end_date, dimensions, metrics, select_cols, agg_cols, filter_cols, group_by_cols,
|
||||
order_by_cols, use_result_cache, use_sql_cache, sql_cache_key, result_cache_key, query_opt_mode
|
||||
)
|
||||
values
|
||||
(
|
||||
#{traceId}, #{modelId}, #{dataSetId}, #{user}, #{queryType}, #{queryTypeBack}, #{querySqlCmd}, #{querySqlCmdMd5}, #{queryStructCmd}, #{queryStructCmdMd5}, #{sql}, #{sqlMd5}, #{queryEngine},
|
||||
#{elapsedMs}, #{queryState}, #{nativeQuery}, #{startDate}, #{endDate}, #{dimensions}, #{metrics}, #{selectCols}, #{aggCols}, #{filterCols}, #{groupByCols},
|
||||
#{orderByCols}, #{useResultCache}, #{useSqlCache}, #{sqlCacheKey}, #{resultCacheKey}, #{queryOptMode}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<select id="getStatInfo"
|
||||
resultType="com.tencent.supersonic.headless.api.pojo.QueryStat">
|
||||
select *
|
||||
|
||||
@@ -17,22 +17,6 @@
|
||||
<result column="date_period" jdbcType="VARCHAR" property="datePeriod"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="upsertDateInfo">
|
||||
insert into s2_available_date_info
|
||||
(`type`, item_id, date_format, start_date, end_date, unavailable_date, created_by,
|
||||
updated_by,date_period)
|
||||
values (#{type}, #{itemId}, #{dateFormat}, #{startDate}, #{endDate}, #{unavailableDateList},
|
||||
#{createdBy}, #{updatedBy}, #{datePeriod}) ON DUPLICATE KEY
|
||||
UPDATE
|
||||
date_format = #{dateFormat},
|
||||
start_date = #{startDate},
|
||||
end_date = #{endDate},
|
||||
unavailable_date = #{unavailableDateList},
|
||||
created_by = #{createdBy},
|
||||
updated_by = #{updatedBy},
|
||||
date_period = #{datePeriod}
|
||||
</insert>
|
||||
|
||||
<select id="getDateInfos" resultMap="BaseResultMap">
|
||||
select e.*
|
||||
from s2_available_date_info e
|
||||
|
||||
@@ -121,13 +121,7 @@ public abstract class S2BaseDemo implements CommandLineRunner {
|
||||
DatabaseReq databaseReq = new DatabaseReq();
|
||||
databaseReq.setName("S2数据库DEMO");
|
||||
databaseReq.setDescription("样例数据库实例仅用于体验");
|
||||
if (StringUtils.isNotBlank(url)
|
||||
&& url.toLowerCase().contains(DataType.MYSQL.getFeature().toLowerCase())) {
|
||||
databaseReq.setType(DataType.MYSQL.getFeature());
|
||||
databaseReq.setVersion("5.7");
|
||||
} else {
|
||||
databaseReq.setType(DataType.H2.getFeature());
|
||||
}
|
||||
databaseReq.setType(DataType.POSTGRESQL.getFeature());
|
||||
databaseReq.setUrl(url);
|
||||
databaseReq.setUsername(dataSourceProperties.getUsername());
|
||||
databaseReq
|
||||
|
||||
@@ -33,6 +33,8 @@ import java.util.*;
|
||||
@Order(2)
|
||||
public class S2CompanyDemo extends S2BaseDemo {
|
||||
|
||||
public static final String AGENT_NAME = "企业分析助手";
|
||||
|
||||
public void doRun() {
|
||||
try {
|
||||
DomainResp domain = addDomain();
|
||||
@@ -45,7 +47,8 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
addModelRela(domain, model_brand_revenue, model_brand, "brand_id");
|
||||
|
||||
DataSetResp dataset = addDataSet(domain);
|
||||
addAgent(dataset.getId());
|
||||
Long dataSetId = dataset.getId();
|
||||
addAgent(dataSetId);
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to add bench mark demo data", e);
|
||||
}
|
||||
@@ -229,9 +232,9 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
modelRelaService.save(modelRelaReq, defaultUser);
|
||||
}
|
||||
|
||||
private void addAgent(Long dataSetId) {
|
||||
private Agent addAgent(Long dataSetId) {
|
||||
Agent agent = new Agent();
|
||||
agent.setName("企业分析助手");
|
||||
agent.setName(AGENT_NAME);
|
||||
agent.setDescription("帮忙您对企业的员工数、收入、利润经营指标分析");
|
||||
agent.setStatus(1);
|
||||
agent.setEnableSearch(1);
|
||||
@@ -253,6 +256,6 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
chatAppConfig.values().forEach(app -> app.setChatModelId(demoChatModel.getId()));
|
||||
agent.setChatAppConfig(chatAppConfig);
|
||||
|
||||
agentService.createAgent(agent, defaultUser);
|
||||
return agentService.createAgent(agent, defaultUser);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,8 @@ import java.util.Map;
|
||||
@Order(3)
|
||||
public class S2SingerDemo extends S2BaseDemo {
|
||||
|
||||
public static final String AGENT_NAME = "艺人分析助手";
|
||||
|
||||
public void doRun() {
|
||||
try {
|
||||
DomainResp singerDomain = addDomain();
|
||||
@@ -147,7 +149,7 @@ public class S2SingerDemo extends S2BaseDemo {
|
||||
|
||||
private void addAgent(long dataSetId) {
|
||||
Agent agent = new Agent();
|
||||
agent.setName("艺人分析助手");
|
||||
agent.setName(AGENT_NAME);
|
||||
agent.setDescription("帮忙您对不同流派、区域的艺人做分析查询");
|
||||
agent.setStatus(1);
|
||||
agent.setEnableSearch(1);
|
||||
|
||||
@@ -70,6 +70,8 @@ import java.util.Map;
|
||||
@Order(1)
|
||||
public class S2VisitsDemo extends S2BaseDemo {
|
||||
|
||||
public static final String AGENT_NAME = "超音数分析助手";
|
||||
|
||||
public void doRun() {
|
||||
try {
|
||||
// create domain
|
||||
@@ -141,7 +143,7 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
|
||||
private Integer addAgent(long dataSetId) {
|
||||
Agent agent = new Agent();
|
||||
agent.setName("超音数分析助手");
|
||||
agent.setName(AGENT_NAME);
|
||||
agent.setDescription("帮忙您对超音数产品的用户访问情况做分析");
|
||||
agent.setStatus(1);
|
||||
agent.setEnableSearch(1);
|
||||
|
||||
@@ -11,24 +11,4 @@ spring:
|
||||
h2:
|
||||
console:
|
||||
path: /h2-console/semantic
|
||||
enabled: true
|
||||
|
||||
### Comment out following lines if using MySQL
|
||||
#spring:
|
||||
# datasource:
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# url: jdbc:mysql://localhost:3306/s2_database?user=root
|
||||
# username: root
|
||||
# password:
|
||||
# sql:
|
||||
# enabled: true
|
||||
# mode: always
|
||||
# username: root
|
||||
# password:
|
||||
# init:
|
||||
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
||||
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
||||
# h2:
|
||||
# console:
|
||||
# path: /h2-console/semantic
|
||||
# enabled: true
|
||||
enabled: true
|
||||
@@ -0,0 +1,14 @@
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password:
|
||||
sql:
|
||||
init:
|
||||
enabled: false
|
||||
mode: always
|
||||
username: root
|
||||
password:
|
||||
schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
||||
data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
||||
@@ -0,0 +1,14 @@
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: org.postgresql.Driver
|
||||
url: jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified
|
||||
username: postgres
|
||||
password: postgres
|
||||
sql:
|
||||
init:
|
||||
enabled: false
|
||||
mode: always
|
||||
username: postgres
|
||||
password: postgres
|
||||
schema-locations: classpath:db/schema-postgres.sql,classpath:db/schema-postgres-demo.sql
|
||||
data-locations: classpath:db/data-postgres.sql,classpath:db/data-postgres-demo.sql
|
||||
@@ -397,4 +397,8 @@ alter table s2_agent add column `enable_feedback` tinyint DEFAULT 1;
|
||||
|
||||
--20241116
|
||||
alter table s2_agent add column `admin` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL;
|
||||
alter table s2_agent add column `viewer` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL;
|
||||
alter table s2_agent add column `viewer` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL;
|
||||
|
||||
--20241201
|
||||
ALTER TABLE s2_query_stat_info RENAME COLUMN `user` TO `query_user`;
|
||||
ALTER TABLE s2_chat_context RENAME COLUMN `user` TO `query_user`;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
-------S2VisitsDemo
|
||||
insert INTO s2_user_department (user_name, department) values ('jack','HR');
|
||||
insert INTO s2_user_department (user_name, department) values ('tom','sales');
|
||||
insert INTO s2_user_department (user_name, department) values ('lucy','marketing');
|
||||
insert INTO s2_user_department (user_name, department) values ('john','strategy');
|
||||
insert INTO s2_user_department (user_name, department) values ('alice','sales');
|
||||
insert INTO s2_user_department (user_name, department) values ('dean','marketing');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('jack','HR');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('tom','sales');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('lucy','marketing');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('john','strategy');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('alice','sales');
|
||||
MERGE INTO s2_user_department (user_name, department) values ('dean','marketing');
|
||||
|
||||
INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (CURRENT_DATE(), 'lucy', 'p1');
|
||||
INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (CURRENT_DATE(), 'jack', 'p1');
|
||||
@@ -1021,45 +1021,37 @@ INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (
|
||||
|
||||
|
||||
-------S2ArtistDemo
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('周杰伦', '港台','青花瓷','国风',1000000,1000000,1000000);
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('陈奕迅', '港台','爱情转移','流行',1000000,1000000,1000000);
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('林俊杰', '港台','美人鱼','流行',1000000,1000000,1000000);
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('张碧晨', '内地','光的方向','流行',1000000,1000000,1000000);
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('程响', '内地','人间烟火','国风',1000000,1000000,1000000);
|
||||
insert INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('Taylor Swift', '欧美','Love Story','流行',1000000,1000000,1000000);
|
||||
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('tagore',8,'孟加拉国');
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('nazrul',7,'孟加拉国');
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('民间',9,'锡尔赫特、吉大港、库斯蒂亚');
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('现代',8,'孟加拉国');
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('蓝调',7,'加拿大');
|
||||
insert INTO genre(g_name,rating,most_popular_in) VALUES ('流行',9,'美国');
|
||||
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Shrikanta','印度','男性','tagore');
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Prity','孟加拉国','女性','nazrul');
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Farida','孟加拉国','女性','民间');
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Topu','印度','女性','现代');
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Enrique','美国','男性','蓝调');
|
||||
insert INTO artist(artist_name,citizenship,gender,g_name) VALUES ('Michel','英国','男性','流行');
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('周杰伦', '港台','青花瓷','国风',1000000,1000000,1000000);
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('陈奕迅', '港台','爱情转移','流行',1000000,1000000,1000000);
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('林俊杰', '港台','美人鱼','流行',1000000,1000000,1000000);
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('张碧晨', '内地','光的方向','流行',1000000,1000000,1000000);
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('程响', '内地','人间烟火','国风',1000000,1000000,1000000);
|
||||
MERGE INTO singer (singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES ('Taylor Swift', '欧美','Love Story','流行',1000000,1000000,1000000);
|
||||
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('tagore',8,'孟加拉国');
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('nazrul',7,'孟加拉国');
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('民间',9,'锡尔赫特、吉大港、库斯蒂亚');
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('现代',8,'孟加拉国');
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('蓝调',7,'加拿大');
|
||||
MERGE INTO genre(g_name,rating,most_popular_in) VALUES ('流行',9,'美国');
|
||||
|
||||
-------S2CompanyDemo
|
||||
insert into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_131','微软','西雅图','1975','盖茨','纳德拉',102300000000,210000);
|
||||
insert into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_132','特斯拉','加州','2003','艾伯哈德','马斯克',376800000000,140473);
|
||||
insert into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_133','谷歌','加州','1998','拉里佩奇','劈柴',321600000000,182503);
|
||||
insert into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_134','亚马逊','加州','1994','贝索斯','贝索斯',28800000000,950000);
|
||||
insert into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_135','英伟达','杭州','1993','黄仁勋','黄仁勋',67500000000,29000);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_131','微软','西雅图','1975','盖茨','纳德拉',102300000000,210000);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_132','特斯拉','加州','2003','艾伯哈德','马斯克',376800000000,140473);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_133','谷歌','加州','1998','拉里佩奇','劈柴',321600000000,182503);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_134','亚马逊','加州','1994','贝索斯','贝索斯',28800000000,950000);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_135','英伟达','杭州','1993','黄仁勋','黄仁勋',67500000000,29000);
|
||||
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_131','Office','1990','item_enterprise_13_131','盖茨',50000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_132','Windows','1991','item_enterprise_13_131','盖茨',50000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_133','Model 3','2017','item_enterprise_13_132','马斯克',100000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_134','Model Y','2020','item_enterprise_13_132','马斯克',100000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_135','Google','2003','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_136','Android','2007','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_137','aws','2004','item_enterprise_13_134','贝索斯',100000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_138','kindle','2007','item_enterprise_13_134','贝索斯',100000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_139','H100','2022','item_enterprise_13_135','黄仁勋',100000000);
|
||||
insert into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_140','A100','2021','item_enterprise_13_135','黄仁勋',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_131','Office','1990','item_enterprise_13_131','盖茨',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_132','Windows','1991','item_enterprise_13_131','盖茨',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_133','Model 3','2017','item_enterprise_13_132','马斯克',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_134','Model Y','2020','item_enterprise_13_132','马斯克',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_135','Google','2003','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_136','Android','2007','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_137','aws','2004','item_enterprise_13_134','贝索斯',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_138','kindle','2007','item_enterprise_13_134','贝索斯',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_139','H100','2022','item_enterprise_13_135','黄仁勋',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_140','A100','2021','item_enterprise_13_135','黄仁勋',100000000);
|
||||
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_131',12100000000, 2100000000,10,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_132',12200000000, 2200000000,20,20);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
-- S2VisitsDemo
|
||||
insert into s2_user_department (user_name, department) values ('jack','HR');
|
||||
insert into s2_user_department (user_name, department) values ('tom','sales');
|
||||
insert into s2_user_department (user_name, department) values ('lucy','marketing');
|
||||
insert into s2_user_department (user_name, department) values ('john','strategy');
|
||||
insert into s2_user_department (user_name, department) values ('alice','sales');
|
||||
insert into s2_user_department (user_name, department) values ('dean','marketing');
|
||||
MERGE into s2_user_department (user_name, department) values ('jack','HR');
|
||||
MERGE into s2_user_department (user_name, department) values ('tom','sales');
|
||||
MERGE into s2_user_department (user_name, department) values ('lucy','marketing');
|
||||
MERGE into s2_user_department (user_name, department) values ('john','strategy');
|
||||
MERGE into s2_user_department (user_name, department) values ('alice','sales');
|
||||
MERGE into s2_user_department (user_name, department) values ('dean','marketing');
|
||||
|
||||
INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (CURRENT_DATE(), 'lucy', 'p1');
|
||||
INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (CURRENT_DATE(), 'jack', 'p1');
|
||||
@@ -1020,34 +1020,61 @@ INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (
|
||||
INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATE_SUB(CURRENT_DATE(), INTERVAL 8 DAY), 'lucy', '0.039935860913407284', 'p2');
|
||||
|
||||
-- S2ArtistDemo
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('周杰伦', '港台', '青花瓷', '国风', 1000000, 1000000, 1000000);
|
||||
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('陈奕迅', '港台', '爱情转移', '流行', 1000000, 1000000, 1000000);
|
||||
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('林俊杰', '港台', '美人鱼', '流行', 1000000, 1000000, 1000000);
|
||||
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('张碧晨', '内地', '光的方向', '流行', 1000000, 1000000, 1000000);
|
||||
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('程响', '内地', '人间烟火', '国风', 1000000, 1000000, 1000000);
|
||||
|
||||
INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
MERGE INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt)
|
||||
VALUES ('Taylor Swift', '欧美', 'Love Story', '流行', 1000000, 1000000, 1000000);
|
||||
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('tagore',8,'孟加拉国');
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('nazrul',7,'孟加拉国');
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('民间',9,'锡尔赫特、吉大港、库斯蒂亚');
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('现代',8,'孟加拉国');
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('蓝调',7,'加拿大');
|
||||
insert into genre(g_name,rating,most_popular_in) VALUES ('流行',9,'美国');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('tagore',8,'孟加拉国');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('nazrul',7,'孟加拉国');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('民间',9,'锡尔赫特、吉大港、库斯蒂亚');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('现代',8,'孟加拉国');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('蓝调',7,'加拿大');
|
||||
MERGE into genre(g_name,rating,most_popular_in) VALUES ('流行',9,'美国');
|
||||
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Shrikanta','印度','男性','tagore');
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Prity','孟加拉国','女性','nazrul');
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Farida','孟加拉国','女性','民间');
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Topu','印度','女性','现代');
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Enrique','美国','男性','蓝调');
|
||||
insert into artist(artist_name,citizenship,gender,g_name) VALUES ('Michel','英国','男性','流行');
|
||||
-- S2CompanyDemo
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_131','微软','西雅图','1975','盖茨','纳德拉',102300000000,210000);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_132','特斯拉','加州','2003','艾伯哈德','马斯克',376800000000,140473);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_133','谷歌','加州','1998','拉里佩奇','劈柴',321600000000,182503);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_134','亚马逊','加州','1994','贝索斯','贝索斯',28800000000,950000);
|
||||
MERGE into company(company_id,company_name,headquarter_address,company_established_time,founder,ceo,annual_turnover,employee_count) VALUES ('item_enterprise_13_135','英伟达','杭州','1993','黄仁勋','黄仁勋',67500000000,29000);
|
||||
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_131','Office','1990','item_enterprise_13_131','盖茨',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_132','Windows','1991','item_enterprise_13_131','盖茨',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_133','Model 3','2017','item_enterprise_13_132','马斯克',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_134','Model Y','2020','item_enterprise_13_132','马斯克',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_135','Google','2003','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_136','Android','2007','item_enterprise_13_133','拉里佩奇',50000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_137','aws','2004','item_enterprise_13_134','贝索斯',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_138','kindle','2007','item_enterprise_13_134','贝索斯',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_139','H100','2022','item_enterprise_13_135','黄仁勋',100000000);
|
||||
MERGE into brand(brand_id,brand_name,brand_established_time,company_id,legal_representative,registered_capital) VALUES ('item_brand_13_140','A100','2021','item_enterprise_13_135','黄仁勋',100000000);
|
||||
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_131',12100000000, 2100000000,10,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_132',12200000000, 2200000000,20,20);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_133',12300000000, 2300000000,30,30);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_134',12400000000, 2400000000,10,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_135',12500000000, 2500000000,30,30);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_136',12600000000, 2600000000,40,40);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_137',12700000000, 2700000000,50,50);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_138',12800000000, 2800000000,20,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_139',12900000000, 2900000000,60,70);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2023','item_brand_13_140',13000000000, 3000000000,80,100);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_131',13100000000,3100000000, 10,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_132',13200000000, 3200000000,20,20);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_133',13300000000, 3300000000,30,30);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_134',13400000000, 3400000000,10,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_135',13500000000, 3500000000,30,30);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_136',13600000000, 3600000000,40,40);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_137',13700000000, 3700000000,50,50);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_138',13800000000, 3800000000,20,10);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_139',13900000000, 3900000000,60,70);
|
||||
insert into brand_revenue(year_time,brand_id,revenue,profit,revenue_growth_year_on_year,profit_growth_year_on_year) VALUES ('2024','item_brand_13_140',14000000000, 4000000000,80,100);
|
||||
|
||||
1076
launchers/standalone/src/main/resources/db/data-postgres-demo.sql
Normal file
1076
launchers/standalone/src/main/resources/db/data-postgres-demo.sql
Normal file
File diff suppressed because it is too large
Load Diff
20
launchers/standalone/src/main/resources/db/data-postgres.sql
Normal file
20
launchers/standalone/src/main/resources/db/data-postgres.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
-- sample user
|
||||
-- The default value for the password is 123456
|
||||
insert into s2_user (id, "name", password, salt, display_name, email, is_admin) values (1, 'admin','c3VwZXJzb25pY0BiaWNvbdktJJYWw6A3rEmBUPzbn/6DNeYnD+y3mAwDKEMS3KVT','jGl25bVBBBW96Qi9Te4V3w==','admin','admin@xx.com', 1);
|
||||
insert into s2_user (id, "name", password, salt, display_name, email) values (2, 'jack','c3VwZXJzb25pY0BiaWNvbWxGalmwa0h/trkh/3CWOYMDiku0Op1VmOfESIKmN0HG','MWERWefm/3hD6kYndF6JIg==','jack','jack@xx.com');
|
||||
insert into s2_user (id, "name", password, salt, display_name, email) values (3, 'tom','c3VwZXJzb25pY0BiaWNvbVWv0CZ6HzeX8GRUpw0C8NSaQ+0hE/dAcmzRpCFwAqxK','4WCPdcXXgT89QDHLML+3hg==','tom','tom@xx.com');
|
||||
insert into s2_user (id, "name", password, salt, display_name, email, is_admin) values (4, 'lucy','c3VwZXJzb25pY0BiaWNvbc7Ychfu99lPL7rLmCkf/vgF4RASa4Z++Mxo1qlDCpci','3Jnpqob6uDoGLP9eCAg5Fw==','lucy','lucy@xx.com', 1);
|
||||
insert into s2_user (id, "name", password, salt, display_name, email) values (5, 'alice','c3VwZXJzb25pY0BiaWNvbe9Z4F2/DVIfAJoN1HwUTuH1KgVuiusvfh7KkWYQSNHk','K9gGyX8OAK8aH8Myj6djqQ==','alice','alice@xx.com');
|
||||
|
||||
|
||||
INSERT INTO s2_available_date_info (item_id, type, date_format, start_date, end_date, unavailable_date, created_at, created_by, updated_at, updated_by)
|
||||
VALUES (1, 'dimension', 'yyyy-MM-dd', CURRENT_DATE - INTERVAL '28 days', CURRENT_DATE - INTERVAL '1 day', '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
|
||||
INSERT INTO s2_available_date_info (item_id, type, date_format, start_date, end_date, unavailable_date, created_at, created_by, updated_at, updated_by)
|
||||
VALUES (2, 'dimension', 'yyyy-MM-dd', CURRENT_DATE - INTERVAL '28 days', CURRENT_DATE - INTERVAL '1 day', '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
|
||||
INSERT INTO s2_available_date_info (item_id, type, date_format, start_date, end_date, unavailable_date, created_at, created_by, updated_at, updated_by)
|
||||
VALUES (3, 'dimension', 'yyyy-MM-dd', CURRENT_DATE - INTERVAL '28 days', CURRENT_DATE - INTERVAL '1 day', '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
|
||||
insert into s2_canvas("id", "domain_id", "type", "config" ,"created_at" ,"created_by" ,"updated_at" ,"updated_by" )
|
||||
values (1, 1, 'modelEdgeRelation', '[{"source":"datasource-1","target":"datasource-3","type":"polyline","id":"edge-0.305251275235679741702883718912","style":{"active":{"stroke":"rgb(95, 149, 255)","lineWidth":1},"selected":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"shadowColor":"rgb(95, 149, 255)","shadowBlur":10,"text-shape":{"fontWeight":500}},"highlight":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"text-shape":{"fontWeight":500}},"inactive":{"stroke":"rgb(234, 234, 234)","lineWidth":1},"disable":{"stroke":"rgb(245, 245, 245)","lineWidth":1},"stroke":"#296df3","endArrow":true},"startPoint":{"x":-94,"y":-137.5,"anchorIndex":0,"id":"-94|||-137.5"},"endPoint":{"x":-234,"y":-45,"anchorIndex":1,"id":"-234|||-45"},"sourceAnchor":2,"targetAnchor":1,"label":"模型关系编辑"},{"source":"datasource-1","target":"datasource-2","type":"polyline","id":"edge-0.466237264629309141702883756359","style":{"active":{"stroke":"rgb(95, 149, 255)","lineWidth":1},"selected":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"shadowColor":"rgb(95, 149, 255)","shadowBlur":10,"text-shape":{"fontWeight":500}},"highlight":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"text-shape":{"fontWeight":500}},"inactive":{"stroke":"rgb(234, 234, 234)","lineWidth":1},"disable":{"stroke":"rgb(245, 245, 245)","lineWidth":1},"stroke":"#296df3","endArrow":true},"startPoint":{"x":-12,"y":-137.5,"anchorIndex":1,"id":"-12|||-137.5"},"endPoint":{"x":85,"y":31.5,"anchorIndex":0,"id":"85|||31.5"},"sourceAnchor":1,"targetAnchor":2,"label":"模型关系编辑"}]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
@@ -42,15 +42,6 @@ CREATE TABLE IF NOT EXISTS `genre` (
|
||||
);
|
||||
COMMENT ON TABLE genre IS 'genre';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `artist` (
|
||||
`artist_name` varchar(50) NOT NULL , -- genre name
|
||||
`citizenship` varchar(20) ,
|
||||
`gender` varchar(20) ,
|
||||
`g_name` varchar(50),
|
||||
PRIMARY KEY (`artist_name`,`citizenship`)
|
||||
);
|
||||
COMMENT ON TABLE artist IS 'artist';
|
||||
|
||||
-------S2CompanyDemo
|
||||
CREATE TABLE IF NOT EXISTS `company` (
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
|
||||
@@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context`
|
||||
(
|
||||
`chat_id` BIGINT NOT NULL , -- context chat id
|
||||
`modified_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , -- row modify time
|
||||
`user` varchar(64) DEFAULT NULL , -- row modify user
|
||||
`query_user` varchar(64) DEFAULT NULL , -- row modify user
|
||||
`query_text` LONGVARCHAR DEFAULT NULL , -- query text
|
||||
`semantic_parse` LONGVARCHAR DEFAULT NULL , -- parse data
|
||||
`ext_data` LONGVARCHAR DEFAULT NULL , -- extend data
|
||||
@@ -290,7 +290,7 @@ CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
|
||||
`trace_id` varchar(200) DEFAULT NULL, -- query unique identifier
|
||||
`model_id` INT DEFAULT NULL,
|
||||
`data_set_id` INT DEFAULT NULL,
|
||||
`user` varchar(200) DEFAULT NULL,
|
||||
`query_user` varchar(200) DEFAULT NULL,
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
|
||||
`query_type` varchar(200) DEFAULT NULL, -- the corresponding scene
|
||||
`query_type_back` INT DEFAULT '0' , -- query type, 0-normal query, 1-pre-refresh type
|
||||
@@ -322,28 +322,6 @@ CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
|
||||
) ;
|
||||
COMMENT ON TABLE s2_query_stat_info IS 'query statistics table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_semantic_pasre_info` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`trace_id` varchar(200) NOT NULL ,
|
||||
`model_id` INT NOT NULL ,
|
||||
`dimensions`LONGVARCHAR ,
|
||||
`metrics`LONGVARCHAR ,
|
||||
`orders`LONGVARCHAR ,
|
||||
`filters`LONGVARCHAR ,
|
||||
`date_info`LONGVARCHAR ,
|
||||
`limit` INT NOT NULL ,
|
||||
`native_query` TINYINT NOT NULL DEFAULT '0' ,
|
||||
`sql`LONGVARCHAR ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`status` INT NOT NULL ,
|
||||
`elapsed_ms` bigINT DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_semantic_pasre_info IS 'semantic layer sql parsing information table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_available_date_info` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`item_id` INT NOT NULL ,
|
||||
|
||||
@@ -17,6 +17,7 @@ CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
|
||||
`page` varchar(200) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- S2ArtistDemo
|
||||
CREATE TABLE IF NOT EXISTS `singer` (
|
||||
`singer_name` varchar(200) NOT NULL,
|
||||
`act_area` varchar(200) NOT NULL,
|
||||
@@ -27,7 +28,6 @@ CREATE TABLE IF NOT EXISTS `singer` (
|
||||
`favor_cnt` bigint DEFAULT NULL
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- S2ArtistDemo
|
||||
CREATE TABLE IF NOT EXISTS `genre` (
|
||||
`g_name` varchar(20) NOT NULL , -- genre name
|
||||
`rating` INT ,
|
||||
@@ -35,31 +35,39 @@ CREATE TABLE IF NOT EXISTS `genre` (
|
||||
PRIMARY KEY (`g_name`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `artist` (
|
||||
`artist_name` varchar(50) NOT NULL , -- genre name
|
||||
`citizenship` varchar(20) ,
|
||||
`gender` varchar(20) ,
|
||||
`g_name` varchar(50)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
-- S2CompanyDemo
|
||||
CREATE TABLE IF NOT EXISTS `company` (
|
||||
`company_id` varchar(50) NOT NULL,
|
||||
`company_name` varchar(50) NOT NULL,
|
||||
`headquarter_address` varchar(50) NOT NULL,
|
||||
`company_established_time` varchar(20) NOT NULL,
|
||||
`founder` varchar(20) NOT NULL,
|
||||
`ceo` varchar(20) NOT NULL,
|
||||
`annual_turnover` bigint(15),
|
||||
`employee_count` int(7),
|
||||
PRIMARY KEY (`company_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `files` (
|
||||
`f_id` bigINT NOT NULL,
|
||||
`artist_name` varchar(50) ,
|
||||
`file_size` varchar(20) ,
|
||||
`duration` varchar(20) ,
|
||||
`formats` varchar(20) ,
|
||||
PRIMARY KEY (`f_id`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
CREATE TABLE IF NOT EXISTS `brand` (
|
||||
`brand_id` varchar(50) NOT NULL,
|
||||
`brand_name` varchar(50) NOT NULL,
|
||||
`brand_established_time` varchar(20) NOT NULL,
|
||||
`company_id` varchar(50) NOT NULL,
|
||||
`legal_representative` varchar(20) NOT NULL,
|
||||
`registered_capital` bigint(15),
|
||||
PRIMARY KEY (`brand_id`),
|
||||
KEY `idx_company_id` (`company_id`),
|
||||
CONSTRAINT `fk_brand_company` FOREIGN KEY (`company_id`) REFERENCES `company` (`company_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `song` (
|
||||
`imp_date` varchar(50) ,
|
||||
`song_name` varchar(50) ,
|
||||
`artist_name` varchar(50) ,
|
||||
`country` varchar(20) ,
|
||||
`f_id` bigINT ,
|
||||
`g_name` varchar(20) ,
|
||||
`rating` int ,
|
||||
`languages` varchar(20) ,
|
||||
`releasedate` varchar(50) ,
|
||||
`resolution` bigINT NOT NULL
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
CREATE TABLE IF NOT EXISTS `brand_revenue` (
|
||||
`year_time` varchar(10) NOT NULL,
|
||||
`brand_id` varchar(50) NOT NULL,
|
||||
`revenue` bigint(15) NOT NULL,
|
||||
`profit` bigint(15) NOT NULL,
|
||||
`revenue_growth_year_on_year` double NOT NULL,
|
||||
`profit_growth_year_on_year` double NOT NULL,
|
||||
PRIMARY KEY (`year_time`, `brand_id`),
|
||||
KEY `idx_brand_id` (`brand_id`),
|
||||
CONSTRAINT `fk_brand_revenue_brand` FOREIGN KEY (`brand_id`) REFERENCES `brand` (`brand_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -95,7 +95,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_context` (
|
||||
`chat_id` bigint(20) NOT NULL COMMENT 'context chat id',
|
||||
`modified_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'row modify time',
|
||||
`user` varchar(64) DEFAULT NULL COMMENT 'row modify user',
|
||||
`query_user` varchar(64) DEFAULT NULL COMMENT 'row modify user',
|
||||
`query_text` text COMMENT 'query text',
|
||||
`semantic_parse` text COMMENT 'parse data',
|
||||
`ext_data` text COMMENT 'extend data',
|
||||
@@ -327,7 +327,7 @@ CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
|
||||
`trace_id` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询标识',
|
||||
`model_id` bigint(20) DEFAULT NULL,
|
||||
`data_set_id` bigint(20) DEFAULT NULL,
|
||||
`user` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '执行sql的用户',
|
||||
`query_user` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '执行sql的用户',
|
||||
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`query_type` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '查询对应的场景',
|
||||
`query_type_back` int(10) DEFAULT '0' COMMENT '查询类型, 0-正常查询, 1-预刷类型',
|
||||
@@ -359,26 +359,6 @@ CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
|
||||
KEY `domain_index` (`model_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='查询统计信息表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_semantic_pasre_info` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`trace_id` varchar(200) NOT NULL COMMENT '查询标识',
|
||||
`domain_id` bigint(20) NOT NULL COMMENT '主体域ID',
|
||||
`dimensions` mediumtext COMMENT '查询相关的维度信息',
|
||||
`metrics` mediumtext COMMENT '查询相关的指标信息',
|
||||
`orders` mediumtext COMMENT '查询相关的排序信息',
|
||||
`filters` mediumtext COMMENT '查询相关的过滤信息',
|
||||
`date_info` mediumtext COMMENT '查询相关的日期信息',
|
||||
`limit` bigint(20) NOT NULL COMMENT '查询相关的limit信息',
|
||||
`native_query` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1-明细查询,0-聚合查询',
|
||||
`sql` mediumtext COMMENT '解析后的sql',
|
||||
`created_at` datetime NOT NULL COMMENT '创建时间',
|
||||
`created_by` varchar(100) NOT NULL COMMENT '创建人',
|
||||
`status` tinyint NOT NULL COMMENT '运行状态',
|
||||
`elapsed_ms` bigint(10) DEFAULT NULL COMMENT 'sql解析耗时',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='语义层sql解析信息表';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_canvas`
|
||||
(
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
-- S2VisitsDemo
|
||||
CREATE TABLE IF NOT EXISTS s2_user_department (
|
||||
user_name varchar(200) NOT NULL,
|
||||
department varchar(200) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_pv_uv_statis (
|
||||
imp_date varchar(200) NOT NULL,
|
||||
user_name varchar(200) NOT NULL,
|
||||
page varchar(200) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_stay_time_statis (
|
||||
imp_date varchar(200) NOT NULL,
|
||||
user_name varchar(200) NOT NULL,
|
||||
stay_hours double precision NOT NULL,
|
||||
page varchar(200) NOT NULL
|
||||
);
|
||||
|
||||
-- S2ArtistDemo
|
||||
CREATE TABLE IF NOT EXISTS singer (
|
||||
singer_name varchar(200) NOT NULL,
|
||||
act_area varchar(200) NOT NULL,
|
||||
song_name varchar(200) NOT NULL,
|
||||
genre varchar(200) NOT NULL,
|
||||
js_play_cnt bigint DEFAULT NULL,
|
||||
down_cnt bigint DEFAULT NULL,
|
||||
favor_cnt bigint DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS genre (
|
||||
g_name varchar(20) NOT NULL PRIMARY KEY,
|
||||
rating integer,
|
||||
most_popular_in varchar(50)
|
||||
);
|
||||
|
||||
-- S2CompanyDemo
|
||||
CREATE TABLE IF NOT EXISTS company (
|
||||
company_id varchar(50) NOT NULL,
|
||||
company_name varchar(50) NOT NULL,
|
||||
headquarter_address varchar(50) NOT NULL,
|
||||
company_established_time varchar(20) NOT NULL,
|
||||
founder varchar(20) NOT NULL,
|
||||
ceo varchar(20) NOT NULL,
|
||||
annual_turnover bigint,
|
||||
employee_count integer,
|
||||
PRIMARY KEY (company_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS brand (
|
||||
brand_id varchar(50) NOT NULL,
|
||||
brand_name varchar(50) NOT NULL,
|
||||
brand_established_time varchar(20) NOT NULL,
|
||||
company_id varchar(50) NOT NULL,
|
||||
legal_representative varchar(20) NOT NULL,
|
||||
registered_capital bigint,
|
||||
PRIMARY KEY (brand_id),
|
||||
CONSTRAINT fk_brand_company FOREIGN KEY (company_id) REFERENCES company (company_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS brand_revenue (
|
||||
year_time varchar(10) NOT NULL,
|
||||
brand_id varchar(50) NOT NULL,
|
||||
revenue bigint NOT NULL,
|
||||
profit bigint NOT NULL,
|
||||
revenue_growth_year_on_year double precision NOT NULL,
|
||||
profit_growth_year_on_year double precision NOT NULL,
|
||||
PRIMARY KEY (year_time, brand_id),
|
||||
CONSTRAINT fk_brand_revenue_brand FOREIGN KEY (brand_id) REFERENCES brand (brand_id)
|
||||
);
|
||||
494
launchers/standalone/src/main/resources/db/schema-postgres.sql
Normal file
494
launchers/standalone/src/main/resources/db/schema-postgres.sql
Normal file
@@ -0,0 +1,494 @@
|
||||
CREATE TABLE IF NOT EXISTS s2_agent (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(100) DEFAULT NULL,
|
||||
description TEXT DEFAULT NULL,
|
||||
examples TEXT DEFAULT NULL,
|
||||
status smallint DEFAULT NULL,
|
||||
model varchar(100) DEFAULT NULL,
|
||||
tool_config varchar(6000) DEFAULT NULL,
|
||||
llm_config varchar(2000) DEFAULT NULL,
|
||||
chat_model_config text DEFAULT NULL,
|
||||
visual_config varchar(2000) DEFAULT NULL,
|
||||
enable_search smallint DEFAULT 1,
|
||||
enable_feedback smallint DEFAULT 1,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
created_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
admin varchar(1000) DEFAULT NULL,
|
||||
viewer varchar(1000) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_auth_groups (
|
||||
group_id integer NOT NULL PRIMARY KEY,
|
||||
config varchar(2048) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_available_date_info (
|
||||
id SERIAL PRIMARY KEY,
|
||||
item_id integer NOT NULL,
|
||||
type varchar(255) NOT NULL,
|
||||
date_format varchar(64) NOT NULL,
|
||||
date_period varchar(64) DEFAULT NULL,
|
||||
start_date varchar(64) DEFAULT NULL,
|
||||
end_date varchar(64) DEFAULT NULL,
|
||||
unavailable_date text,
|
||||
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
status smallint DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat (
|
||||
chat_id SERIAL PRIMARY KEY,
|
||||
agent_id integer DEFAULT NULL,
|
||||
chat_name varchar(300) DEFAULT NULL,
|
||||
create_time timestamp DEFAULT NULL,
|
||||
last_time timestamp DEFAULT NULL,
|
||||
creator varchar(30) DEFAULT NULL,
|
||||
last_question varchar(200) DEFAULT NULL,
|
||||
is_delete smallint DEFAULT 0,
|
||||
is_top smallint DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_config (
|
||||
id SERIAL PRIMARY KEY,
|
||||
model_id bigint DEFAULT NULL,
|
||||
chat_detail_config text,
|
||||
chat_agg_config text,
|
||||
recommended_questions text,
|
||||
created_at timestamp NOT NULL,
|
||||
updated_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
status smallint NOT NULL,
|
||||
llm_examples text
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_memory (
|
||||
id SERIAL PRIMARY KEY,
|
||||
question varchar(655),
|
||||
side_info TEXT,
|
||||
agent_id INTEGER,
|
||||
db_schema TEXT,
|
||||
s2_sql TEXT,
|
||||
status char(10),
|
||||
llm_review char(10),
|
||||
llm_comment TEXT,
|
||||
human_review char(10),
|
||||
human_comment TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_context (
|
||||
chat_id bigint NOT NULL PRIMARY KEY,
|
||||
modified_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
query_user varchar(64) DEFAULT NULL,
|
||||
query_text text,
|
||||
semantic_parse text,
|
||||
ext_data text
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_parse (
|
||||
question_id bigint NOT NULL,
|
||||
chat_id integer NOT NULL,
|
||||
parse_id integer NOT NULL,
|
||||
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
query_text varchar(500) DEFAULT NULL,
|
||||
user_name varchar(150) DEFAULT NULL,
|
||||
parse_info text NOT NULL,
|
||||
is_candidate integer DEFAULT 1,
|
||||
CONSTRAINT commonIndex UNIQUE (question_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_query (
|
||||
question_id SERIAL PRIMARY KEY,
|
||||
agent_id integer DEFAULT NULL,
|
||||
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
query_text text,
|
||||
user_name varchar(150) DEFAULT NULL,
|
||||
query_state smallint DEFAULT NULL,
|
||||
chat_id bigint NOT NULL,
|
||||
query_result text,
|
||||
score integer DEFAULT 0,
|
||||
feedback varchar(1024) DEFAULT '',
|
||||
similar_queries varchar(1024) DEFAULT '',
|
||||
parse_time_cost varchar(1024) DEFAULT ''
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_statistics (
|
||||
question_id bigint NOT NULL,
|
||||
chat_id bigint NOT NULL,
|
||||
user_name varchar(150) DEFAULT NULL,
|
||||
query_text varchar(200) DEFAULT NULL,
|
||||
interface_name varchar(100) DEFAULT NULL,
|
||||
cost integer DEFAULT 0,
|
||||
type integer DEFAULT NULL,
|
||||
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_chat_model (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
config text NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NOT NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
admin varchar(500) DEFAULT NULL,
|
||||
viewer varchar(500) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_database (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
version varchar(64) DEFAULT NULL,
|
||||
type varchar(20) NOT NULL,
|
||||
config text NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NOT NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
admin varchar(500) DEFAULT NULL,
|
||||
viewer varchar(500) DEFAULT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_dictionary_conf (
|
||||
id SERIAL PRIMARY KEY,
|
||||
description varchar(255),
|
||||
type varchar(255) NOT NULL,
|
||||
item_id INTEGER NOT NULL,
|
||||
config text,
|
||||
status varchar(255) NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_dictionary_task (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(255) NOT NULL,
|
||||
description varchar(255),
|
||||
type varchar(255) NOT NULL,
|
||||
item_id INTEGER NOT NULL,
|
||||
config text,
|
||||
status varchar(255) NOT NULL,
|
||||
created_at timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by varchar(100) NOT NULL,
|
||||
elapsed_ms integer DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_dimension (
|
||||
id SERIAL PRIMARY KEY,
|
||||
model_id bigint DEFAULT NULL,
|
||||
name varchar(255) NOT NULL,
|
||||
biz_name varchar(255) NOT NULL,
|
||||
description varchar(500) NOT NULL,
|
||||
status smallint NOT NULL,
|
||||
sensitive_level integer DEFAULT NULL,
|
||||
type varchar(50) NOT NULL,
|
||||
type_params text,
|
||||
data_type varchar(50) DEFAULT NULL,
|
||||
expr text NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NOT NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
semantic_type varchar(20) NOT NULL,
|
||||
alias varchar(500) DEFAULT NULL,
|
||||
default_values varchar(500) DEFAULT NULL,
|
||||
dim_value_maps varchar(5000) DEFAULT NULL,
|
||||
is_tag smallint DEFAULT NULL,
|
||||
ext varchar(1000) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_domain (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(255) DEFAULT NULL,
|
||||
biz_name varchar(255) DEFAULT NULL,
|
||||
parent_id bigint DEFAULT 0,
|
||||
status smallint NOT NULL,
|
||||
created_at timestamp DEFAULT NULL,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
admin varchar(3000) DEFAULT NULL,
|
||||
admin_org varchar(3000) DEFAULT NULL,
|
||||
is_open smallint DEFAULT NULL,
|
||||
viewer varchar(3000) DEFAULT NULL,
|
||||
view_org varchar(3000) DEFAULT NULL,
|
||||
entity varchar(500) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_metric (
|
||||
id SERIAL PRIMARY KEY,
|
||||
model_id bigint DEFAULT NULL,
|
||||
name varchar(255) NOT NULL,
|
||||
biz_name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
status smallint NOT NULL,
|
||||
sensitive_level smallint NOT NULL,
|
||||
type varchar(50) NOT NULL,
|
||||
type_params text NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NOT NULL,
|
||||
updated_by varchar(100) NOT NULL,
|
||||
data_format_type varchar(50) DEFAULT NULL,
|
||||
data_format varchar(500) DEFAULT NULL,
|
||||
alias varchar(500) DEFAULT NULL,
|
||||
classifications varchar(500) DEFAULT NULL,
|
||||
relate_dimensions varchar(500) DEFAULT NULL,
|
||||
ext text DEFAULT NULL,
|
||||
define_type varchar(50) DEFAULT NULL,
|
||||
is_publish smallint DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_model (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(100) DEFAULT NULL,
|
||||
biz_name varchar(100) DEFAULT NULL,
|
||||
domain_id bigint DEFAULT NULL,
|
||||
alias varchar(200) DEFAULT NULL,
|
||||
status smallint DEFAULT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
viewer varchar(500) DEFAULT NULL,
|
||||
view_org varchar(500) DEFAULT NULL,
|
||||
admin varchar(500) DEFAULT NULL,
|
||||
admin_org varchar(500) DEFAULT NULL,
|
||||
is_open smallint DEFAULT NULL,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
created_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
entity text,
|
||||
drill_down_dimensions TEXT DEFAULT NULL,
|
||||
database_id INTEGER NOT NULL,
|
||||
model_detail text NOT NULL,
|
||||
source_type varchar(128) DEFAULT NULL,
|
||||
depends varchar(500) DEFAULT NULL,
|
||||
filter_sql varchar(1000) DEFAULT NULL,
|
||||
tag_object_id integer DEFAULT 0,
|
||||
ext varchar(1000) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_data_set (
|
||||
id SERIAL PRIMARY KEY,
|
||||
domain_id bigint,
|
||||
name varchar(255),
|
||||
biz_name varchar(255),
|
||||
description varchar(255),
|
||||
status integer,
|
||||
alias varchar(255),
|
||||
data_set_detail text,
|
||||
created_at timestamp,
|
||||
created_by varchar(255),
|
||||
updated_at timestamp,
|
||||
updated_by varchar(255),
|
||||
query_config varchar(3000),
|
||||
admin varchar(3000) DEFAULT NULL,
|
||||
admin_org varchar(3000) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_tag (
|
||||
id SERIAL PRIMARY KEY,
|
||||
item_id INTEGER NOT NULL,
|
||||
type varchar(255) NOT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
ext text DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_tag_object (
|
||||
id SERIAL PRIMARY KEY,
|
||||
domain_id bigint DEFAULT NULL,
|
||||
name varchar(255) NOT NULL,
|
||||
biz_name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
status smallint NOT NULL DEFAULT 1,
|
||||
sensitive_level smallint NOT NULL DEFAULT 0,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp NULL,
|
||||
updated_by varchar(100) NULL,
|
||||
ext text DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_query_rule (
|
||||
id SERIAL PRIMARY KEY,
|
||||
data_set_id bigint,
|
||||
priority integer NOT NULL DEFAULT 1,
|
||||
rule_type varchar(255) NOT NULL,
|
||||
name varchar(255) NOT NULL,
|
||||
biz_name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
rule text DEFAULT NULL,
|
||||
action text DEFAULT NULL,
|
||||
status INTEGER NOT NULL DEFAULT 1,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
ext text DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_term (
|
||||
id SERIAL PRIMARY KEY,
|
||||
domain_id bigint,
|
||||
name varchar(255) NOT NULL,
|
||||
description varchar(500) DEFAULT NULL,
|
||||
alias varchar(1000) NOT NULL,
|
||||
related_metrics varchar(1000) DEFAULT NULL,
|
||||
related_dimensions varchar(1000) DEFAULT NULL,
|
||||
created_at timestamp NOT NULL,
|
||||
created_by varchar(100) NOT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_user_token (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
user_name VARCHAR(255) NOT NULL,
|
||||
expire_time bigint NOT NULL,
|
||||
token text NOT NULL,
|
||||
salt VARCHAR(255) default NULL,
|
||||
create_time TIMESTAMP NOT NULL,
|
||||
create_by VARCHAR(255) NOT NULL,
|
||||
update_time TIMESTAMP default NULL,
|
||||
update_by VARCHAR(255) NOT NULL,
|
||||
expire_date_time TIMESTAMP NOT NULL,
|
||||
UNIQUE (name, user_name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_app (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
description VARCHAR(255),
|
||||
status INTEGER,
|
||||
config TEXT,
|
||||
end_date timestamp,
|
||||
qps INTEGER,
|
||||
app_secret VARCHAR(255),
|
||||
owner VARCHAR(255),
|
||||
created_at timestamp NULL,
|
||||
updated_at timestamp NULL,
|
||||
created_by varchar(255) NULL,
|
||||
updated_by varchar(255) NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_plugin (
|
||||
id SERIAL PRIMARY KEY,
|
||||
type varchar(50) DEFAULT NULL,
|
||||
data_set varchar(100) DEFAULT NULL,
|
||||
pattern varchar(500) DEFAULT NULL,
|
||||
parse_mode varchar(100) DEFAULT NULL,
|
||||
parse_mode_config text,
|
||||
name varchar(100) DEFAULT NULL,
|
||||
created_at timestamp DEFAULT NULL,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) DEFAULT NULL,
|
||||
config text,
|
||||
comment text
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_query_stat_info (
|
||||
id SERIAL PRIMARY KEY,
|
||||
trace_id varchar(200) DEFAULT NULL,
|
||||
model_id bigint DEFAULT NULL,
|
||||
data_set_id bigint DEFAULT NULL,
|
||||
query_user varchar(200) DEFAULT NULL,
|
||||
created_at timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||
query_type varchar(200) DEFAULT NULL,
|
||||
query_type_back integer DEFAULT 0,
|
||||
query_sql_cmd text,
|
||||
sql_cmd_md5 varchar(200) DEFAULT NULL,
|
||||
query_struct_cmd text,
|
||||
struct_cmd_md5 varchar(200) DEFAULT NULL,
|
||||
sql text,
|
||||
sql_md5 varchar(200) DEFAULT NULL,
|
||||
query_engine varchar(20) DEFAULT NULL,
|
||||
elapsed_ms bigint DEFAULT NULL,
|
||||
query_state varchar(20) DEFAULT NULL,
|
||||
native_query boolean DEFAULT false,
|
||||
start_date varchar(50) DEFAULT NULL,
|
||||
end_date varchar(50) DEFAULT NULL,
|
||||
dimensions text,
|
||||
metrics text,
|
||||
select_cols text,
|
||||
agg_cols text,
|
||||
filter_cols text,
|
||||
group_by_cols text,
|
||||
order_by_cols text,
|
||||
use_result_cache boolean DEFAULT false,
|
||||
use_sql_cache boolean DEFAULT false,
|
||||
sql_cache_key text,
|
||||
result_cache_key text,
|
||||
query_opt_mode varchar(20) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_canvas (
|
||||
id SERIAL PRIMARY KEY,
|
||||
domain_id bigint DEFAULT NULL,
|
||||
type varchar(20) DEFAULT NULL,
|
||||
config text,
|
||||
created_at timestamp DEFAULT NULL,
|
||||
created_by varchar(100) DEFAULT NULL,
|
||||
updated_at timestamp DEFAULT NULL,
|
||||
updated_by varchar(100) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_system_config (
|
||||
id SERIAL PRIMARY KEY,
|
||||
admin varchar(500),
|
||||
parameters text
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_model_rela (
|
||||
id SERIAL PRIMARY KEY,
|
||||
domain_id bigint,
|
||||
from_model_id bigint,
|
||||
to_model_id bigint,
|
||||
join_type VARCHAR(255),
|
||||
join_condition VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_collect (
|
||||
id SERIAL PRIMARY KEY,
|
||||
type varchar(20) NOT NULL,
|
||||
username varchar(20) NOT NULL,
|
||||
collect_id bigint NOT NULL,
|
||||
create_time timestamp,
|
||||
update_time timestamp
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_metric_query_default_config (
|
||||
id SERIAL PRIMARY KEY,
|
||||
metric_id bigint,
|
||||
user_name varchar(255) NOT NULL,
|
||||
default_config varchar(1000) NOT NULL,
|
||||
created_at timestamp NULL,
|
||||
updated_at timestamp NULL,
|
||||
created_by varchar(100) NULL,
|
||||
updated_by varchar(100) NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_user (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name varchar(100) NOT NULL,
|
||||
display_name varchar(100) NULL,
|
||||
password varchar(256) NULL,
|
||||
salt varchar(256) DEFAULT NULL,
|
||||
email varchar(100) NULL,
|
||||
is_admin smallint NULL
|
||||
);
|
||||
@@ -1,5 +1,4 @@
|
||||
s2:
|
||||
|
||||
schema:
|
||||
cache:
|
||||
enable: true
|
||||
|
||||
@@ -6,12 +6,14 @@ import com.tencent.supersonic.chat.api.pojo.request.ChatExecuteReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.ChatParseResp;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.chat.server.agent.Agent;
|
||||
import com.tencent.supersonic.chat.server.service.AgentService;
|
||||
import com.tencent.supersonic.chat.server.service.ChatQueryService;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.service.ChatModelService;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.QueryState;
|
||||
import com.tencent.supersonic.headless.server.service.SchemaService;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
@@ -33,6 +35,9 @@ public class BaseTest extends BaseApplication {
|
||||
protected final String endDay = LocalDate.now().toString();
|
||||
protected final DatePeriodEnum period = DatePeriodEnum.DAY;
|
||||
|
||||
protected Agent agent;
|
||||
protected SemanticSchema schema;
|
||||
|
||||
@Autowired
|
||||
protected ChatQueryService chatQueryService;
|
||||
@Autowired
|
||||
@@ -44,23 +49,14 @@ public class BaseTest extends BaseApplication {
|
||||
|
||||
@Value("${s2.demo.enableLLM:false}")
|
||||
protected boolean enableLLM;
|
||||
protected int agentId;
|
||||
|
||||
|
||||
protected List<Long> durations = Lists.newArrayList();
|
||||
|
||||
protected QueryResult submitMultiTurnChat(String queryText, Integer agentId, Integer chatId)
|
||||
throws Exception {
|
||||
ChatParseResp parseResp = submitParse(queryText, agentId, chatId);
|
||||
protected Agent getAgentByName(String agentName) {
|
||||
Optional<Agent> agent = agentService.getAgents().stream()
|
||||
.filter(a -> a.getName().equals(agentName)).findFirst();
|
||||
|
||||
SemanticParseInfo semanticParseInfo = parseResp.getSelectedParses().get(0);
|
||||
ChatExecuteReq request =
|
||||
ChatExecuteReq.builder().queryText(queryText).user(DataUtils.getUser())
|
||||
.parseId(semanticParseInfo.getId()).queryId(parseResp.getQueryId())
|
||||
.chatId(chatId).agentId(agentId).saveAnswer(true).build();
|
||||
QueryResult queryResult = chatQueryService.execute(request);
|
||||
queryResult.setChatContext(semanticParseInfo);
|
||||
return queryResult;
|
||||
return agent.orElse(null);
|
||||
}
|
||||
|
||||
protected QueryResult submitNewChat(String queryText, Integer agentId) throws Exception {
|
||||
@@ -79,8 +75,8 @@ public class BaseTest extends BaseApplication {
|
||||
|
||||
protected ChatParseResp submitParse(String queryText, Integer agentId, Integer chatId) {
|
||||
|
||||
ChatParseReq chatParseReq = DataUtils.getChatParseReq(chatId, queryText, enableLLM);
|
||||
chatParseReq.setAgentId(agentId);
|
||||
ChatParseReq chatParseReq =
|
||||
DataUtils.getChatParseReq(chatId, agentId, queryText, enableLLM);
|
||||
return chatQueryService.parse(chatParseReq);
|
||||
}
|
||||
|
||||
@@ -111,9 +107,9 @@ public class BaseTest extends BaseApplication {
|
||||
assertEquals(expectedParseInfo.getDateInfo(), actualParseInfo.getDateInfo());
|
||||
}
|
||||
|
||||
protected SchemaElement getSchemaElementByName(Set<SchemaElement> elementSet, String name) {
|
||||
protected SchemaElement getSchemaElementByName(List<SchemaElement> elements, String name) {
|
||||
Optional<SchemaElement> matchElement =
|
||||
elementSet.stream().filter(e -> e.getName().equals(name)).findFirst();
|
||||
elements.stream().filter(e -> e.getName().equals(name)).findFirst();
|
||||
return matchElement.orElse(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,14 @@ import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.demo.S2SingerDemo;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryFilter;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.detail.DetailDimensionQuery;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junitpioneer.jupiter.SetSystemProperty;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -20,10 +21,16 @@ import org.springframework.boot.test.context.SpringBootTest;
|
||||
@Slf4j
|
||||
public class DetailTest extends BaseTest {
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
agent = getAgentByName(S2SingerDemo.AGENT_NAME);
|
||||
schema = schemaService.getSemanticSchema(agent.getDataSetIds());
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void test_detail_dimension() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("周杰伦流派和代表作", DataUtils.singerAgentId);
|
||||
QueryResult actualResult = submitNewChat("周杰伦流派和代表作", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -33,7 +40,6 @@ public class DetailTest extends BaseTest {
|
||||
expectedParseInfo.setQueryType(QueryType.DETAIL);
|
||||
expectedParseInfo.setAggType(AggregateTypeEnum.NONE);
|
||||
|
||||
DataSetSchema schema = schemaService.getDataSetSchema(DataUtils.singerDatasettId);
|
||||
SchemaElement singerElement = getSchemaElementByName(schema.getDimensions(), "歌手名");
|
||||
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("singer_name", FilterOperatorEnum.EQUALS,
|
||||
@@ -49,7 +55,7 @@ public class DetailTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void test_detail_filter() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("国风歌手", DataUtils.singerAgentId);
|
||||
QueryResult actualResult = submitNewChat("国风歌手", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -59,7 +65,6 @@ public class DetailTest extends BaseTest {
|
||||
expectedParseInfo.setQueryType(QueryType.DETAIL);
|
||||
expectedParseInfo.setAggType(AggregateTypeEnum.NONE);
|
||||
|
||||
DataSetSchema schema = schemaService.getDataSetSchema(DataUtils.singerDatasettId);
|
||||
SchemaElement genreElement = getSchemaElementByName(schema.getDimensions(), "流派");
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("genre", FilterOperatorEnum.EQUALS, "国风",
|
||||
"流派", genreElement.getId());
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.demo.S2VisitsDemo;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryFilter;
|
||||
@@ -14,6 +14,7 @@ import com.tencent.supersonic.headless.chat.query.rule.metric.MetricGroupByQuery
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricModelQuery;
|
||||
import com.tencent.supersonic.headless.chat.query.rule.metric.MetricTopNQuery;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junitpioneer.jupiter.SetSystemProperty;
|
||||
@@ -31,9 +32,15 @@ import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.SUM;
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
public class MetricTest extends BaseTest {
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
agent = getAgentByName(S2VisitsDemo.AGENT_NAME);
|
||||
schema = schemaService.getSemanticSchema(agent.getDataSetIds());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMetricModel() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("超音数 访问次数", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("超音数 访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -53,7 +60,7 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testMetricFilter() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("alice的访问次数", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("alice的访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -64,7 +71,6 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
|
||||
DataSetSchema schema = schemaService.getDataSetSchema(DataUtils.productDatasetId);
|
||||
SchemaElement userElement = getSchemaElementByName(schema.getDimensions(), "用户");
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
FilterOperatorEnum.EQUALS, "alice", "用户", userElement.getId()));
|
||||
@@ -80,7 +86,7 @@ public class MetricTest extends BaseTest {
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testMetricGroupBy() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数和停留时长", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数和停留时长", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -103,7 +109,7 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testMetricFilterCompare() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("对比alice和lucy的访问次数", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("对比alice和lucy的访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -117,7 +123,6 @@ public class MetricTest extends BaseTest {
|
||||
list.add("alice");
|
||||
list.add("lucy");
|
||||
|
||||
DataSetSchema schema = schemaService.getDataSetSchema(DataUtils.productDatasetId);
|
||||
SchemaElement userElement = getSchemaElementByName(schema.getDimensions(), "用户");
|
||||
QueryFilter dimensionFilter = DataUtils.getFilter("user_name", FilterOperatorEnum.IN, list,
|
||||
"用户", userElement.getId());
|
||||
@@ -134,7 +139,7 @@ public class MetricTest extends BaseTest {
|
||||
@Test
|
||||
@Order(3)
|
||||
public void testMetricTopN() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近3天访问次数最多的用户", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("近3天访问次数最多的用户", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -155,7 +160,7 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testMetricGroupBySum() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数总和", DataUtils.productAgentId);
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数总和", agent.getId());
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
expectedResult.setChatContext(expectedParseInfo);
|
||||
@@ -181,7 +186,7 @@ public class MetricTest extends BaseTest {
|
||||
String dateStr = textFormat.format(format.parse(startDay));
|
||||
|
||||
QueryResult actualResult =
|
||||
submitNewChat(String.format("alice在%s的访问次数", dateStr), DataUtils.productAgentId);
|
||||
submitNewChat(String.format("alice在%s的访问次数", dateStr), agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -190,7 +195,6 @@ public class MetricTest extends BaseTest {
|
||||
expectedResult.setQueryMode(MetricFilterQuery.QUERY_MODE);
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
|
||||
DataSetSchema schema = schemaService.getDataSetSchema(DataUtils.productDatasetId);
|
||||
SchemaElement userElement = getSchemaElementByName(schema.getDimensions(), "用户");
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensionFilters().add(DataUtils.getFilter("user_name",
|
||||
|
||||
@@ -14,26 +14,42 @@ import com.tencent.supersonic.common.pojo.ChatApp;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AppModule;
|
||||
import com.tencent.supersonic.common.util.ChatAppManager;
|
||||
import com.tencent.supersonic.demo.S2CompanyDemo;
|
||||
import com.tencent.supersonic.demo.S2VisitsDemo;
|
||||
import com.tencent.supersonic.headless.chat.corrector.LLMSqlCorrector;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import com.tencent.supersonic.util.LLMConfigUtils;
|
||||
import org.junit.jupiter.api.*;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestInstance;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
@TestPropertySource(properties = {"s2.demo.enableLLM = true"})
|
||||
@Disabled
|
||||
public class Text2SQLEval extends BaseTest {
|
||||
|
||||
private LLMConfigUtils.LLMType llmType = LLMConfigUtils.LLMType.OLLAMA_LLAMA3;
|
||||
private boolean enableLLMCorrection = true;
|
||||
private final LLMConfigUtils.LLMType llmType = LLMConfigUtils.LLMType.OLLAMA_LLAMA3;
|
||||
private final boolean enableLLMCorrection = true;
|
||||
protected final List<Long> dataSetIds = Lists.newArrayList();
|
||||
|
||||
@BeforeAll
|
||||
public void init() {
|
||||
Agent agent = agentService.createAgent(getLLMAgent(), DataUtils.getUser());
|
||||
agentId = agent.getId();
|
||||
Agent productAgent = getAgentByName(S2VisitsDemo.AGENT_NAME);
|
||||
if (Objects.nonNull(productAgent)) {
|
||||
dataSetIds.addAll(productAgent.getDataSetIds());
|
||||
}
|
||||
Agent companyAgent = getAgentByName(S2CompanyDemo.AGENT_NAME);
|
||||
if (Objects.nonNull(companyAgent)) {
|
||||
dataSetIds.addAll(companyAgent.getDataSetIds());
|
||||
}
|
||||
agent = agentService.createAgent(getLLMAgent(), DataUtils.getUser());
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
@@ -49,7 +65,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_agg() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("近30天总访问次数", agentId);
|
||||
QueryResult result = submitNewChat("近30天总访问次数", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryColumns().size() == 1;
|
||||
assert result.getTextResult().contains("511");
|
||||
@@ -58,7 +74,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_agg_and_groupby() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("近30日每天的访问次数", agentId);
|
||||
QueryResult result = submitNewChat("近30日每天的访问次数", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryColumns().size() == 2;
|
||||
assert result.getQueryResults().size() == 30;
|
||||
@@ -68,7 +84,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_drilldown() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("过去30天每个部门的汇总访问次数", agentId);
|
||||
QueryResult result = submitNewChat("过去30天每个部门的汇总访问次数", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryColumns().size() == 2;
|
||||
assert result.getQueryResults().size() == 4;
|
||||
@@ -81,7 +97,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_drilldown_and_topN() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("过去30天访问次数最高的部门top3", agentId);
|
||||
QueryResult result = submitNewChat("过去30天访问次数最高的部门top3", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryResults().size() == 3;
|
||||
assert result.getTextResult().contains("marketing");
|
||||
@@ -92,7 +108,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_filter_and_top() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("近半个月来marketing部门访问量最高的用户是谁", agentId);
|
||||
QueryResult result = submitNewChat("近半个月来marketing部门访问量最高的用户是谁", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryResults().size() == 1;
|
||||
assert result.getTextResult().contains("dean");
|
||||
@@ -101,7 +117,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_filter() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("近一个月sales部门总访问次数超过10次的用户有哪些", agentId);
|
||||
QueryResult result = submitNewChat("近一个月sales部门总访问次数超过10次的用户有哪些", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryResults().size() == 2;
|
||||
assert result.getTextResult().contains("alice");
|
||||
@@ -111,7 +127,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_filter_compare() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("alice和lucy过去半个月谁的总停留时长更多", agentId);
|
||||
QueryResult result = submitNewChat("alice和lucy过去半个月谁的总停留时长更多", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryResults().size() >= 1;
|
||||
assert result.getTextResult().contains("alice");
|
||||
@@ -120,7 +136,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_term() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("过去半个月每个核心用户的总停留时长", agentId);
|
||||
QueryResult result = submitNewChat("过去半个月每个核心用户的总停留时长", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryResults().size() == 2;
|
||||
assert result.getTextResult().contains("tom");
|
||||
@@ -130,7 +146,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_second_calculation() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("近1个月总访问次数超过100次的部门有几个", agentId);
|
||||
QueryResult result = submitNewChat("近1个月总访问次数超过100次的部门有几个", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryColumns().size() == 1;
|
||||
assert result.getTextResult().contains("3");
|
||||
@@ -139,7 +155,7 @@ public class Text2SQLEval extends BaseTest {
|
||||
@Test
|
||||
public void test_detail_query() throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
QueryResult result = submitNewChat("特斯拉旗下有哪些品牌", agentId);
|
||||
QueryResult result = submitNewChat("特斯拉旗下有哪些品牌", agent.getId());
|
||||
durations.add(System.currentTimeMillis() - start);
|
||||
assert result.getQueryColumns().size() >= 1;
|
||||
assert result.getTextResult().contains("Model Y");
|
||||
@@ -150,14 +166,12 @@ public class Text2SQLEval extends BaseTest {
|
||||
Agent agent = new Agent();
|
||||
agent.setName("Agent for Test");
|
||||
ToolConfig toolConfig = new ToolConfig();
|
||||
|
||||
DatasetTool datasetTool = new DatasetTool();
|
||||
datasetTool.setType(AgentToolType.DATASET);
|
||||
datasetTool.setDataSetIds(Lists.newArrayList(DataUtils.productDatasetId));
|
||||
datasetTool.setDataSetIds(dataSetIds);
|
||||
toolConfig.getTools().add(datasetTool);
|
||||
DatasetTool datasetTool2 = new DatasetTool();
|
||||
datasetTool2.setType(AgentToolType.DATASET);
|
||||
datasetTool2.setDataSetIds(Lists.newArrayList(DataUtils.companyDatasetId));
|
||||
toolConfig.getTools().add(datasetTool2);
|
||||
|
||||
agent.setToolConfig(JSONObject.toJSONString(toolConfig));
|
||||
// create chat model for this evaluation
|
||||
ChatModel chatModel = new ChatModel();
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.tencent.supersonic.headless;
|
||||
|
||||
import com.tencent.supersonic.BaseApplication;
|
||||
import com.tencent.supersonic.chat.server.agent.Agent;
|
||||
import com.tencent.supersonic.chat.server.service.AgentService;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.DateConf.DateMode;
|
||||
@@ -8,6 +10,7 @@ import com.tencent.supersonic.common.pojo.Order;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq;
|
||||
@@ -15,6 +18,7 @@ import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
|
||||
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.DomainDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.DomainRepository;
|
||||
import com.tencent.supersonic.headless.server.service.SchemaService;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -22,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static java.time.LocalDate.now;
|
||||
|
||||
@@ -29,9 +34,22 @@ public class BaseTest extends BaseApplication {
|
||||
|
||||
@Autowired
|
||||
protected SemanticLayerService semanticLayerService;
|
||||
|
||||
@Autowired
|
||||
private DomainRepository domainRepository;
|
||||
@Autowired
|
||||
protected SchemaService schemaService;
|
||||
@Autowired
|
||||
private AgentService agentService;
|
||||
|
||||
protected Agent agent;
|
||||
protected SemanticSchema schema;
|
||||
|
||||
protected Agent getAgentByName(String agentName) {
|
||||
Optional<Agent> agent = agentService.getAgents().stream()
|
||||
.filter(a -> a.getName().equals(agentName)).findFirst();
|
||||
|
||||
return agent.orElse(null);
|
||||
}
|
||||
|
||||
protected SemanticQueryResp queryBySql(String sql) throws Exception {
|
||||
return queryBySql(sql, User.getDefaultUser());
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.junit.jupiter.api.TestMethodOrder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -135,9 +136,9 @@ public class QueryByStructTest extends BaseTest {
|
||||
aggregator.setFunc(AggOperatorEnum.SUM);
|
||||
aggregator.setColumn("pv");
|
||||
QueryStructReq queryStructReq1 =
|
||||
buildQueryStructReq(Arrays.asList("department"), aggregator);
|
||||
buildQueryStructReq(Collections.singletonList("department"), aggregator);
|
||||
SemanticQueryResp semanticQueryResp = semanticLayerService.queryByReq(queryStructReq1, tom);
|
||||
Assertions.assertNotNull(semanticQueryResp.getQueryAuthorization().getMessage());
|
||||
Assertions.assertTrue(semanticQueryResp.getSql().contains("`user_name` = 'tom'"));
|
||||
Assertions.assertTrue(semanticQueryResp.getSql().contains("user_name = 'tom'"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,36 @@
|
||||
package com.tencent.supersonic.headless;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.demo.S2VisitsDemo;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticTranslateResp;
|
||||
import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class TranslateTest extends BaseTest {
|
||||
|
||||
private Long dataSetId;
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
agent = getAgentByName(S2VisitsDemo.AGENT_NAME);
|
||||
schema = schemaService.getSemanticSchema(agent.getDataSetIds());
|
||||
Optional<Long> id = agent.getDataSetIds().stream().findFirst();
|
||||
dataSetId = id.orElse(1L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSqlExplain() throws Exception {
|
||||
String sql = "SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ";
|
||||
SemanticTranslateResp explain = semanticLayerService.translate(
|
||||
QueryReqBuilder.buildS2SQLReq(sql, DataUtils.productDatasetId),
|
||||
User.getDefaultUser());
|
||||
String sql = "SELECT 部门, SUM(访问次数) AS 访问次数 FROM 超音数PVUV统计 GROUP BY 部门 ";
|
||||
SemanticTranslateResp explain = semanticLayerService
|
||||
.translate(QueryReqBuilder.buildS2SQLReq(sql, dataSetId), User.getDefaultUser());
|
||||
assertNotNull(explain);
|
||||
assertNotNull(explain.getQuerySQL());
|
||||
assertTrue(explain.getQuerySQL().contains("department"));
|
||||
@@ -28,7 +39,8 @@ public class TranslateTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void testStructExplain() throws Exception {
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(Arrays.asList("department"));
|
||||
QueryStructReq queryStructReq =
|
||||
buildQueryStructReq(Collections.singletonList("department"));
|
||||
SemanticTranslateResp explain =
|
||||
semanticLayerService.translate(queryStructReq, User.getDefaultUser());
|
||||
assertNotNull(explain);
|
||||
|
||||
@@ -15,14 +15,6 @@ import static java.time.LocalDate.now;
|
||||
|
||||
public class DataUtils {
|
||||
|
||||
public static final Integer productAgentId = 1;
|
||||
public static final Integer companyAgentId = 2;
|
||||
public static final Integer singerAgentId = 3;
|
||||
|
||||
public static final Long productDatasetId = 1L;
|
||||
public static final Long companyDatasetId = 2L;
|
||||
public static final Long singerDatasettId = 3L;
|
||||
|
||||
public static final Integer ONE_TURNS_CHAT_ID = 10;
|
||||
private static final User user_test = User.getDefaultUser();
|
||||
|
||||
@@ -42,11 +34,12 @@ public class DataUtils {
|
||||
return User.get(3L, "tom");
|
||||
}
|
||||
|
||||
public static ChatParseReq getChatParseReq(Integer id, String query, boolean enableLLM) {
|
||||
public static ChatParseReq getChatParseReq(Integer id, Integer agentId, String query,
|
||||
boolean enableLLM) {
|
||||
ChatParseReq chatParseReq = new ChatParseReq();
|
||||
chatParseReq.setQueryText(query);
|
||||
chatParseReq.setAgentId(productAgentId);
|
||||
chatParseReq.setChatId(id);
|
||||
chatParseReq.setAgentId(agentId);
|
||||
chatParseReq.setUser(user_test);
|
||||
chatParseReq.setDisableLLM(!enableLLM);
|
||||
return chatParseReq;
|
||||
|
||||
@@ -13,22 +13,34 @@ spring:
|
||||
path: /h2-console/semantic
|
||||
enabled: true
|
||||
|
||||
### Comment out following lines if using MySQL
|
||||
## Comment out following lines if using MySQL
|
||||
#spring:
|
||||
# datasource:
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# url: jdbc:mysql://localhost:3306/s2_database?user=root
|
||||
# url: jdbc:mysql://localhost:3306/mysql
|
||||
# username: root
|
||||
# password:
|
||||
# sql:
|
||||
# enabled: true
|
||||
# mode: always
|
||||
# username: root
|
||||
# password:
|
||||
# init:
|
||||
# enabled: false
|
||||
# mode: always
|
||||
# username: root
|
||||
# password:
|
||||
# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql
|
||||
# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql
|
||||
# h2:
|
||||
# console:
|
||||
# path: /h2-console/semantic
|
||||
# enabled: true
|
||||
|
||||
## Comment out following lines if using Postgres
|
||||
#spring:
|
||||
# datasource:
|
||||
# driver-class-name: org.postgresql.Driver
|
||||
# url: jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# sql:
|
||||
# init:
|
||||
# enabled: false
|
||||
# mode: always
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# schema-locations: classpath:db/schema-postgres.sql,classpath:db/schema-postgres-demo.sql
|
||||
# data-locations: classpath:db/data-postgres.sql,classpath:db/data-postgres-demo.sql
|
||||
@@ -1,40 +0,0 @@
|
||||
server:
|
||||
port: 9080
|
||||
compression:
|
||||
enabled: true
|
||||
min-response-size: 1024
|
||||
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
|
||||
|
||||
spring:
|
||||
profiles:
|
||||
active: local
|
||||
application:
|
||||
name: chat
|
||||
config:
|
||||
import:
|
||||
- classpath:s2-config.yaml
|
||||
main:
|
||||
allow-circular-references: true
|
||||
mvc:
|
||||
pathmatch:
|
||||
matching-strategy: ANT_PATH_MATCHER
|
||||
|
||||
mybatis:
|
||||
mapper-locations=classpath:mappers/custom/*.xml,classpath*:/mappers/*.xml
|
||||
|
||||
logging:
|
||||
level:
|
||||
dev.langchain4j: DEBUG
|
||||
dev.ai4j.openai4j: DEBUG
|
||||
|
||||
swagger:
|
||||
title: 'SuperSonic API Documentation'
|
||||
base:
|
||||
package: com.tencent.supersonic
|
||||
description: 'SuperSonic API Documentation'
|
||||
url: ''
|
||||
contact:
|
||||
name:
|
||||
email:
|
||||
url: ''
|
||||
version: 3.0
|
||||
@@ -1,3 +0,0 @@
|
||||
龚 nr 1
|
||||
龛 ng 1
|
||||
龛影 n 1
|
||||
@@ -1,4 +0,0 @@
|
||||
买@水果 1
|
||||
然后@来 1
|
||||
我@遗忘 10
|
||||
遗忘@我 10
|
||||
@@ -1,8 +0,0 @@
|
||||
阿里云 _10_20 5
|
||||
天猫 _10_20 5
|
||||
腾讯游戏 _10_20 5
|
||||
度小满 _10_20 5
|
||||
京东金融 _10_20 5
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
张勇 _10_22 5
|
||||
马化腾 _10_22 5
|
||||
朱光 _10_22 5
|
||||
刘强东 _10_22 5
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
hr _1_1 876
|
||||
sales _1_1 872
|
||||
marketing _1_1 310
|
||||
strategy _1_1 360
|
||||
sales _1_1 500
|
||||
@@ -1,18 +0,0 @@
|
||||
tom _1_2 52
|
||||
alice _1_2 47
|
||||
lucy _1_2 31
|
||||
dean _1_2 36
|
||||
john _1_2 50
|
||||
jack _1_2 38
|
||||
admin _1_2 70
|
||||
周杰伦 _4_8 100
|
||||
陈奕迅 _4_8 100
|
||||
林俊杰 _4_8 100
|
||||
张碧晨 _4_8 100
|
||||
程响 _4_8 100
|
||||
Taylor#Swift _4_8 100
|
||||
内地 _4_5 100
|
||||
欧美 _4_5 100
|
||||
港台 _4_5 100
|
||||
流行 _4_7 100
|
||||
国风 _4_7 100
|
||||
@@ -1,6 +0,0 @@
|
||||
p1 _3_4 52
|
||||
p2 _3_4 47
|
||||
p3 _3_4 31
|
||||
p4 _3_4 36
|
||||
p5 _3_4 50
|
||||
p6 _3_4 38
|
||||
@@ -1,9 +0,0 @@
|
||||
周杰伦 _4_8 9000
|
||||
周深 _4_8 8000
|
||||
周传雄 _4_8 7000
|
||||
周华建 _4_8 6000
|
||||
陈奕迅 _4_8 8000
|
||||
林俊杰 _4_8 7000
|
||||
张碧晨 _4_8 7000
|
||||
程响 _4_8 7000
|
||||
Taylor#Swift _4_8 7000
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _5_8 1
|
||||
加拿大 _5_8 1
|
||||
锡尔赫特、吉大港、库斯蒂亚 _5_8 1
|
||||
孟加拉国 _5_8 3
|
||||
@@ -1,6 +0,0 @@
|
||||
现代 _5_9 1
|
||||
tagore _5_9 1
|
||||
蓝调 _5_9 1
|
||||
流行 _5_9 1
|
||||
民间 _5_9 1
|
||||
nazrul _5_9 1
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _6_11 1
|
||||
印度 _6_11 2
|
||||
英国 _6_11 1
|
||||
孟加拉国 _6_11 2
|
||||
@@ -1,2 +0,0 @@
|
||||
男性 _6_12 3
|
||||
女性 _6_12 3
|
||||
@@ -1,2 +0,0 @@
|
||||
mp4 _7_14 4
|
||||
mp3 _7_14 2
|
||||
@@ -1,4 +0,0 @@
|
||||
美国 _8_17 1
|
||||
印度 _8_17 2
|
||||
英国 _8_17 1
|
||||
孟加拉国 _8_17 2
|
||||
@@ -1,2 +0,0 @@
|
||||
英文 _8_18 2
|
||||
孟加拉语 _8_18 4
|
||||
@@ -1,6 +0,0 @@
|
||||
阿米·奥帕尔·霍伊 _8_16 1
|
||||
我的爱 _8_16 1
|
||||
打败它 _8_16 1
|
||||
阿杰伊阿卡什 _8_16 1
|
||||
Tumi#长袍#尼罗布 _8_16 1
|
||||
舒克诺#帕塔尔#努普尔#帕埃 _8_16 1
|
||||
@@ -1,5 +0,0 @@
|
||||
百度集团 _9_15 5
|
||||
阿里巴巴集团 _9_15 5
|
||||
深圳市腾讯计算机系统有限公司 _9_15 5
|
||||
北京京东世纪贸易有限公司 _9_15 5
|
||||
网易公司 _9_15 5
|
||||
@@ -1,4 +0,0 @@
|
||||
北京 _9_16 5
|
||||
杭州 _9_16 5
|
||||
深圳 _9_16 5
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
李彦宏 _9_18 5
|
||||
马云 _9_18 5
|
||||
马化腾 _9_18 5
|
||||
刘强东 _9_18 5
|
||||
丁磊 _9_18 5
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
李彦宏 _9_19 5
|
||||
张勇 _9_19 5
|
||||
刘炽平 _9_19 5
|
||||
刘强东 _9_19 5
|
||||
丁磊 _9_19 5
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
HR _1_1 1
|
||||
strategy _1_1 1
|
||||
marketing _1_1 2
|
||||
sales _1_1 2
|
||||
@@ -0,0 +1,6 @@
|
||||
tom _1_2 1
|
||||
alice _1_2 1
|
||||
lucy _1_2 1
|
||||
dean _1_2 1
|
||||
john _1_2 1
|
||||
jack _1_2 1
|
||||
@@ -0,0 +1,4 @@
|
||||
p1 _3_4 3
|
||||
p3 _3_4 4
|
||||
p4 _3_4 4
|
||||
p5 _3_4 2
|
||||
@@ -0,0 +1,3 @@
|
||||
欧美 _4_5 1
|
||||
港台 _4_5 3
|
||||
内地 _4_5 2
|
||||
@@ -0,0 +1,6 @@
|
||||
美人鱼 _4_6 1
|
||||
青花瓷 _4_6 1
|
||||
Love#Story _4_6 1
|
||||
爱情转移 _4_6 1
|
||||
人间烟火 _4_6 1
|
||||
光的方向 _4_6 1
|
||||
@@ -0,0 +1,2 @@
|
||||
国风 _4_7 2
|
||||
流行 _4_7 4
|
||||
@@ -0,0 +1,6 @@
|
||||
张碧晨 _4_8 1
|
||||
周杰伦 _4_8 1
|
||||
Taylor#Swift _4_8 1
|
||||
程响 _4_8 1
|
||||
林俊杰 _4_8 1
|
||||
陈奕迅 _4_8 1
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,44 +0,0 @@
|
||||
序号,代码,名称,帮助记忆的诠释,例子及注解
|
||||
1,Ag,形语素,形容词性语素。形容词代码为a,语素代码g前面置以A。,绿色/n 似/d 锦/Ag ,
|
||||
2,a,形容词,取英语形容词adjective的第1个字母,[重要/a 步伐/n]NP ,美丽/a ,看似/v 抽象/a ,
|
||||
3,ad,副形词,直接作状语的形容词。形容词代码a和副词代码d并在一起。,[积极/ad 谋求/v]V-ZZ ,幻象/n 易/ad 逝/Vg ,
|
||||
4,an,名形词,具有名词功能的形容词。形容词代码a和名词代码n并在一起。,[外交/n 和/c 安全/an]NP-BL ,
|
||||
5,Bg,区别语素,区别词性语素。区别词代码为b,语素代码g前面置以B。,赤/Ag 橙/Bg 黄/a 绿/a 青/a 蓝/a 紫/a ,
|
||||
6,b,区别词,取汉字“别”的声母。,女/b 司机/n, 金/b 手镯/n, 慢性/b 胃炎/n, 古/b 钱币/n, 副/b 主任/n, 总/b 公司/n单音节区别词和单音节名词或名语素组合,作为一个词,并标以名词词性n。 雄鸡/n, 雌象/n, 女魔/n, 古币/n少数“单音节区别词+双音节词”的结构作为一个词。总书记/n ,
|
||||
7,c,连词,取英语连词conjunction的第1个字母。,合作/vn 与/c 伙伴/n
|
||||
8,Dg,副语素,副词性语素。副词代码为d,语素代码g前面置以D。,了解/v 甚/Dg 深/a ,煞/Dg 是/v 喜人/a ,
|
||||
9,d,副词,取adverb的第2个字母,因其第1个字母已用于形容词。,进一步/d 发展/v ,
|
||||
10,e,叹词,取英语叹词exclamation的第1个字母。,啊/e ,/w 那/r 金灿灿/z 的/u 麦穗/n ,
|
||||
11,f,方位词,取汉字“方”。,军人/n 的/u 眼睛/n 里/f 不/d 是/v 没有/v 风景/n ,
|
||||
12,h,前接成分,取英语head的第1个字母。,许多/m 非/h 主角/n 人物/n ,办事处/n 的/u “/w 准/h 政府/n ”/w 功能/n 不断/d 加强/v ,
|
||||
13,i,成语,取英语成语idiom的第1个字母。,一言一行/i ,义无反顾/i ,
|
||||
14,j,简称略语,取汉字“简”的声母。,[德/j 外长/n]NP ,文教/j ,
|
||||
15,k,后接成分,后接成分。,少年儿童/l 朋友/n 们/k ,身体/n 健康/a 者/k ,
|
||||
16,l,习用语,习用语尚未成为成语,有点“临时性”,取“临”的声母。,少年儿童/l 朋友/n 们/k ,落到实处/l ,
|
||||
17,Mg,数语素,数词性语素。数词代码为m,语素代码g前面置以M。,甲/Mg 减下/v 的/u 人/n 让/v 乙/Mg 背上/v ,凡/d “/w 寅/Mg 年/n ”/w 中/f 出生/v 的/u 人/n 生肖/n 都/d 属/v 虎/n ,
|
||||
18,m,数词,取英语numeral的第3个字母,n,u已有他用。,1.数量词组应切分为数词和量词。 三/m 个/q, 10/m 公斤/q, 一/m 盒/q 点心/n ,但少数数量词已是词典的登录单位,则不再切分。 一个/m , 一些/m ,2. 基数、序数、小数、分数、百分数一律不予切分,为一个切分单位,标注为 m 。一百二十三/m,20万/m, 123.54/m, 一个/m, 第一/m, 第三十五/m, 20%/m, 三分之二/m, 千分之三十/m, 几十/m 人/n, 十几万/m 元/q, 第一百零一/m 个/q ,3. 约数,前加副词、形容词或后加“来、多、左右”等助数词的应予分开。约/d 一百/m 多/m 万/m,仅/d 一百/m 个/q, 四十/m 来/m 个/q,二十/m 余/m 只/q, 十几/m 个/q,三十/m 左右/m ,两个数词相连的及“成百”、“上千”等则不予切分。五六/m 年/q, 七八/m 天/q,十七八/m 岁/q, 成百/m 学生/n,上千/m 人/n, 4.表序关系的“数+名”结构,应予切分。二/m 连/n , 三/m 部/n ,
|
||||
19,Ng,名语素,名词性语素。名词代码为n,语素代码g前面置以N。,出/v 过/u 两/m 天/q 差/Ng, 理/v 了/u 一/m 次/q 发/Ng,
|
||||
20,n,名词,取英语名词noun的第1个字母。,(参见 动词--v)岗位/n , 城市/n , 机会/n ,她/r 是/v 责任/n 编辑/n ,
|
||||
21,nr,人名,名词代码n和“人(ren)”的声母并在一起。,1. 汉族人及与汉族起名方式相同的非汉族人的姓和名单独切分,并分别标注为nr。张/nr 仁伟/nr, 欧阳/nr 修/nr, 阮/nr 志雄/nr, 朴/nr 贞爱/nr汉族人除有单姓和复姓外,还有双姓,即有的女子出嫁后,在原来的姓上加上丈夫的姓。如:陈方安生。这种情况切分、标注为:陈/nr 方/nr 安生/nr;唐姜氏,切分、标注为:唐/nr 姜氏/nr。2. 姓名后的职务、职称或称呼要分开。江/nr 主席/n, 小平/nr 同志/n, 江/nr 总书记/n,张/nr 教授/n, 王/nr 部长/n, 陈/nr 老总/n, 李/nr 大娘/n, 刘/nr 阿姨/n, 龙/nr 姑姑/n3. 对人的简称、尊称等若为两个字,则合为一个切分单位,并标以nr。老张/nr, 大李/nr, 小郝/nr, 郭老/nr, 陈总/nr4. 明显带排行的亲属称谓要切分开,分不清楚的则不切开。三/m 哥/n, 大婶/n, 大/a 女儿/n, 大哥/n, 小弟/n, 老爸/n5. 一些著名作者的或不易区分姓和名的笔名通常作为一个切分单位。鲁迅/nr, 茅盾/nr, 巴金/nr, 三毛/nr, 琼瑶/nr, 白桦/nr6. 外国人或少数民族的译名(包括日本人的姓名)不予切分,标注为nr。克林顿/nr, 叶利钦/nr, 才旦卓玛/nr, 小林多喜二/nr, 北研二/nr,华盛顿/nr, 爱因斯坦/nr有些西方人的姓名中有小圆点,也不分开。卡尔·马克思/nr
|
||||
22,ns,地名,名词代码n和处所词代码s并在一起。,(参见2。短语标记说明--NS)安徽/ns,深圳/ns,杭州/ns,拉萨/ns,哈尔滨/ns, 呼和浩特/ns, 乌鲁木齐/ns,长江/ns,黄海/ns,太平洋/ns, 泰山/ns, 华山/ns,亚洲/ns, 海南岛/ns,太湖/ns,白洋淀/ns, 俄罗斯/ns,哈萨克斯坦/ns,彼得堡/ns, 伏尔加格勒/ns 1. 国名不论长短,作为一个切分单位。中国/ns, 中华人民共和国/ns, 日本国/ns, 美利坚合众国/ns, 美国/ns2. 地名后有“省”、“市”、“县”、“区”、“乡”、“镇”、“村”、“旗”、“州”、“都”、“府”、“道”等单字的行政区划名称时,不切分开,作为一个切分单位。四川省/ns, 天津市/ns,景德镇/ns沙市市/ns, 牡丹江市/ns,正定县/ns,海淀区/ns, 通州区/ns,东升乡/ns, 双桥镇/ns 南化村/ns,华盛顿州/ns,俄亥俄州/ns,东京都/ns, 大阪府/ns,北海道/ns, 长野县/ns,开封府/ns,宣城县/ns3. 地名后的行政区划有两个以上的汉字,则将地名同行政区划名称切开,不过要将地名同行政区划名称用方括号括起来,并标以短语NS。[芜湖/ns 专区/n] NS,[宣城/ns 地区/n]ns,[内蒙古/ns 自治区/n]NS,[深圳/ns 特区/n]NS, [厦门/ns 经济/n 特区/n]NS, [香港/ns 特别/a 行政区/n]NS,[香港/ns 特区/n]NS, [华盛顿/ns 特区/n]NS,4. 地名后有表示地形地貌的一个字的普通名词,如“江、河、山、洋、海、岛、峰、湖”等,不予切分。鸭绿江/ns,亚马逊河/ns, 喜马拉雅山/ns, 珠穆朗玛峰/ns,地中海/ns,大西洋/ns,洞庭湖/ns, 塞普路斯岛/ns 5. 地名后接的表示地形地貌的普通名词若有两个以上汉字,则应切开。然后将地名同该普通名词标成短语NS。[台湾/ns 海峡/n]NS,[华北/ns 平原/n]NS,[帕米尔/ns 高原/n]NS, [南沙/ns 群岛/n]NS,[京东/ns 大/a 峡谷/n]NS [横断/b 山脉/n]NS6.地名后有表示自然区划的一个字的普通名词,如“ 街,路,道,巷,里,町,庄,村,弄,堡”等,不予切分。 中关村/ns,长安街/ns,学院路/ns, 景德镇/ns, 吴家堡/ns, 庞各庄/ns, 三元里/ns,彼得堡/ns, 北菜市巷/ns, 7.地名后接的表示自然区划的普通名词若有两个以上汉字,则应切开。然后将地名同自然区划名词标成短语NS。[米市/ns 大街/n]NS, [蒋家/nz 胡同/n]NS , [陶然亭/ns 公园/n]NS , 8. 大小地名相连时的标注方式为:北京市/ns 海淀区/ns 海淀镇/ns [南/f 大街/n]NS [蒋家/nz 胡同/n]NS 24/m 号/q ,
|
||||
23,nt,机构团体,“团”的声母为t,名词代码n和t并在一起。,(参见2。短语标记说明--NT)联合国/nt,中共中央/nt,国务院/nt, 北京大学/nt1.大多数团体、机构、组织的专有名称一般是短语型的,较长,且含有地名或人名等专名,再组合,标注为短语NT。[中国/ns 计算机/n 学会/n]NT, [香港/ns 钟表业/n 总会/n]NT, [烟台/ns 大学/n]NT, [香港/ns 理工大学/n]NT, [华东/ns 理工大学/n]NT,[合肥/ns 师范/n 学院/n]NT, [北京/ns 图书馆/n]NT, [富士通/nz 株式会社/n]NT, [香山/ns 植物园/n]NT, [安娜/nz 美容院/n]NT,[上海/ns 手表/n 厂/n]NT, [永和/nz 烧饼铺/n]NT,[北京/ns 国安/nz 队/n]NT,2. 对于在国际或中国范围内的知名的唯一的团体、机构、组织的名称即使前面没有专名,也标为nt或NT。联合国/nt,国务院/nt,外交部/nt, 财政部/nt,教育部/nt, 国防部/nt,[世界/n 贸易/n 组织/n]NT, [国家/n 教育/vn 委员会/n]NT,[信息/n 产业/n 部/n]NT,[全国/n 信息/n 技术/n 标准化/vn 委员会/n]NT,[全国/n 总/b 工会/n]NT,[全国/n 人民/n 代表/n 大会/n]NT,美国的“国务院”,其他国家的“外交部、财政部、教育部”,必须在其所属国的国名之后出现时,才联合标注为NT。[美国/ns 国务院/n]NT,[法国/ns 外交部/n]NT,[美/j 国会/n]NT,日本有些政府机构名称很特别,无论是否出现在“日本”国名之后都标为nt。[日本/ns 外务省/nt]NT,[日/j 通产省/nt]NT通产省/nt 3. 前后相连有上下位关系的团体机构组织名称的处理方式如下:[联合国/nt 教科文/j 组织/n]NT, [中国/ns 银行/n 北京/ns 分行/n]NT,[河北省/ns 正定县/ns 西平乐乡/ns 南化村/ns 党支部/n]NT, 当下位名称含有专名(如“北京/ns 分行/n”、“南化村/ns 党支部/n”、“昌平/ns 分校/n”)时,也可脱离前面的上位名称单独标注为NT。[中国/ns 银行/n]NT [北京/ns 分行/n]NT,北京大学/nt [昌平/ns 分校/n]NT,4. 团体、机构、组织名称中用圆括号加注简称时:[宝山/ns 钢铁/n (/w 宝钢/j )/w 总/b 公司/n]NT,[宝山/ns 钢铁/n 总/b 公司/n]NT,(/w 宝钢/j )/w
|
||||
24,nx,外文字符,外文字符。,A/nx 公司/n ,B/nx 先生/n ,X/nx 君/Ng ,24/m K/nx 镀金/n ,C/nx 是/v 光速/n ,Windows98/nx ,PentiumIV/nx ,I LOVE THIS GAME/nx ,
|
||||
25,nz,其他专名,“专”的声母的第1个字母为z,名词代码n和z并在一起。,(参见2。短语标记说明--NZ)除人名、国名、地名、团体、机构、组织以外的其他专有名词都标以nz。满族/nz,俄罗斯族/nz,汉语/nz,罗马利亚语/nz, 捷克语/nz,中文/nz, 英文/nz, 满人/nz, 哈萨克人/nz, 诺贝尔奖/nz, 茅盾奖/nz, 1.包含专有名称(或简称)的交通线,标以nz;短语型的,标为NZ。津浦路/nz, 石太线/nz, [京/j 九/j 铁路/n]NZ, [京/j 津/j 高速/b 公路/n]NZ, 2. 历史上重要事件、运动等专有名称一般是短语型的,按短语型专有名称处理,标以NZ。[卢沟桥/ns 事件/n]NZ, [西安/ns 事变/n]NZ,[五四/t 运动/n]NZ, [明治/nz 维新/n]NZ,[甲午/t 战争/n]NZ,3.专有名称后接多音节的名词,如“语言”、“文学”、“文化”、“方式”、“精神”等,失去专指性,则应分开。欧洲/ns 语言/n, 法国/ns 文学/n, 西方/ns 文化/n, 贝多芬/nr 交响乐/n, 雷锋/nr 精神/n, 美国/ns 方式/n,日本/ns 料理/n, 宋朝/t 古董/n 4. 商标(包括专名及后接的“牌”、“型”等)是专指的,标以nz,但其后所接的商品仍标以普通名词n。康师傅/nr 方便面/n, 中华牌/nz 香烟/n, 牡丹III型/nz 电视机/n, 联想/nz 电脑/n, 鳄鱼/nz 衬衣/n, 耐克/nz 鞋/n5. 以序号命名的名称一般不认为是专有名称。2/m 号/q 国道/n ,十一/m 届/q 三中全会/j如果前面有专名,合起来作为短语型专名。[中国/ns 101/m 国道/n]NZ, [中共/j 十一/m 届/q 三中全会/j]NZ,6. 书、报、杂志、文档、报告、协议、合同等的名称通常有书名号加以标识,不作为专有名词。由于这些名字往往较长,名字本身按常规处理。《/w 宁波/ns 日报/n 》/w ,《/w 鲁迅/nr 全集/n 》/w,中华/nz 读书/vn 报/n, 杜甫/nr 诗选/n,少数书名、报刊名等专有名称,则不切分。红楼梦/nz, 人民日报/nz,儒林外史/nz 7. 当有些专名无法分辨它们是人名还是地名或机构名时,暂标以nz。[巴黎/ns 贝尔希/nz 体育馆/n]NT,其中“贝尔希”只好暂标为nz。
|
||||
26,o,拟声词,取英语拟声词onomatopoeia的第1个字母。,哈哈/o 一/m 笑/v ,装载机/n 隆隆/o 推进/v ,
|
||||
27,p,介词,取英语介词prepositional的第1个字母。,对/p 子孙后代/n 负责/v ,以/p 煤/n 养/v 农/Ng ,为/p 治理/v 荒山/n 服务/v , 把/p 青年/n 推/v 上/v 了/u 领导/vn 岗位/n ,
|
||||
28,q,量词,取英语quantity的第1个字母。,(参见数词m)首/m 批/q ,一/m 年/q ,
|
||||
29,Rg,代语素,代词性语素。代词代码为r,在语素的代码g前面置以R。,读者/n 就/d 是/v 这/r 两/m 棵/q 小树/n 扎根/v 于/p 斯/Rg 、/w 成长/v 于/p 斯/Rg 的/u 肥田/n 沃土/n ,
|
||||
30,r,代词,取英语代词pronoun的第2个字母,因p已用于介词。,单音节代词“本”、“每”、“各”、“诸”后接单音节名词时,和后接的单音节名词合为代词;当后接双音节名词时,应予切分。本报/r, 每人/r, 本社/r, 本/r 地区/n, 各/r 部门/n
|
||||
31,s,处所词,取英语space的第1个字母。,家里/s 的/u 电脑/n 都/d 联通/v 了/u 国际/n 互联网/n ,西部/s 交通/n 咽喉/n ,
|
||||
32,Tg,时语素,时间词性语素。时间词代码为t,在语素的代码g前面置以T。,3日/t 晚/Tg 在/p 总统府/n 发表/v 声明/n ,尊重/v 现/Tg 执政/vn 当局/n 的/u 权威/n ,
|
||||
33,t,时间词,取英语time的第1个字母。,1. 年月日时分秒,按年、月、日、时、分、秒切分,标注为t 。1997年/t 3月/t 19日/t 下午/t 2时/t 18分/t若数字后无表示时间的“年、月、日、时、分、秒”等的标为数词m。1998/m 中文/n 信息/n 处理/vn 国际/n 会议/n 2. 历史朝代的名称虽然有专有名词的性质,仍标注为t。西周/t, 秦朝/t, 东汉/t, 南北朝/t, 清代/t“牛年、虎年”等一律不予切分,标注为:牛年/t, 虎年/t, 甲午年/t, 甲午/t 战争/n, 庚子/t 赔款/n, 戊戌/t 变法/n
|
||||
34,u,助词,取英语助词auxiliary。,[[俄罗斯/ns 和/c 北约/j]NP-BL 之间/f [战略/n 伙伴/n 关系/n]NP 的/u 建立/vn]NP 填平/v 了/u [[欧洲/ns 安全/a 政治/n]NP 的/u 鸿沟/n]NP
|
||||
35,Vg,动语素,动词性语素。动词代码为v。在语素的代码g前面置以V。,洗/v 了/u 一个/m 舒舒服服/z 的/u 澡/Vg
|
||||
36,v,动词,取英语动词verb的第一个字母。,(参见 名词--n)[[[欧盟/j 扩大/v]S 的/u [历史性/n 决定/n]NP]NP 和/c [北约/j 开放/v]S]NP-BL [为/p [创建/v [一/m 种/q 新/a 的/u 欧洲/ns 安全/a 格局/n]NP]VP-SBI]PP-MD [奠定/v 了/u 基础/n]V-SBI ,,
|
||||
37,vd,副动词,直接作状语的动词。动词和副词的代码并在一起。,形势/n 会/v 持续/vd 好转/v ,认为/v 是/v 电话局/n 收/v 错/vd 了/u 费/n ,
|
||||
38,vn,名动词,指具有名词功能的动词。动词和名词的代码并在一起。,引起/v 人们/n 的/u 关注/vn 和/c 思考/vn ,收费/vn 电话/n 的/u 号码/n ,
|
||||
39,w,标点符号,,”/w :/w
|
||||
40,x,非语素字,非语素字只是一个符号,字母x通常用于代表未知数、符号。,
|
||||
41,Yg,语气语素,语气词性语素。语气词代码为y。在语素的代码g前面置以Y。,唯/d 大力/d 者/k 能/v 致/v 之/u 耳/Yg
|
||||
42,y,语气词,取汉字“语”的声母。,会/v 泄露/v 用户/n 隐私/n 吗/y ,又/d 何在/v 呢/y ?
|
||||
43,z,状态词,取汉字“状”的声母的前一个字母。,取得/v 扎扎实实/z 的/u 突破性/n 进展/vn ,四季/n 常青/z 的/u 热带/n 树木/n ,短短/z 几/m 年/q 间,
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
||||
-- sample user
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email, is_admin) values (1, 'admin','c3VwZXJzb25pY0BiaWNvbTD12g9wGXESwL7+o7xUW90=','jGl25bVBBBW96Qi9Te4V3w==','admin','admin@xx.com', 1);
|
||||
MERGE INTO s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com');
|
||||
MERGE INTO s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com');
|
||||
MERGE INTO s2_user (id, `name`, password, display_name, email, is_admin) values (4, 'lucy','123456','lucy','lucy@xx.com', 1);
|
||||
MERGE INTO s2_user (id, `name`, password, display_name, email) values (5, 'alice','123456','alice','alice@xx.com');
|
||||
---The default value for the password is 123456
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email, is_admin) values (1, 'admin','c3VwZXJzb25pY0BiaWNvbdktJJYWw6A3rEmBUPzbn/6DNeYnD+y3mAwDKEMS3KVT','jGl25bVBBBW96Qi9Te4V3w==','admin','admin@xx.com', 1);
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email) values (2, 'jack','c3VwZXJzb25pY0BiaWNvbWxGalmwa0h/trkh/3CWOYMDiku0Op1VmOfESIKmN0HG','MWERWefm/3hD6kYndF6JIg==','jack','jack@xx.com');
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email) values (3, 'tom','c3VwZXJzb25pY0BiaWNvbVWv0CZ6HzeX8GRUpw0C8NSaQ+0hE/dAcmzRpCFwAqxK','4WCPdcXXgT89QDHLML+3hg==','tom','tom@xx.com');
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email) values (4, 'lucy','c3VwZXJzb25pY0BiaWNvbc7Ychfu99lPL7rLmCkf/vgF4RASa4Z++Mxo1qlDCpci','3Jnpqob6uDoGLP9eCAg5Fw==','lucy','lucy@xx.com');
|
||||
MERGE INTO s2_user (id, `name`, password, salt, display_name, email) values (5, 'alice','c3VwZXJzb25pY0BiaWNvbe9Z4F2/DVIfAJoN1HwUTuH1KgVuiusvfh7KkWYQSNHk','K9gGyX8OAK8aH8Myj6djqQ==','alice','alice@xx.com');
|
||||
|
||||
MERGE INTO s2_available_date_info(`id`,`item_id` ,`type` ,`date_format` ,`start_date` ,`end_date` ,`unavailable_date` ,`created_at` ,`created_by` ,`updated_at` ,`updated_by` )
|
||||
values (1 , 1, 'dimension', 'yyyy-MM-dd', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
MERGE INTO s2_available_date_info(`id`,`item_id` ,`type` ,`date_format` ,`start_date` ,`end_date` ,`unavailable_date` ,`created_at` ,`created_by` ,`updated_at` ,`updated_by` )
|
||||
values (2 , 2, 'dimension', 'yyyy-MM-dd', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
MERGE INTO s2_available_date_info(`id`,`item_id` ,`type` ,`date_format` ,`start_date` ,`end_date` ,`unavailable_date` ,`created_at` ,`created_by` ,`updated_at` ,`updated_by` )
|
||||
values (3 , 3, 'dimension', 'yyyy-MM-dd', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
|
||||
MERGE INTO s2_canvas(`id`, `domain_id`, `type`, `config` ,`created_at` ,`created_by` ,`updated_at` ,`updated_by` )
|
||||
values (1, 1, 'modelEdgeRelation', '[{"source":"datasource-1","target":"datasource-3","type":"polyline","id":"edge-0.305251275235679741702883718912","style":{"active":{"stroke":"rgb(95, 149, 255)","lineWidth":1},"selected":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"shadowColor":"rgb(95, 149, 255)","shadowBlur":10,"text-shape":{"fontWeight":500}},"highlight":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"text-shape":{"fontWeight":500}},"inactive":{"stroke":"rgb(234, 234, 234)","lineWidth":1},"disable":{"stroke":"rgb(245, 245, 245)","lineWidth":1},"stroke":"#296df3","endArrow":true},"startPoint":{"x":-94,"y":-137.5,"anchorIndex":0,"id":"-94|||-137.5"},"endPoint":{"x":-234,"y":-45,"anchorIndex":1,"id":"-234|||-45"},"sourceAnchor":2,"targetAnchor":1,"label":"模型关系编辑"},{"source":"datasource-1","target":"datasource-2","type":"polyline","id":"edge-0.466237264629309141702883756359","style":{"active":{"stroke":"rgb(95, 149, 255)","lineWidth":1},"selected":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"shadowColor":"rgb(95, 149, 255)","shadowBlur":10,"text-shape":{"fontWeight":500}},"highlight":{"stroke":"rgb(95, 149, 255)","lineWidth":2,"text-shape":{"fontWeight":500}},"inactive":{"stroke":"rgb(234, 234, 234)","lineWidth":1},"disable":{"stroke":"rgb(245, 245, 245)","lineWidth":1},"stroke":"#296df3","endArrow":true},"startPoint":{"x":-12,"y":-137.5,"anchorIndex":1,"id":"-12|||-137.5"},"endPoint":{"x":85,"y":31.5,"anchorIndex":0,"id":"85|||31.5"},"sourceAnchor":1,"targetAnchor":2,"label":"模型关系编辑"}]', '2023-06-01', 'admin', '2023-06-01', 'admin');
|
||||
@@ -1,85 +0,0 @@
|
||||
-------S2VisitsDemo
|
||||
CREATE TABLE IF NOT EXISTS `s2_user_department` (
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`department` varchar(200) NOT NULL, -- department of user
|
||||
PRIMARY KEY (`user_name`,`department`)
|
||||
);
|
||||
COMMENT ON TABLE s2_user_department IS 'user_department_info';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
|
||||
`imp_date` varchar(200) NOT NULL,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`page` varchar(200) NOT NULL
|
||||
);
|
||||
COMMENT ON TABLE s2_pv_uv_statis IS 's2_pv_uv_statis';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
|
||||
`imp_date` varchar(200) NOT NULL,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`stay_hours` DOUBLE NOT NULL,
|
||||
`page` varchar(200) NOT NULL
|
||||
);
|
||||
COMMENT ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info';
|
||||
|
||||
-------S2ArtistDemo
|
||||
CREATE TABLE IF NOT EXISTS `singer` (
|
||||
`singer_name` varchar(200) NOT NULL,
|
||||
`act_area` varchar(200) NOT NULL,
|
||||
`song_name` varchar(200) NOT NULL,
|
||||
`genre` varchar(200) NOT NULL,
|
||||
`js_play_cnt` bigINT DEFAULT NULL,
|
||||
`down_cnt` bigINT DEFAULT NULL,
|
||||
`favor_cnt` bigINT DEFAULT NULL,
|
||||
PRIMARY KEY (`singer_name`)
|
||||
);
|
||||
COMMENT ON TABLE singer IS 'singer_info';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `genre` (
|
||||
`g_name` varchar(20) NOT NULL , -- genre name
|
||||
`rating` INT ,
|
||||
`most_popular_in` varchar(50) ,
|
||||
PRIMARY KEY (`g_name`)
|
||||
);
|
||||
COMMENT ON TABLE genre IS 'genre';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `artist` (
|
||||
`artist_name` varchar(50) NOT NULL , -- genre name
|
||||
`citizenship` varchar(20) ,
|
||||
`gender` varchar(20) ,
|
||||
`g_name` varchar(50),
|
||||
PRIMARY KEY (`artist_name`,`citizenship`)
|
||||
);
|
||||
COMMENT ON TABLE artist IS 'artist';
|
||||
|
||||
-------S2CompanyDemo
|
||||
CREATE TABLE IF NOT EXISTS `company` (
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
`company_name` varchar(50) NOT NULL ,
|
||||
`headquarter_address` varchar(50) NOT NULL ,
|
||||
`company_established_time` varchar(20) NOT NULL ,
|
||||
`founder` varchar(20) NOT NULL ,
|
||||
`ceo` varchar(20) NOT NULL ,
|
||||
`annual_turnover` bigint(15) ,
|
||||
`employee_count` int(7) ,
|
||||
PRIMARY KEY (`company_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `brand` (
|
||||
`brand_id` varchar(50) NOT NULL ,
|
||||
`brand_name` varchar(50) NOT NULL ,
|
||||
`brand_established_time` varchar(20) NOT NULL ,
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
`legal_representative` varchar(20) NOT NULL ,
|
||||
`registered_capital` bigint(15) ,
|
||||
PRIMARY KEY (`brand_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `brand_revenue` (
|
||||
`year_time` varchar(10) NOT NULL ,
|
||||
`brand_id` varchar(50) NOT NULL ,
|
||||
`revenue` bigint(15) NOT NULL,
|
||||
`profit` bigint(15) NOT NULL ,
|
||||
`revenue_growth_year_on_year` double NOT NULL ,
|
||||
`profit_growth_year_on_year` double NOT NULL
|
||||
);
|
||||
|
||||
@@ -1,687 +0,0 @@
|
||||
-- chat tables
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_context`
|
||||
(
|
||||
`chat_id` BIGINT NOT NULL , -- context chat id
|
||||
`modified_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , -- row modify time
|
||||
`user` varchar(64) DEFAULT NULL , -- row modify user
|
||||
`query_text` LONGVARCHAR DEFAULT NULL , -- query text
|
||||
`semantic_parse` LONGVARCHAR DEFAULT NULL , -- parse data
|
||||
`ext_data` LONGVARCHAR DEFAULT NULL , -- extend data
|
||||
PRIMARY KEY (`chat_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat`
|
||||
(
|
||||
`chat_id` BIGINT auto_increment ,-- AUTO_INCREMENT,
|
||||
`agent_id` INT DEFAULT NULL,
|
||||
`chat_name` varchar(100) DEFAULT NULL,
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
|
||||
`last_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
|
||||
`creator` varchar(30) DEFAULT NULL,
|
||||
`last_question` varchar(200) DEFAULT NULL,
|
||||
`is_delete` INT DEFAULT '0' COMMENT 'is deleted',
|
||||
`is_top` INT DEFAULT '0' COMMENT 'is top',
|
||||
PRIMARY KEY (`chat_id`)
|
||||
) ;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_query`
|
||||
(
|
||||
`question_id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`agent_id` INT NULL,
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`query_text` mediumtext,
|
||||
`user_name` varchar(150) DEFAULT NULL COMMENT '',
|
||||
`query_state` int(1) DEFAULT NULL,
|
||||
`chat_id` BIGINT NOT NULL , -- context chat id
|
||||
`query_result` mediumtext NOT NULL ,
|
||||
`score` int DEFAULT '0',
|
||||
`feedback` varchar(1024) DEFAULT '',
|
||||
`similar_queries` varchar(1024) DEFAULT '',
|
||||
`parse_time_cost` varchar(1024) DEFAULT '',
|
||||
PRIMARY KEY (`question_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_parse`
|
||||
(
|
||||
`question_id` BIGINT NOT NULL,
|
||||
`chat_id` INT NOT NULL ,
|
||||
`parse_id` INT NOT NULL ,
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`query_text` varchar(500),
|
||||
`user_name` varchar(150) DEFAULT NULL COMMENT '',
|
||||
`parse_info` mediumtext NOT NULL ,
|
||||
`is_candidate` INT DEFAULT 1 COMMENT '1是candidate,0是selected'
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_statistics`
|
||||
(
|
||||
`question_id` BIGINT NOT NULL,
|
||||
`chat_id` BIGINT NOT NULL ,
|
||||
`user_name` varchar(150) DEFAULT NULL COMMENT '',
|
||||
`query_text` varchar(200),
|
||||
`interface_name` varchar(100) DEFAULT NULL COMMENT '',
|
||||
`cost` INT(6) NOT NULL ,
|
||||
`type` INT NOT NULL ,
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_config` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`model_id` INT DEFAULT NULL ,
|
||||
`chat_detail_config` varchar(655) ,
|
||||
`chat_agg_config` varchar(655) ,
|
||||
`recommended_questions` varchar(1500) ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL ,
|
||||
`status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted
|
||||
`llm_examples` TEXT,
|
||||
PRIMARY KEY (`id`)
|
||||
) ;
|
||||
COMMENT ON TABLE s2_chat_config IS 'chat config information table ';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`question` varchar(655) ,
|
||||
`agent_id` INT ,
|
||||
`db_schema` TEXT ,
|
||||
`s2_sql` TEXT ,
|
||||
`side_info` TEXT ,
|
||||
`status` char(10) ,
|
||||
`llm_review` char(10) ,
|
||||
`llm_comment` TEXT,
|
||||
`human_review` char(10) ,
|
||||
`human_comment` TEXT ,
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
|
||||
`created_by` varchar(100) ,
|
||||
`updated_by` varchar(100) ,
|
||||
PRIMARY KEY (`id`)
|
||||
) ;
|
||||
COMMENT ON TABLE s2_chat_memory IS 'chat memory table ';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_chat_model`
|
||||
(
|
||||
id int AUTO_INCREMENT,
|
||||
name varchar(100) null,
|
||||
description varchar(500) null,
|
||||
`config` varchar(500) NOT NULL ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL,
|
||||
`admin` varchar(500) NOT NULL,
|
||||
`viewer` varchar(500) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
); COMMENT ON TABLE s2_chat_model IS 'chat model table';
|
||||
|
||||
create table IF NOT EXISTS s2_user
|
||||
(
|
||||
id INT AUTO_INCREMENT,
|
||||
name varchar(100) not null,
|
||||
display_name varchar(100) null,
|
||||
password varchar(256) null,
|
||||
salt varchar(256) NULL,
|
||||
email varchar(100) null,
|
||||
is_admin INT null,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_user IS 'user information table';
|
||||
|
||||
-- semantic tables
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_domain` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`name` varchar(255) DEFAULT NULL , -- domain name
|
||||
`biz_name` varchar(255) DEFAULT NULL , -- internal name
|
||||
`parent_id` INT DEFAULT '0' , -- parent domain ID
|
||||
`status` INT NOT NULL ,
|
||||
`created_at` TIMESTAMP DEFAULT NULL ,
|
||||
`created_by` varchar(100) DEFAULT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
`admin` varchar(3000) DEFAULT NULL , -- domain administrator
|
||||
`admin_org` varchar(3000) DEFAULT NULL , -- domain administrators organization
|
||||
`is_open` TINYINT DEFAULT NULL , -- whether the domain is public
|
||||
`viewer` varchar(3000) DEFAULT NULL , -- domain available users
|
||||
`view_org` varchar(3000) DEFAULT NULL , -- domain available organization
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_domain IS 'domain basic information';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_model` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`name` varchar(255) DEFAULT NULL , -- domain name
|
||||
`biz_name` varchar(255) DEFAULT NULL , -- internal name
|
||||
`domain_id` INT DEFAULT '0' , -- parent domain ID
|
||||
`tag_object_id` INT DEFAULT '0' ,
|
||||
`alias` varchar(255) DEFAULT NULL , -- internal name
|
||||
`status` INT DEFAULT NULL,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`created_at` TIMESTAMP DEFAULT NULL ,
|
||||
`created_by` varchar(100) DEFAULT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
`admin` varchar(3000) DEFAULT NULL , -- domain administrator
|
||||
`admin_org` varchar(3000) DEFAULT NULL , -- domain administrators organization
|
||||
`is_open` TINYINT DEFAULT NULL , -- whether the domain is public
|
||||
`viewer` varchar(3000) DEFAULT NULL , -- domain available users
|
||||
`view_org` varchar(3000) DEFAULT NULL , -- domain available organization
|
||||
`entity` varchar(500) DEFAULT NULL , -- domain entity info
|
||||
`drill_down_dimensions` TEXT DEFAULT NULL , -- drill down dimensions info
|
||||
`database_id` INT NOT NULL ,
|
||||
`model_detail` LONGVARCHAR NOT NULL ,
|
||||
`depends` varchar(500) DEFAULT NULL ,
|
||||
`source_type` varchar(128) DEFAULT NULL ,
|
||||
`filter_sql` varchar(1000) DEFAULT NULL ,
|
||||
`ext` varchar(1000) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_model IS 'model information';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_database` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`version` varchar(64) DEFAULT NULL ,
|
||||
`type` varchar(20) NOT NULL , -- type: mysql,clickhouse,tdw
|
||||
`config` varchar(655) NOT NULL ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL,
|
||||
`admin` varchar(500) NOT NULL,
|
||||
`viewer` varchar(500) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_database IS 'database instance table';
|
||||
|
||||
create table IF NOT EXISTS s2_auth_groups
|
||||
(
|
||||
group_id INT,
|
||||
config varchar(2048),
|
||||
PRIMARY KEY (`group_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_metric` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`model_id` INT NOT NULL ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`biz_name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`status` INT NOT NULL ,
|
||||
`sensitive_level` INT NOT NULL ,
|
||||
`type` varchar(50) NOT NULL , -- ATOMIC, DERIVED
|
||||
`type_params` LONGVARCHAR DEFAULT NULL ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL ,
|
||||
`data_format_type` varchar(50) DEFAULT NULL ,
|
||||
`data_format` varchar(500) DEFAULT NULL,
|
||||
`alias` varchar(500) DEFAULT NULL,
|
||||
`classifications` varchar(500) DEFAULT NULL,
|
||||
`relate_dimensions` varchar(500) DEFAULT NULL,
|
||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||
`define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC
|
||||
`is_publish` INT,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_metric IS 'metric information table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_dimension` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`model_id` INT NOT NULL ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`biz_name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) NOT NULL ,
|
||||
`status` INT NOT NULL , -- status, 0 is off the shelf, 1 is normal
|
||||
`sensitive_level` INT DEFAULT NULL ,
|
||||
`data_type` varchar(50) DEFAULT NULL , -- type date,array,varchar
|
||||
`type` varchar(50) NOT NULL , -- type categorical,time
|
||||
`type_params` LONGVARCHAR DEFAULT NULL ,
|
||||
`expr` LONGVARCHAR NOT NULL , -- expression
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL ,
|
||||
`semantic_type` varchar(20) NOT NULL, -- semantic type: DATE, ID, CATEGORY
|
||||
`alias` varchar(500) DEFAULT NULL,
|
||||
`default_values` varchar(500) DEFAULT NULL,
|
||||
`dim_value_maps` varchar(500) DEFAULT NULL,
|
||||
`is_tag` INT DEFAULT NULL,
|
||||
`ext` varchar(1000) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_dimension IS 'dimension information table';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_model_rela
|
||||
(
|
||||
id BIGINT AUTO_INCREMENT,
|
||||
domain_id BIGINT,
|
||||
from_model_id BIGINT,
|
||||
to_model_id BIGINT,
|
||||
join_type VARCHAR(255),
|
||||
join_condition VARCHAR(255),
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
create table IF NOT EXISTS `s2_canvas` (
|
||||
id INT auto_increment,
|
||||
domain_id INT null,
|
||||
type varchar(20) null comment 'model、dimension、metric',
|
||||
config LONGVARCHAR null comment 'config detail',
|
||||
created_at TIMESTAMP null,
|
||||
created_by varchar(100) null,
|
||||
updated_at TIMESTAMP null,
|
||||
updated_by varchar(100) not null,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_canvas IS 'canvas table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_query_stat_info` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`trace_id` varchar(200) DEFAULT NULL, -- query unique identifier
|
||||
`model_id` INT DEFAULT NULL,
|
||||
`data_set_id` INT DEFAULT NULL,
|
||||
`user` varchar(200) DEFAULT NULL,
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
|
||||
`query_type` varchar(200) DEFAULT NULL, -- the corresponding scene
|
||||
`query_type_back` INT DEFAULT '0' , -- query type, 0-normal query, 1-pre-refresh type
|
||||
`query_sql_cmd`LONGVARCHAR , -- sql type request parameter
|
||||
`sql_cmd_md5` varchar(200) DEFAULT NULL, -- sql type request parameter md5
|
||||
`query_struct_cmd`LONGVARCHAR , -- struct type request parameter
|
||||
`struct_cmd_md5` varchar(200) DEFAULT NULL, -- struct type request parameter md5值
|
||||
`sql`LONGVARCHAR ,
|
||||
`sql_md5` varchar(200) DEFAULT NULL, -- sql md5
|
||||
`query_engine` varchar(20) DEFAULT NULL,
|
||||
`elapsed_ms` bigINT DEFAULT NULL,
|
||||
`query_state` varchar(20) DEFAULT NULL,
|
||||
`native_query` INT DEFAULT NULL, -- 1-detail query, 0-aggregation query
|
||||
`start_date` varchar(50) DEFAULT NULL,
|
||||
`end_date` varchar(50) DEFAULT NULL,
|
||||
`dimensions`LONGVARCHAR , -- dimensions involved in sql
|
||||
`metrics`LONGVARCHAR , -- metric involved in sql
|
||||
`select_cols`LONGVARCHAR ,
|
||||
`agg_cols`LONGVARCHAR ,
|
||||
`filter_cols`LONGVARCHAR ,
|
||||
`group_by_cols`LONGVARCHAR ,
|
||||
`order_by_cols`LONGVARCHAR ,
|
||||
`use_result_cache` TINYINT DEFAULT '-1' , -- whether to hit the result cache
|
||||
`use_sql_cache` TINYINT DEFAULT '-1' , -- whether to hit the sql cache
|
||||
`sql_cache_key`LONGVARCHAR , -- sql cache key
|
||||
`result_cache_key`LONGVARCHAR , -- result cache key
|
||||
`query_opt_mode` varchar(50) DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
) ;
|
||||
COMMENT ON TABLE s2_query_stat_info IS 'query statistics table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_semantic_pasre_info` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`trace_id` varchar(200) NOT NULL ,
|
||||
`model_id` INT NOT NULL ,
|
||||
`dimensions`LONGVARCHAR ,
|
||||
`metrics`LONGVARCHAR ,
|
||||
`orders`LONGVARCHAR ,
|
||||
`filters`LONGVARCHAR ,
|
||||
`date_info`LONGVARCHAR ,
|
||||
`limit` INT NOT NULL ,
|
||||
`native_query` TINYINT NOT NULL DEFAULT '0' ,
|
||||
`sql`LONGVARCHAR ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`status` INT NOT NULL ,
|
||||
`elapsed_ms` bigINT DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_semantic_pasre_info IS 'semantic layer sql parsing information table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_available_date_info` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`item_id` INT NOT NULL ,
|
||||
`type` varchar(255) NOT NULL ,
|
||||
`date_format` varchar(64) NOT NULL ,
|
||||
`start_date` varchar(64) ,
|
||||
`end_date` varchar(64) ,
|
||||
`unavailable_date` LONGVARCHAR DEFAULT NULL ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL ,
|
||||
`date_period` varchar(100) DEFAULT NULL ,
|
||||
`status` INT DEFAULT '0', -- 1-in use 0 is normal, 1 is off the shelf, 2 is deleted
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_dimension IS 'dimension information table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_plugin`
|
||||
(
|
||||
`id` INT AUTO_INCREMENT,
|
||||
`type` varchar(50) NULL,
|
||||
`data_set` varchar(100) NULL,
|
||||
`pattern` varchar(500) NULL,
|
||||
`parse_mode` varchar(100) NULL,
|
||||
`parse_mode_config` LONGVARCHAR NULL,
|
||||
`name` varchar(100) NULL,
|
||||
`created_at` TIMESTAMP NULL,
|
||||
`created_by` varchar(100) null,
|
||||
`updated_at` TIMESTAMP NULL,
|
||||
`updated_by` varchar(100) NULL,
|
||||
`config` LONGVARCHAR NULL,
|
||||
`comment` LONGVARCHAR NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
); COMMENT ON TABLE s2_plugin IS 'plugin information table';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_agent
|
||||
(
|
||||
id int AUTO_INCREMENT,
|
||||
name varchar(100) null,
|
||||
description varchar(500) null,
|
||||
status int null,
|
||||
examples varchar(500) null,
|
||||
tool_config varchar(2000) null,
|
||||
llm_config varchar(2000) null,
|
||||
chat_model_config varchar(6000) null,
|
||||
visual_config varchar(2000) null,
|
||||
created_by varchar(100) null,
|
||||
created_at TIMESTAMP null,
|
||||
updated_by varchar(100) null,
|
||||
updated_at TIMESTAMP null,
|
||||
enable_search int null,
|
||||
enable_feedback int null,
|
||||
admin varchar(1000),
|
||||
viewer varchar(1000),
|
||||
PRIMARY KEY (`id`)
|
||||
); COMMENT ON TABLE s2_agent IS 'agent information table';
|
||||
|
||||
|
||||
-------demo for semantic and chat
|
||||
CREATE TABLE IF NOT EXISTS `s2_user_department` (
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`department` varchar(200) NOT NULL, -- department of user
|
||||
PRIMARY KEY (`user_name`,`department`)
|
||||
);
|
||||
COMMENT ON TABLE s2_user_department IS 'user_department_info';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
|
||||
`imp_date` varchar(200) NOT NULL,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`page` varchar(200) NOT NULL
|
||||
);
|
||||
COMMENT ON TABLE s2_pv_uv_statis IS 's2_pv_uv_statis';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
|
||||
`imp_date` varchar(200) NOT NULL,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`stay_hours` DOUBLE NOT NULL,
|
||||
`page` varchar(200) NOT NULL
|
||||
);
|
||||
COMMENT ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `singer` (
|
||||
`singer_name` varchar(200) NOT NULL,
|
||||
`act_area` varchar(200) NOT NULL,
|
||||
`song_name` varchar(200) NOT NULL,
|
||||
`genre` varchar(200) NOT NULL,
|
||||
`js_play_cnt` bigINT DEFAULT NULL,
|
||||
`down_cnt` bigINT DEFAULT NULL,
|
||||
`favor_cnt` bigINT DEFAULT NULL,
|
||||
PRIMARY KEY (`singer_name`)
|
||||
);
|
||||
COMMENT ON TABLE singer IS 'singer_info';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_dictionary_conf` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`description` varchar(255) ,
|
||||
`type` varchar(255) NOT NULL ,
|
||||
`item_id` INT NOT NULL , -- task Request Parameters md5
|
||||
`config` LONGVARCHAR , -- remark related information
|
||||
`status` varchar(255) NOT NULL , -- the final status of the task
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_dictionary_conf IS 'dictionary conf information table';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_dictionary_task` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL , -- task name
|
||||
`description` varchar(255) ,
|
||||
`type` varchar(255) NOT NULL ,
|
||||
`item_id` INT NOT NULL , -- task Request Parameters md5
|
||||
`config` LONGVARCHAR , -- remark related information
|
||||
`status` varchar(255) NOT NULL , -- the final status of the task
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`elapsed_ms` bigINT DEFAULT NULL , -- the task takes time in milliseconds
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_dictionary_task IS 'dictionary task information table';
|
||||
|
||||
|
||||
|
||||
-- benchmark
|
||||
CREATE TABLE IF NOT EXISTS `genre` (
|
||||
`g_name` varchar(20) NOT NULL , -- genre name
|
||||
`rating` INT ,
|
||||
`most_popular_in` varchar(50) ,
|
||||
PRIMARY KEY (`g_name`)
|
||||
);
|
||||
COMMENT ON TABLE genre IS 'genre';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `artist` (
|
||||
`artist_name` varchar(50) NOT NULL , -- genre name
|
||||
`citizenship` varchar(20) ,
|
||||
`gender` varchar(20) ,
|
||||
`g_name` varchar(50),
|
||||
PRIMARY KEY (`artist_name`,`citizenship`)
|
||||
);
|
||||
COMMENT ON TABLE artist IS 'artist';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `files` (
|
||||
`f_id` bigINT NOT NULL,
|
||||
`artist_name` varchar(50) ,
|
||||
`file_size` varchar(20) ,
|
||||
`duration` varchar(20) ,
|
||||
`formats` varchar(20) ,
|
||||
PRIMARY KEY (`f_id`)
|
||||
);
|
||||
COMMENT ON TABLE files IS 'files';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `song` (
|
||||
`imp_date` varchar(50) ,
|
||||
`song_name` varchar(50) ,
|
||||
`artist_name` varchar(50) ,
|
||||
`country` varchar(20) ,
|
||||
`f_id` bigINT ,
|
||||
`g_name` varchar(20) ,
|
||||
`rating` INT ,
|
||||
`languages` varchar(20) ,
|
||||
`releasedate` varchar(50) ,
|
||||
`resolution` bigINT NOT NULL,
|
||||
PRIMARY KEY (`imp_date`,`song_name`)
|
||||
);
|
||||
COMMENT ON TABLE song IS 'song';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `company` (
|
||||
`imp_date` varchar(50) ,
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
`company_name` varchar(50) NOT NULL ,
|
||||
`headquarter_address` varchar(50) NOT NULL ,
|
||||
`company_established_time` varchar(20) NOT NULL ,
|
||||
`founder` varchar(20) NOT NULL ,
|
||||
`ceo` varchar(20) NOT NULL ,
|
||||
`annual_turnover` bigint(15) ,
|
||||
`employee_count` int(7) ,
|
||||
PRIMARY KEY (`company_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `brand` (
|
||||
`imp_date` varchar(50) ,
|
||||
`brand_id` varchar(50) NOT NULL ,
|
||||
`brand_name` varchar(50) NOT NULL ,
|
||||
`brand_established_time` varchar(20) NOT NULL ,
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
`legal_representative` varchar(20) NOT NULL ,
|
||||
`registered_capital` bigint(15) ,
|
||||
PRIMARY KEY (`brand_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `company_revenue` (
|
||||
`imp_date` varchar(50) ,
|
||||
`company_id` varchar(50) NOT NULL ,
|
||||
`brand_id` varchar(50) NOT NULL ,
|
||||
`revenue_proportion` double NOT NULL,
|
||||
`profit_proportion` double NOT NULL ,
|
||||
`expenditure_proportion` double NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `company_brand_revenue` (
|
||||
`imp_date` varchar(50) ,
|
||||
`year_time` varchar(10) NOT NULL ,
|
||||
`brand_id` varchar(50) NOT NULL ,
|
||||
`revenue` bigint(15) NOT NULL,
|
||||
`profit` bigint(15) NOT NULL ,
|
||||
`revenue_growth_year_on_year` double NOT NULL ,
|
||||
`profit_growth_year_on_year` double NOT NULL
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS s2_system_config
|
||||
(
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
admin varchar(500),
|
||||
parameters text null
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_collect` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`type` varchar(20) NOT NULL,
|
||||
`username` varchar(20) NOT NULL,
|
||||
`collect_id` bigint NOT NULL,
|
||||
`create_time` TIMESTAMP,
|
||||
`update_time` TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_metric_query_default_config` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`metric_id` bigint ,
|
||||
`user_name` varchar(255) NOT NULL,
|
||||
`default_config` varchar(1000) NOT NULL,
|
||||
`created_at` TIMESTAMP null,
|
||||
`updated_at` TIMESTAMP null,
|
||||
`created_by` varchar(100) null,
|
||||
`updated_by` varchar(100) not null,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_app` (
|
||||
id bigint AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
description VARCHAR(255),
|
||||
status INT,
|
||||
config TEXT,
|
||||
end_date TIMESTAMP,
|
||||
qps INT,
|
||||
app_secret VARCHAR(255),
|
||||
owner VARCHAR(255),
|
||||
created_at TIMESTAMP,
|
||||
created_by VARCHAR(255),
|
||||
updated_at TIMESTAMP,
|
||||
updated_by VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_data_set` (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
domain_id BIGINT,
|
||||
`name` VARCHAR(255),
|
||||
biz_name VARCHAR(255),
|
||||
description VARCHAR(255),
|
||||
status INT,
|
||||
alias VARCHAR(255),
|
||||
data_set_detail TEXT,
|
||||
created_at TIMESTAMP,
|
||||
created_by VARCHAR(255),
|
||||
updated_at TIMESTAMP,
|
||||
updated_by VARCHAR(255),
|
||||
query_config VARCHAR(3000),
|
||||
`admin` varchar(3000) DEFAULT NULL,
|
||||
`admin_org` varchar(3000) DEFAULT NULL,
|
||||
`query_type` varchar(100) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_tag` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`item_id` INT NOT NULL ,
|
||||
`type` varchar(50) NOT NULL , -- METRIC DIMENSION
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_tag IS 'tag information';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_tag_object` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`domain_id` INT NOT NULL ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`biz_name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`status` INT NOT NULL DEFAULT '1' ,
|
||||
`sensitive_level` INT NOT NULL DEFAULT '1' ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_tag IS 'tag object information';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_query_rule` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`data_set_id` INT ,
|
||||
`priority` INT NOT NULL DEFAULT '1' ,
|
||||
`rule_type` varchar(255) NOT NULL ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`biz_name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`rule` LONGVARCHAR DEFAULT NULL ,
|
||||
`action` LONGVARCHAR DEFAULT NULL ,
|
||||
`status` INT NOT NULL DEFAULT '1' ,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_query_rule IS 'tag query rule table';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_term` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`domain_id` INT ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
`alias` varchar(1000) NOT NULL ,
|
||||
`related_metrics` varchar(1000) DEFAULT NULL ,
|
||||
`related_dimensions` varchar(1000) DEFAULT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP DEFAULT NULL ,
|
||||
`updated_by` varchar(100) DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_term IS 'term info';
|
||||
@@ -1,2 +1,2 @@
|
||||
root=.
|
||||
CustomDictionaryPath=data/dictionary/custom/DimValue_1_1.txt;data/dictionary/custom/DimValue_1_2.txt;data/dictionary/custom/DimValue_1_3.txt;
|
||||
CustomDictionaryPath=data/dictionary/custom/dic_value_1_DIMENSION_1.txt
|
||||
@@ -1,5 +1,4 @@
|
||||
s2:
|
||||
|
||||
schema:
|
||||
cache:
|
||||
enable: false
|
||||
@@ -21,7 +20,7 @@ s2:
|
||||
date: true
|
||||
|
||||
demo:
|
||||
names: S2VisitsDemo,S2SingerDemo,S2CompanyDemo
|
||||
names: S2VisitsDemo, S2SingerDemo, S2CompanyDemo
|
||||
enableLLM: false
|
||||
|
||||
authentication:
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
[
|
||||
{
|
||||
"question": "比较jackjchen和robinlee今年以来的访问次数",
|
||||
"sideInfo": "CurrentDate=[2020-12-01],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[<数据日期>], Values[<用户='jackjchen'>,<用户='robinlee'>]",
|
||||
"sql": "SELECT 用户, 访问次数 FROM 超音数产品 WHERE 用户 IN ('jackjchen', 'robinlee') AND 数据日期 >= '2020-01-01' AND 数据日期 <= '2020-12-01'"
|
||||
},
|
||||
{
|
||||
"question": "超音数近12个月访问人数 按部门",
|
||||
"sideInfo": "CurrentDate=[2022-11-06]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[<部门>,<数据日期>], Values=[]",
|
||||
"sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'"
|
||||
},
|
||||
{
|
||||
"question": "超音数过去90天美术部、技术研发部的访问时长",
|
||||
"sideInfo": "CurrentDate=[2023-04-21]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions=[<数据日期>], Values=[<部门='美术部'>,<部门='技术研发部'>]",
|
||||
"sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部') AND 数据日期 >= '2023-01-21' AND 数据日期 <= '2023-04-21'"
|
||||
},
|
||||
{
|
||||
"question": "超音数访问时长小于1小时,且来自美术部的用户是哪些",
|
||||
"sideInfo": "CurrentDate=[2023-07-31],DomainTerms=[<核心用户 COMMENT '用户为tom和lucy'>]",
|
||||
"dbSchema": "DatabaseType=[h2], Table:[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics:[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions:[<用户>,<数据日期>], Values:[<部门='美术部'>]",
|
||||
"sql": "SELECT 用户 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1"
|
||||
},
|
||||
{
|
||||
"question": "超音数本月pv最高的用户有哪些",
|
||||
"sideInfo": "CurrentDate=[2023-08-31],DomainTerms=[<核心用户 COMMENT '用户为tom和lucy'>]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<用户>,<数据日期>], Values=[]",
|
||||
"sql": "SELECT 用户 FROM 超音数产品 WHERE 数据日期 >= '2023-08-01' AND 数据日期 <= '2023-08-31' ORDER BY 访问次数 DESC LIMIT 1"
|
||||
},
|
||||
{
|
||||
"question": "超音数访问次数大于1k的部门是哪些",
|
||||
"sideInfo": "CurrentDate=[2023-09-14]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<部门>,<数据日期>], Values=[]",
|
||||
"sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000"
|
||||
},
|
||||
{
|
||||
"question": "过去半个月核心用户的访问次数",
|
||||
"sideInfo": "CurrentDate=[2023-09-15],DomainTerms=[<核心用户 COMMENT '用户为alice'>]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<部门>,<数据日期>], Values=[]",
|
||||
"sql": "SELECT 用户,SUM(访问次数) FROM 超音数产品 WHERE 用户='alice' AND 数据日期 >= '2023-09-01' AND 数据日期 <= '2023-09-15' GROUP BY 用户"
|
||||
},
|
||||
{
|
||||
"question": "过去半个月忠实用户有哪一些",
|
||||
"sideInfo": "CurrentDate=[2023-09-15],DomainTerms=[<忠实用户 COMMENT '一段时间内总访问次数大于100的用户'>]",
|
||||
"dbSchema": "DatabaseType=[h2], Table=[超音数产品], PartitionTimeField=[数据日期 FORMAT 'yyyy-MM-dd'], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<用户>,<数据日期>], Values=[]",
|
||||
"sql": "SELECT 用户 FROM 超音数产品 WHERE 数据日期 >= '2023-09-01' AND 数据日期 <= '2023-09-15' GROUP BY 用户 HAVING SUM(访问次数) > 100"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user