From 559ef974b05e3f81515d5e6c48e782059a1fb2f7 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Sun, 3 Sep 2023 23:51:47 +0800 Subject: [PATCH] (improvement)(project) support for modifying filter conditions and fix group by pushdown and add windows scipt (#49) Co-authored-by: lexluo --- .../authentication/adaptor/UserAdaptor.java | 1 + .../api/authentication/pojo/Organization.java | 3 +- .../authentication/service/UserService.java | 1 + .../authentication/service/UserStrategy.java | 1 + .../request/QueryAuthResReq.java | 1 + .../response/AuthorizedResourceResp.java | 1 + .../authorization/service/AuthService.java | 1 - .../adaptor/DefaultUserAdaptor.java | 2 +- .../auth/authentication/config/TppConfig.java | 21 + .../interceptor/InterceptorFactory.java | 3 +- .../repository/Impl/UserRepositoryImpl.java | 2 +- .../service/UserServiceImpl.java | 1 + .../utils/ComponentFactory.java | 2 +- .../main/resources/mapper/UserDOMapper.xml | 294 +- .../chat/api/pojo/CorrectionInfo.java | 1 + .../supersonic/chat/api/pojo/ModelSchema.java | 3 +- .../chat/api/pojo/QueryContext.java | 5 +- .../chat/api/pojo/SchemaElement.java | 20 +- .../chat/api/pojo/SchemaValueMap.java | 24 + .../chat/api/pojo/SemanticSchema.java | 1 - .../api/pojo/request/ChatAggConfigReq.java | 3 +- .../api/pojo/request/ChatConfigBaseReq.java | 4 +- .../pojo/request/ChatDefaultConfigReq.java | 3 +- .../api/pojo/request/ChatDetailConfigReq.java | 3 +- .../api/pojo/request/DimensionValueReq.java | 12 + .../api/pojo/request/ExecuteQueryReq.java | 5 +- .../pojo/request/KnowledgeAdvancedConfig.java | 3 +- .../api/pojo/request/KnowledgeInfoReq.java | 2 + .../chat/api/pojo/request/QueryDataReq.java | 3 +- .../chat/api/pojo/request/QueryFilters.java | 3 +- .../chat/api/pojo/request/QueryReq.java | 1 - .../pojo/response/ChatAggRichConfigResp.java | 3 +- .../api/pojo/response/ChatConfigResp.java | 2 + .../api/pojo/response/ChatConfigRichResp.java | 1 + .../response/ChatDefaultRichConfigResp.java | 3 +- .../response/ChatDetailRichConfigResp.java | 3 +- .../api/pojo/response/EntityRichInfoResp.java | 4 +- .../pojo/response/RecommendQuestionResp.java | 4 +- .../chat/api/pojo/response/RecommendResp.java | 4 +- chat/core/pom.xml | 8 + .../supersonic/chat/config/ChatConfig.java | 5 +- .../chat/config/FunctionCallInfoConfig.java | 1 - .../chat/config/OptimizationConfig.java | 43 + .../chat/corrector/DateFieldCorrector.java | 1 + .../chat/corrector/FieldCorrector.java | 6 +- .../chat/corrector/FieldNameCorrector.java | 50 + .../chat/corrector/FieldValueCorrector.java | 79 +- .../chat/corrector/FunctionCorrector.java | 6 +- .../chat/corrector/QueryFilterAppend.java | 9 +- .../corrector/SelectFieldAppendCorrector.java | 14 +- .../chat/corrector/TableNameCorrector.java | 7 +- .../chat/mapper/FuzzyNameMapper.java | 6 +- .../chat/mapper/HanlpDictMapper.java | 23 +- .../supersonic/chat/mapper/MapperHelper.java | 23 +- .../chat/mapper/QueryMatchStrategy.java | 10 +- .../chat/parser/SatisfactionChecker.java | 13 +- .../chat/parser/llm/dsl/LLMDslParser.java | 16 +- .../chat/parser/plugin/PluginParser.java | 118 + .../embedding/EmbeddingBasedParser.java | 137 +- .../plugin/embedding/EmbeddingResp.java | 3 +- .../plugin/function/FunctionBasedParser.java | 117 +- .../parser/plugin/function/FunctionReq.java | 3 +- .../plugin/function/ModelMatchResult.java | 1 - .../parser/plugin/function/Parameters.java | 2 +- .../chat/parser/rule/AggregateTypeParser.java | 2 +- .../persistence/dataobject/ChatConfigDO.java | 1 + .../chat/persistence/dataobject/ChatDO.java | 1 + .../persistence/dataobject/DimValueDO.java | 5 +- .../chat/persistence/dataobject/PluginDO.java | 1 - .../dataobject/PluginDOExample.java | 3 - .../chat/persistence/mapper/ChatMapper.java | 2 +- .../persistence/mapper/ChatQueryDOMapper.java | 3 +- .../persistence/mapper/PluginDOMapper.java | 13 +- .../repository/ChatConfigRepository.java | 3 +- .../repository/ChatRepository.java | 2 +- .../repository/PluginRepository.java | 2 +- .../repository/impl/ChatRepositoryImpl.java | 6 +- .../supersonic/chat/plugin/Plugin.java | 2 +- .../supersonic/chat/plugin/PluginManager.java | 4 - .../chat/plugin/PluginRecallResult.java | 23 + .../chat/query/HeuristicQuerySelector.java | 9 +- .../supersonic/chat/query/QueryManager.java | 2 +- .../query/metricInterpret/LLmAnswerResp.java | 1 + .../supersonic/chat/query/plugin/WebBase.java | 2 +- .../chat/query/plugin/WebBaseResult.java | 2 +- .../query/plugin/webpage/WebPageResponse.java | 2 +- .../chat/query/rule/RuleSemanticQuery.java | 2 + .../rule/entity/EntitySemanticQuery.java | 15 +- .../rule/metric/MetricSemanticQuery.java | 2 +- .../query/rule/metric/MetricTopNQuery.java | 7 +- .../supersonic/chat/rest/ChatController.java | 8 +- .../chat/rest/ChatQueryController.java | 16 +- .../chat/rest/DictionaryController.java | 1 + .../supersonic/chat/service/ChatService.java | 4 +- .../chat/service/ConfigService.java | 1 + .../chat/service/DictionaryService.java | 2 +- .../chat/service/PluginService.java | 3 +- .../supersonic/chat/service/QueryService.java | 4 +- .../chat/service/RecommendService.java | 1 + .../chat/service/SemanticService.java | 8 +- .../chat/service/impl/ChatServiceImpl.java | 25 +- .../service/impl/DictionaryServiceImpl.java | 12 +- .../chat/service/impl/QueryServiceImpl.java | 62 +- .../supersonic/chat/utils/CacheUtils.java | 2 +- .../chat/utils/DictQueryHelper.java | 16 +- .../resources/mapper/ChatConfigMapper.xml | 19 +- .../resources/mapper/ChatContextMapper.xml | 18 +- .../src/main/resources/mapper/ChatMapper.xml | 41 +- .../main/resources/mapper/PluginDOMapper.xml | 563 ++- chat/core/src/main/resources/sql.ddl/chat.sql | 26 +- .../corrector/DateFieldCorrectorTest.java | 3 +- .../FieldNameCorrectorTest.java} | 7 +- .../corrector/FieldValueCorrectorTest.java | 71 + .../SelectFieldAppendCorrectorTest.java | 3 +- .../chat/parser/llm/dsl/LLMDslParserTest.java | 74 +- .../chat/test/context/ContextTest.java | 6 +- .../context/SemanticParseObjectHelper.java | 7 +- .../src/test/resources/db/chat-data-h2.sql | 3 +- .../src/test/resources/db/chat-schema-h2.sql | 68 +- .../hanlp/dictionary/CoreDictionary.java | 1 + .../knowledge/ApplicationStartedInit.java | 5 +- .../knowledge/dictionary/DictConfig.java | 1 + .../dictionary/DimValue2DictCommand.java | 1 + .../dictionary/HadoopFileIOAdapter.java | 1 + .../dictionary/MultiCustomDictionary.java | 1 + .../dictionary/builder/BaseWordBuilder.java | 5 +- .../dictionary/builder/DomainWordBuilder.java | 4 +- .../dictionary/builder/EntityWordBuilder.java | 6 +- .../dictionary/builder/ValueWordBuilder.java | 6 +- .../persistence/dataobject/DictConfDO.java | 1 + .../persistence/mapper/DictTaskMapper.java | 2 +- .../repository/DictRepository.java | 3 +- .../repository/DictRepositoryImpl.java | 10 +- .../knowledge/semantic/BaseSemanticLayer.java | 2 + .../semantic/ModelSchemaBuilder.java | 21 +- .../knowledge/service/KnowledgeService.java | 1 + .../service/KnowledgeServiceImpl.java | 2 + .../knowledge/service/SchemaService.java | 3 +- .../knowledge/service/WordService.java | 4 +- .../knowledge/utils/ComponentFactory.java | 3 +- .../knowledge/utils/DictTaskConverter.java | 1 + .../knowledge/utils/FileHelper.java | 1 + .../knowledge/utils/HanlpHelper.java | 11 +- .../knowledge/utils/HdfsFileHelper.java | 1 + .../main/resources/mapper/DictConfMapper.xml | 28 +- .../main/resources/mapper/DictTaskMapper.xml | 8 +- .../main/resources/sql.ddl/s2_dictionary.sql | 55 +- .../resources/sql.ddl/s2_dictionary_task.sql | 44 +- checkstyle/checkstyle.xml | 3 +- .../supersonic/common/pojo/Aggregator.java | 2 + .../tencent/supersonic/common/pojo/Order.java | 1 + .../common/pojo/QueryAuthorization.java | 1 + .../supersonic/common/pojo/ResultData.java | 1 - .../common/util/DatePeriodEnum.java | 19 +- .../supersonic/common/util/JsonUtil.java | 3 +- .../supersonic/common/util/ThreadContext.java | 2 +- .../common/util/calcite/SqlParseUtils.java | 1 + .../util/jsqlparser/DateFunctionHelper.java | 61 + .../FieldAndValueAcquireVisitor.java | 52 +- .../jsqlparser/FieldlValueReplaceVisitor.java | 54 + ...itor.java => FiledNameReplaceVisitor.java} | 4 +- .../jsqlparser/FunctionReplaceVisitor.java | 59 +- .../jsqlparser/SqlParserUpdateHelper.java | 20 +- .../jsqlparser/SqlParserSelectHelperTest.java | 23 + .../main/resources/META-INF/spring.factories | 7 +- .../src/main/resources/application-local.yaml | 6 +- .../src/main/resources/db/chat-data-h2.sql | 91 +- .../src/main/resources/db/chat-schema-h2.sql | 5 +- .../src/main/resources/logback-spring.xml | 10 +- .../advice/RestExceptionHandler.java | 4 +- launchers/semantic/src/main/build/build.xml | 4 +- .../main/resources/META-INF/spring.factories | 1 + .../src/main/resources/application-local.yaml | 6 +- .../main/resources/db/semantic-data-h2.sql | 3383 ++++++---------- .../main/resources/db/semantic-schema-h2.sql | 641 +--- .../src/main/resources/logback-spring.xml | 8 +- .../com/tencent/supersonic/ConfigureDemo.java | 4 +- .../tencent/supersonic/db/MybatisConfig.java | 3 +- .../main/resources/META-INF/spring.factories | 5 +- .../src/main/resources/db/data-h2.sql | 2 +- .../src/main/resources/db/schema-h2.sql | 4 +- .../src/main/resources/db/schema-mysql.sql | 363 +- .../src/main/resources/db/sql-update.sql | 8 + .../src/main/resources/logback-spring.xml | 10 +- .../main/resources/optimization.properties | 18 + .../supersonic/integration/BaseQueryTest.java | 11 +- .../integration/EntityQueryTest.java | 5 +- .../integration/MultiTurnsTest.java | 9 +- .../integration/llm/LLMDslParserTest.java | 43 - .../test/resources/META-INF/spring.factories | 6 + .../src/test/resources/db/data-h2.sql | 3386 ++++++----------- .../src/test/resources/db/schema-h2.sql | 4 +- .../src/test/resources/logback-spring.xml | 10 +- pom.xml | 12 +- semantic/api/pom.xml | 10 +- .../semantic/api/model/pojo/DimValueMap.java | 3 +- .../semantic/api/model/pojo/Entity.java | 3 +- .../api/model/pojo/MetricTypeParams.java | 2 +- .../api/model/request/DatabaseReq.java | 8 +- .../api/model/request/DatasourceReq.java | 1 + .../api/model/request/DimensionReq.java | 5 +- .../api/model/request/MetricBaseReq.java | 2 +- .../semantic/api/model/request/MetricReq.java | 2 +- .../semantic/api/model/request/ModelReq.java | 3 +- .../model/request/ModelSchemaFilterReq.java | 3 +- .../api/model/request/PageSchemaItemReq.java | 2 +- .../api/model/request/SqlExecuteReq.java | 3 +- .../api/model/response/DatabaseResp.java | 17 +- .../api/model/response/DimensionResp.java | 2 + .../api/model/response/DomainResp.java | 2 + .../api/model/response/ModelResp.java | 3 +- .../api/model/response/ModelSchemaResp.java | 1 + .../response/QueryResultWithSchemaResp.java | 1 + .../semantic/api/query/pojo/Criterion.java | 2 + .../semantic/api/query/pojo/Filter.java | 2 + .../semantic/api/query/pojo/Param.java | 1 + .../api/query/request/QueryStructReq.java | 8 +- semantic/model/pom.xml | 2 + .../model/application/CatalogImpl.java | 8 +- .../application/DatabaseServiceImpl.java | 119 +- .../application/DatasourceServiceImpl.java | 16 +- .../model/application/DomainServiceImpl.java | 4 +- .../application/ViewInfoServiceImpl.java | 7 +- .../semantic/model/domain/Catalog.java | 7 +- .../model/domain/DatabaseService.java | 15 +- .../model/domain/DatasourceService.java | 12 +- .../semantic/model/domain/DomainService.java | 1 + .../semantic/model/domain/ModelService.java | 1 + .../engineadapter/ClickHouseAdaptor.java | 2 +- .../adaptor/engineadapter/MysqlAdaptor.java | 2 +- .../model/domain/dataobject/DatabaseDO.java | 100 +- .../domain/dataobject/DatabaseDOExample.java | 288 +- .../model/domain/dataobject/DatasourceDO.java | 1 - .../dataobject/DatasourceDOExample.java | 3 - .../domain/dataobject/DatasourceRelaDO.java | 1 - .../dataobject/DatasourceRelaDOExample.java | 3 - .../model/domain/dataobject/DimensionDO.java | 1 - .../domain/dataobject/DimensionDOExample.java | 3 - .../model/domain/dataobject/DomainDO.java | 29 - .../domain/dataobject/DomainDOExample.java | 3 - .../domain/dataobject/MetricDOExample.java | 3 - .../domain/dataobject/ModelDOExample.java | 3 - .../domain/dataobject/ViewInfoDOExample.java | 3 - .../domain/manager/DatasourceYamlManager.java | 4 +- .../semantic/model/domain/pojo/Database.java | 6 + .../semantic/model/domain/pojo/Dimension.java | 2 +- .../semantic/model/domain/pojo/Domain.java | 4 +- .../model/domain/pojo/JdbcDataSource.java | 1 + .../model/domain/pojo/MetaFilter.java | 2 +- .../semantic/model/domain/pojo/Model.java | 3 +- .../domain/repository/DatabaseRepository.java | 3 +- .../domain/repository/DateInfoRepository.java | 1 + .../domain/repository/DomainRepository.java | 1 + .../domain/repository/MetricRepository.java | 3 +- .../model/domain/utils/DatabaseConverter.java | 12 + .../domain/utils/DatasourceConverter.java | 4 +- .../domain/utils/DimensionConverter.java | 10 +- .../domain/utils/JdbcDataSourceUtils.java | 2 +- .../model/domain/utils/ModelConvert.java | 6 +- .../semantic/model/domain/utils/SqlUtils.java | 2 +- .../mapper/DatabaseDOMapper.java | 14 +- .../mapper/DatasourceDOMapper.java | 14 +- .../mapper/DatasourceRelaDOMapper.java | 12 +- .../infrastructure/mapper/DateInfoMapper.java | 1 + .../mapper/DimensionDOCustomMapper.java | 1 + .../mapper/DimensionDOMapper.java | 14 +- .../infrastructure/mapper/DomainDOMapper.java | 12 +- .../mapper/MetricDOCustomMapper.java | 3 +- .../infrastructure/mapper/MetricDOMapper.java | 14 +- .../infrastructure/mapper/ModelDOMapper.java | 15 +- .../mapper/ViewInfoDOMapper.java | 14 +- .../repository/DatabaseRepositoryImpl.java | 10 +- .../repository/DatasourceRepositoryImpl.java | 4 +- .../repository/DateInfoRepositoryImpl.java | 2 +- .../repository/DimensionRepositoryImpl.java | 6 +- .../repository/DomainRepositoryImpl.java | 1 + .../repository/MetricRepositoryImpl.java | 2 +- .../repository/ModelRepositoryImpl.java | 3 +- .../repository/ViewInfoRepositoryImpl.java | 2 + .../model/rest/DatabaseController.java | 33 +- .../semantic/model/rest/DomainController.java | 12 +- .../model/rest/ViewInfoController.java | 3 +- .../resources/mapper/DatabaseDOMapper.xml | 528 ++- .../resources/mapper/DatasourceDOMapper.xml | 514 ++- .../mapper/DatasourceRelaDOMapper.xml | 393 +- .../resources/mapper/DimensionDOMapper.xml | 720 ++-- .../main/resources/mapper/DomainDOMapper.xml | 508 ++- .../main/resources/mapper/MetricDOMapper.xml | 644 ++-- .../main/resources/mapper/ModelDOMapper.xml | 802 ++-- .../resources/mapper/ViewInfoDOMapper.xml | 435 +-- .../mapper/custom/DateInfoMapper.xml | 4 +- .../mapper/custom/MetricDOCustomMapper.xml | 8 +- .../main/resources/sql.ddl/s2_database.sql | 2 +- .../query/optimizer/QueryOptimizer.java | 1 - .../semantic/query/parser/SqlParser.java | 1 - .../parser/calcite/CalciteSqlParser.java | 3 +- .../query/parser/calcite/Configuration.java | 2 +- .../parser/calcite/planner/AggPlanner.java | 6 +- .../query/parser/calcite/sql/Renderer.java | 6 +- .../parser/calcite/sql/node/SemanticNode.java | 2 +- .../calcite/sql/render/FilterRender.java | 8 +- .../parser/calcite/sql/render/JoinRender.java | 12 +- .../calcite/sql/render/OutputRender.java | 6 +- .../persistence/pojo/QueryStatement.java | 1 - .../repository/StatRepositoryImpl.java | 2 +- .../{utils => service}/QueryReqConverter.java | 6 +- .../semantic/query/service/QueryService.java | 2 +- .../query/service/QueryServiceImpl.java | 1 - .../query/utils/ComponentFactory.java | 2 - .../semantic/query/utils/DimValueAspect.java | 152 +- .../semantic/query/utils/SqlFilterUtils.java | 2 +- .../query/utils/SqlGenerateUtils.java | 5 +- .../semantic/query/utils/StatUtils.java | 2 +- .../src/main/resources/mapper/StatMapper.xml | 25 +- .../resources/sql.ddl/s2_query_stat_info.sql | 67 +- .../sql.ddl/s2_semantic_pasre_info.sql | 52 +- .../calcite/SemanticParserServiceTest.java | 4 +- 317 files changed, 7449 insertions(+), 9413 deletions(-) create mode 100644 auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/config/TppConfig.java create mode 100644 chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaValueMap.java create mode 100644 chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/DimensionValueReq.java create mode 100644 chat/core/src/main/java/com/tencent/supersonic/chat/config/OptimizationConfig.java create mode 100644 chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldNameCorrector.java create mode 100644 chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/PluginParser.java create mode 100644 chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginRecallResult.java rename chat/core/src/test/java/com/tencent/supersonic/chat/{query/llm/dsl => }/corrector/DateFieldCorrectorTest.java (91%) rename chat/core/src/test/java/com/tencent/supersonic/chat/{query/llm/dsl/corrector/FieldValueCorrectorTest.java => corrector/FieldNameCorrectorTest.java} (91%) create mode 100644 chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldValueCorrectorTest.java rename chat/core/src/test/java/com/tencent/supersonic/chat/{query/llm/dsl => }/corrector/SelectFieldAppendCorrectorTest.java (89%) create mode 100644 common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/DateFunctionHelper.java create mode 100644 common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldlValueReplaceVisitor.java rename common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/{FiledValueReplaceVisitor.java => FiledNameReplaceVisitor.java} (90%) create mode 100644 launchers/standalone/src/main/resources/optimization.properties delete mode 100644 launchers/standalone/src/test/java/com/tencent/supersonic/integration/llm/LLMDslParserTest.java rename semantic/query/src/main/java/com/tencent/supersonic/semantic/query/{utils => service}/QueryReqConverter.java (96%) diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java index e4966dfb4..33c4cbe6a 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/adaptor/UserAdaptor.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.auth.api.authentication.adaptor; import com.tencent.supersonic.auth.api.authentication.pojo.Organization; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.request.UserReq; + import java.util.List; import java.util.Set; diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/Organization.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/Organization.java index 6f9f3a94f..a72870955 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/Organization.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/Organization.java @@ -1,9 +1,10 @@ package com.tencent.supersonic.auth.api.authentication.pojo; import com.google.common.collect.Lists; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class Organization { diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java index 268462054..dcfb3b8ef 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserService.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.auth.api.authentication.service; import com.tencent.supersonic.auth.api.authentication.pojo.Organization; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.request.UserReq; + import java.util.List; import java.util.Set; diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserStrategy.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserStrategy.java index ad271eea1..ae9d73a85 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserStrategy.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/service/UserStrategy.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.auth.api.authentication.service; import com.tencent.supersonic.auth.api.authentication.pojo.User; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/request/QueryAuthResReq.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/request/QueryAuthResReq.java index 9eed07aef..0c723c325 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/request/QueryAuthResReq.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/request/QueryAuthResReq.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.auth.api.authorization.request; import com.tencent.supersonic.auth.api.authorization.pojo.AuthRes; import java.util.ArrayList; import java.util.List; + import lombok.Data; import lombok.ToString; diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/response/AuthorizedResourceResp.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/response/AuthorizedResourceResp.java index 2a90bdaf2..059d3ce39 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/response/AuthorizedResourceResp.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/response/AuthorizedResourceResp.java @@ -4,6 +4,7 @@ import com.tencent.supersonic.auth.api.authorization.pojo.AuthResGrp; import com.tencent.supersonic.auth.api.authorization.pojo.DimensionFilter; import java.util.ArrayList; import java.util.List; + import lombok.Data; @Data diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/service/AuthService.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/service/AuthService.java index 184ffeba0..ab361408d 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/service/AuthService.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authorization/service/AuthService.java @@ -6,7 +6,6 @@ import com.tencent.supersonic.auth.api.authorization.request.QueryAuthResReq; import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResourceResp; import java.util.List; - public interface AuthService { List queryAuthGroups(String domainId, Integer groupId); diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java index 0c924d24e..e762ca9a3 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java @@ -11,10 +11,10 @@ import com.tencent.supersonic.auth.authentication.persistence.dataobject.UserDO; import com.tencent.supersonic.auth.authentication.persistence.repository.UserRepository; import com.tencent.supersonic.auth.authentication.utils.UserTokenUtils; import com.tencent.supersonic.common.util.ContextUtils; +import org.springframework.beans.BeanUtils; import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import org.springframework.beans.BeanUtils; public class DefaultUserAdaptor implements UserAdaptor { diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/config/TppConfig.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/config/TppConfig.java new file mode 100644 index 000000000..474de6004 --- /dev/null +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/config/TppConfig.java @@ -0,0 +1,21 @@ +package com.tencent.supersonic.auth.authentication.config; + + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class TppConfig { + + @Value(value = "${auth.app.secret:}") + private String appSecret; + + @Value(value = "${auth.app.key:}") + private String appKey; + + @Value(value = "${auth.oa.url:}") + private String tppOaUrl; + +} diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/InterceptorFactory.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/InterceptorFactory.java index 1c13cca3c..b754c3980 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/InterceptorFactory.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/InterceptorFactory.java @@ -1,11 +1,12 @@ package com.tencent.supersonic.auth.authentication.interceptor; -import java.util.List; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import java.util.List; + @Configuration public class InterceptorFactory implements WebMvcConfigurer { diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/Impl/UserRepositoryImpl.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/Impl/UserRepositoryImpl.java index 00f6643e5..2d34fe813 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/Impl/UserRepositoryImpl.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/repository/Impl/UserRepositoryImpl.java @@ -3,8 +3,8 @@ package com.tencent.supersonic.auth.authentication.persistence.repository.impl; import com.tencent.supersonic.auth.authentication.persistence.dataobject.UserDO; import com.tencent.supersonic.auth.authentication.persistence.dataobject.UserDOExample; -import com.tencent.supersonic.auth.authentication.persistence.mapper.UserDOMapper; import com.tencent.supersonic.auth.authentication.persistence.repository.UserRepository; +import com.tencent.supersonic.auth.authentication.persistence.mapper.UserDOMapper; import java.util.List; import java.util.Optional; import org.springframework.stereotype.Component; diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java index 7eb17b03b..d2315b160 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/service/UserServiceImpl.java @@ -7,6 +7,7 @@ import com.tencent.supersonic.auth.api.authentication.service.UserService; import com.tencent.supersonic.auth.authentication.utils.ComponentFactory; import java.util.List; import java.util.Set; + import org.springframework.stereotype.Service; @Service diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/ComponentFactory.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/ComponentFactory.java index 7f0f51dd3..e6cee4640 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/ComponentFactory.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/ComponentFactory.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.auth.authentication.utils; import com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor; -import java.util.Objects; import org.springframework.core.io.support.SpringFactoriesLoader; +import java.util.Objects; public class ComponentFactory { diff --git a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml index c8b15a120..15eb2b49c 100644 --- a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml +++ b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml @@ -1,159 +1,145 @@ - + - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , name, password, display_name, email - - - - - delete - from s2_user - where id = #{id,jdbcType=BIGINT} - - - insert into s2_user (id, name, password, - display_name, email) - values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, - #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) - - - insert into s2_user - - - id, - - - name, - - - password, - - - display_name, - - - email, - - - - - #{id,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{password,jdbcType=VARCHAR}, - - - #{displayName,jdbcType=VARCHAR}, - - - #{email,jdbcType=VARCHAR}, - - - - - - update s2_user - - - name = #{name,jdbcType=VARCHAR}, - - - password = #{password,jdbcType=VARCHAR}, - - - display_name = #{displayName,jdbcType=VARCHAR}, - - - email = #{email,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_user - set name = #{name,jdbcType=VARCHAR}, - password = #{password,jdbcType=VARCHAR}, - display_name = #{displayName,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + + + id, name, password, display_name, email + + + + + delete from s2_user + where id = #{id,jdbcType=BIGINT} + + + insert into s2_user (id, name, password, + display_name, email) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, + #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) + + + insert into s2_user + + + id, + + + name, + + + password, + + + display_name, + + + email, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{displayName,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + + + + update s2_user + + + name = #{name,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + display_name = #{displayName,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_user + set name = #{name,jdbcType=VARCHAR}, + password = #{password,jdbcType=VARCHAR}, + display_name = #{displayName,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/CorrectionInfo.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/CorrectionInfo.java index d43d0e442..28caca4bc 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/CorrectionInfo.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/CorrectionInfo.java @@ -18,4 +18,5 @@ public class CorrectionInfo { private String sql; + private String preSql; } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/ModelSchema.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/ModelSchema.java index d365ace86..9d7a3c731 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/ModelSchema.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/ModelSchema.java @@ -1,9 +1,10 @@ package com.tencent.supersonic.chat.api.pojo; +import lombok.Data; + import java.util.HashSet; import java.util.Optional; import java.util.Set; -import lombok.Data; @Data public class ModelSchema { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/QueryContext.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/QueryContext.java index a5d77e553..91ccef717 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/QueryContext.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/QueryContext.java @@ -2,11 +2,12 @@ package com.tencent.supersonic.chat.api.pojo; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; -import java.util.ArrayList; -import java.util.List; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.List; + @Data @NoArgsConstructor public class QueryContext { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaElement.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaElement.java index c260416cd..cb86bd5c1 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaElement.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaElement.java @@ -1,39 +1,30 @@ package com.tencent.supersonic.chat.api.pojo; import com.google.common.base.Objects; - import java.io.Serializable; import java.util.List; - +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.Getter; -import lombok.Builder; import lombok.NoArgsConstructor; @Data @Getter @Builder +@AllArgsConstructor @NoArgsConstructor public class SchemaElement implements Serializable { - private Long model; private Long id; private String name; private String bizName; private Long useCnt; private SchemaElementType type; + private List alias; - public SchemaElement(Long model, Long id, String name, String bizName, - Long useCnt, SchemaElementType type, List alias) { - this.model = model; - this.id = id; - this.name = name; - this.bizName = bizName; - this.useCnt = useCnt; - this.type = type; - this.alias = alias; - } + private List schemaValueMaps; @Override public boolean equals(Object o) { @@ -54,4 +45,5 @@ public class SchemaElement implements Serializable { public int hashCode() { return Objects.hashCode(model, id, name, bizName, useCnt, type); } + } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaValueMap.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaValueMap.java new file mode 100644 index 000000000..e1dd88f5b --- /dev/null +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SchemaValueMap.java @@ -0,0 +1,24 @@ +package com.tencent.supersonic.chat.api.pojo; + +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class SchemaValueMap { + + /** + * dimension value in db + */ + private String techName; + + /** + * dimension value for result show + */ + private String bizName; + + /** + * dimension value for user query + */ + private List alias = new ArrayList<>(); +} \ No newline at end of file diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticSchema.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticSchema.java index ed91180a0..4cf01216f 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticSchema.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticSchema.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.stream.Collectors; public class SemanticSchema implements Serializable { - private List modelSchemaList; public SemanticSchema(List modelSchemaList) { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatAggConfigReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatAggConfigReq.java index fea0f2e05..f526d8a59 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatAggConfigReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatAggConfigReq.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.chat.api.pojo.request; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ChatAggConfigReq { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java index b5453d036..e2e8c0492 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java @@ -1,10 +1,12 @@ package com.tencent.supersonic.chat.api.pojo.request; import com.tencent.supersonic.common.pojo.enums.StatusEnum; -import java.util.List; + import lombok.Data; import lombok.ToString; +import java.util.List; + /** * extended information command about model */ diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDefaultConfigReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDefaultConfigReq.java index eb46d8948..33ca4889c 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDefaultConfigReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDefaultConfigReq.java @@ -2,9 +2,10 @@ package com.tencent.supersonic.chat.api.pojo.request; import com.tencent.supersonic.common.pojo.Constants; +import lombok.Data; + import java.util.ArrayList; import java.util.List; -import lombok.Data; @Data public class ChatDefaultConfigReq { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDetailConfigReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDetailConfigReq.java index dae93c376..90356035c 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDetailConfigReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatDetailConfigReq.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.chat.api.pojo.request; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ChatDetailConfigReq { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/DimensionValueReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/DimensionValueReq.java new file mode 100644 index 000000000..9233661af --- /dev/null +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/DimensionValueReq.java @@ -0,0 +1,12 @@ +package com.tencent.supersonic.chat.api.pojo.request; + +import lombok.Data; + +@Data +public class DimensionValueReq { + private Long modelId; + + private String bizName; + + private Object value; +} diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ExecuteQueryReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ExecuteQueryReq.java index 061dc4c5e..d57bd58f0 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ExecuteQueryReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ExecuteQueryReq.java @@ -7,13 +7,12 @@ import lombok.Data; @Data public class ExecuteQueryReq { - private User user; private Integer agentId; private Integer chatId; private String queryText; - private Long queryId; - private Integer parseId; + private Long queryId = 7L; + private Integer parseId = 2; private SemanticParseInfo parseInfo; private boolean saveAnswer = true; } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeAdvancedConfig.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeAdvancedConfig.java index d7644a269..3c5d8d501 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeAdvancedConfig.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeAdvancedConfig.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.chat.api.pojo.request; +import lombok.Data; + import java.util.ArrayList; import java.util.List; -import lombok.Data; /** * advanced knowledge config diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeInfoReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeInfoReq.java index 1ef5adc2c..c01deee97 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeInfoReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/KnowledgeInfoReq.java @@ -1,7 +1,9 @@ package com.tencent.supersonic.chat.api.pojo.request; import com.tencent.supersonic.common.pojo.enums.TypeEnums; + import javax.validation.constraints.NotNull; + import lombok.Data; /** diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryDataReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryDataReq.java index e2dd67e03..b93804ff0 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryDataReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryDataReq.java @@ -4,19 +4,20 @@ package com.tencent.supersonic.chat.api.pojo.request; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.Order; +import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; import java.util.HashSet; import java.util.Set; import lombok.Data; @Data public class QueryDataReq { - String queryMode; SchemaElement model; Set metrics = new HashSet<>(); Set dimensions = new HashSet<>(); Set dimensionFilters = new HashSet<>(); Set metricFilters = new HashSet<>(); + private AggregateTypeEnum aggType = AggregateTypeEnum.NONE; private Set orders = new HashSet<>(); private DateConf dateInfo; private Long limit; diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryFilters.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryFilters.java index a5f06518a..903288cd1 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryFilters.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryFilters.java @@ -1,14 +1,13 @@ package com.tencent.supersonic.chat.api.pojo.request; +import lombok.Data; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import lombok.Data; @Data public class QueryFilters { - private List filters = new ArrayList<>(); private Map params = new HashMap<>(); } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryReq.java index 4a127ea9f..04140c180 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/QueryReq.java @@ -5,7 +5,6 @@ import lombok.Data; @Data public class QueryReq { - private String queryText; private Integer chatId; private Long modelId = 0L; diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatAggRichConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatAggRichConfigResp.java index dc6b80cdc..33db6e0ec 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatAggRichConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatAggRichConfigResp.java @@ -2,9 +2,10 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.request.KnowledgeAdvancedConfig; import com.tencent.supersonic.chat.api.pojo.request.KnowledgeInfoReq; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ChatAggRichConfigResp { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java index 6a23e65ba..5914855a4 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java @@ -4,8 +4,10 @@ import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq; import com.tencent.supersonic.chat.api.pojo.request.ChatDetailConfigReq; import com.tencent.supersonic.chat.api.pojo.request.RecommendedQuestionReq; import com.tencent.supersonic.common.pojo.enums.StatusEnum; + import java.util.Date; import java.util.List; + import lombok.Data; @Data diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigRichResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigRichResp.java index c75ffebca..89ea1a42e 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigRichResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigRichResp.java @@ -4,6 +4,7 @@ import com.tencent.supersonic.chat.api.pojo.request.RecommendedQuestionReq; import com.tencent.supersonic.common.pojo.enums.StatusEnum; import java.util.Date; import java.util.List; + import lombok.Data; @Data diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java index c0c3f8544..6ef966681 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDefaultRichConfigResp.java @@ -4,9 +4,10 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.request.ChatDefaultConfigReq; import com.tencent.supersonic.common.pojo.Constants; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ChatDefaultRichConfigResp { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDetailRichConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDetailRichConfigResp.java index 734891766..a56e45106 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDetailRichConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatDetailRichConfigResp.java @@ -2,9 +2,10 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.request.KnowledgeAdvancedConfig; import com.tencent.supersonic.chat.api.pojo.request.KnowledgeInfoReq; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ChatDetailRichConfigResp { diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/EntityRichInfoResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/EntityRichInfoResp.java index 655ad5519..a8610fed1 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/EntityRichInfoResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/EntityRichInfoResp.java @@ -1,14 +1,14 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.SchemaElement; + import java.util.List; import lombok.Data; @Data public class EntityRichInfoResp { - /** - * entity alias + * entity alias */ private List names; diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendQuestionResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendQuestionResp.java index e4b24088b..74dbda9d2 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendQuestionResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendQuestionResp.java @@ -1,14 +1,14 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.request.RecommendedQuestionReq; -import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; +import java.util.List; + @Data @AllArgsConstructor public class RecommendQuestionResp { - private Long modelId; private List recommendedQuestions; } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendResp.java index cbc794ef7..8490ab549 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/RecommendResp.java @@ -1,12 +1,12 @@ package com.tencent.supersonic.chat.api.pojo.response; import com.tencent.supersonic.chat.api.pojo.SchemaElement; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class RecommendResp { - private List dimensions; private List metrics; } diff --git a/chat/core/pom.xml b/chat/core/pom.xml index 70b4c61c7..c232f88a3 100644 --- a/chat/core/pom.xml +++ b/chat/core/pom.xml @@ -136,6 +136,14 @@ xk-time ${xk.time.version} + + + org.mockito + mockito-inline + ${mockito-inline.version} + test + + diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/config/ChatConfig.java b/chat/core/src/main/java/com/tencent/supersonic/chat/config/ChatConfig.java index cefb8ddab..0eec7f4c1 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/config/ChatConfig.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/config/ChatConfig.java @@ -3,12 +3,13 @@ package com.tencent.supersonic.chat.config; import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq; import com.tencent.supersonic.chat.api.pojo.request.ChatDetailConfigReq; import com.tencent.supersonic.chat.api.pojo.request.RecommendedQuestionReq; -import com.tencent.supersonic.common.pojo.RecordInfo; import com.tencent.supersonic.common.pojo.enums.StatusEnum; -import java.util.List; +import com.tencent.supersonic.common.pojo.RecordInfo; import lombok.Data; import lombok.ToString; +import java.util.List; + @Data @ToString public class ChatConfig { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/config/FunctionCallInfoConfig.java b/chat/core/src/main/java/com/tencent/supersonic/chat/config/FunctionCallInfoConfig.java index de2a1e490..ec23773bd 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/config/FunctionCallInfoConfig.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/config/FunctionCallInfoConfig.java @@ -7,7 +7,6 @@ import org.springframework.context.annotation.Configuration; @Configuration @Data public class FunctionCallInfoConfig { - @Value("${functionCall.url:}") private String url; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/config/OptimizationConfig.java b/chat/core/src/main/java/com/tencent/supersonic/chat/config/OptimizationConfig.java new file mode 100644 index 000000000..0f5e10adc --- /dev/null +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/config/OptimizationConfig.java @@ -0,0 +1,43 @@ +package com.tencent.supersonic.chat.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@Data +@PropertySource("classpath:optimization.properties") +//@ComponentScan(basePackages = "com.tencent.supersonic.chat") +public class OptimizationConfig { + + @Value("${one.detection.size}") + private Integer oneDetectionSize; + @Value("${one.detection.max.size}") + private Integer oneDetectionMaxSize; + + @Value("${metric.dimension.min.threshold}") + private Double metricDimensionMinThresholdConfig; + + @Value("${metric.dimension.threshold}") + private Double metricDimensionThresholdConfig; + + @Value("${dimension.value.threshold}") + private Double dimensionValueThresholdConfig; + + @Value("${function.bonus.threshold}") + private Double functionBonusThreshold; + + @Value("${long.text.threshold}") + private Double longTextThreshold; + + @Value("${short.text.threshold}") + private Double shortTextThreshold; + + @Value("${query.text.length.threshold}") + private Integer queryTextLengthThreshold; + + @Value("${candidate.threshold}") + private Double candidateThreshold; + +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/DateFieldCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/DateFieldCorrector.java index 5273579cd..232dfba16 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/DateFieldCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/DateFieldCorrector.java @@ -20,6 +20,7 @@ public class DateFieldCorrector extends BaseSemanticCorrector { String currentDate = DSLDateHelper.getCurrentDate(correctionInfo.getParseInfo().getModelId()); sql = SqlParserUpdateHelper.addWhere(sql, DATE_FIELD, currentDate); } + correctionInfo.setPreSql(correctionInfo.getSql()); correctionInfo.setSql(sql); return correctionInfo; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldCorrector.java index 648f78564..d46bb4f28 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldCorrector.java @@ -9,9 +9,11 @@ public class FieldCorrector extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) { - String replaceFields = SqlParserUpdateHelper.replaceFields(correctionInfo.getSql(), + String preSql = correctionInfo.getSql(); + correctionInfo.setPreSql(preSql); + String sql = SqlParserUpdateHelper.replaceFields(preSql, getFieldToBizName(correctionInfo.getParseInfo().getModelId())); - correctionInfo.setSql(replaceFields); + correctionInfo.setSql(sql); return correctionInfo; } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldNameCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldNameCorrector.java new file mode 100644 index 000000000..b081ebc3f --- /dev/null +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldNameCorrector.java @@ -0,0 +1,50 @@ +package com.tencent.supersonic.chat.corrector; + +import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; +import com.tencent.supersonic.chat.parser.llm.dsl.DSLParseResult; +import com.tencent.supersonic.chat.query.llm.dsl.LLMReq; +import com.tencent.supersonic.chat.query.llm.dsl.LLMReq.ElementValue; +import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.util.JsonUtil; +import com.tencent.supersonic.common.util.jsqlparser.SqlParserUpdateHelper; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; + +@Slf4j +public class FieldNameCorrector extends BaseSemanticCorrector { + + @Override + public CorrectionInfo corrector(CorrectionInfo correctionInfo) { + + Object context = correctionInfo.getParseInfo().getProperties().get(Constants.CONTEXT); + if (Objects.isNull(context)) { + return correctionInfo; + } + + DSLParseResult dslParseResult = JsonUtil.toObject(JsonUtil.toString(context), DSLParseResult.class); + if (Objects.isNull(dslParseResult) || Objects.isNull(dslParseResult.getLlmReq())) { + return correctionInfo; + } + LLMReq llmReq = dslParseResult.getLlmReq(); + List linking = llmReq.getLinking(); + if (CollectionUtils.isEmpty(linking)) { + return correctionInfo; + } + + Map> fieldValueToFieldNames = linking.stream().collect( + Collectors.groupingBy(ElementValue::getFieldValue, + Collectors.mapping(ElementValue::getFieldName, Collectors.toSet()))); + + String preSql = correctionInfo.getSql(); + correctionInfo.setPreSql(preSql); + String sql = SqlParserUpdateHelper.replaceFieldNameByValue(preSql, fieldValueToFieldNames); + correctionInfo.setSql(sql); + return correctionInfo; + } + +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldValueCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldValueCorrector.java index f450cffb5..bc62c4a80 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldValueCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FieldValueCorrector.java @@ -1,18 +1,19 @@ package com.tencent.supersonic.chat.corrector; import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; -import com.tencent.supersonic.chat.parser.llm.dsl.DSLParseResult; -import com.tencent.supersonic.chat.query.llm.dsl.LLMReq; -import com.tencent.supersonic.chat.query.llm.dsl.LLMReq.ElementValue; -import com.tencent.supersonic.common.pojo.Constants; -import com.tencent.supersonic.common.util.JsonUtil; +import com.tencent.supersonic.chat.api.pojo.SchemaElement; +import com.tencent.supersonic.chat.api.pojo.SchemaValueMap; +import com.tencent.supersonic.chat.api.pojo.SemanticSchema; +import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.jsqlparser.SqlParserUpdateHelper; +import com.tencent.supersonic.knowledge.service.SchemaService; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Set; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; +import org.apache.logging.log4j.util.Strings; import org.springframework.util.CollectionUtils; @Slf4j @@ -20,29 +21,61 @@ public class FieldValueCorrector extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) { + SemanticSchema semanticSchema = ContextUtils.getBean(SchemaService.class).getSemanticSchema(); + Long modelId = correctionInfo.getParseInfo().getModel().getId(); + List dimensions = semanticSchema.getDimensions().stream() + .filter(schemaElement -> modelId.equals(schemaElement.getModel())) + .collect(Collectors.toList()); - Object context = correctionInfo.getParseInfo().getProperties().get(Constants.CONTEXT); - if (Objects.isNull(context)) { + if (CollectionUtils.isEmpty(dimensions)) { return correctionInfo; } - DSLParseResult dslParseResult = JsonUtil.toObject(JsonUtil.toString(context), DSLParseResult.class); - if (Objects.isNull(dslParseResult) || Objects.isNull(dslParseResult.getLlmReq())) { - return correctionInfo; - } - LLMReq llmReq = dslParseResult.getLlmReq(); - List linking = llmReq.getLinking(); - if (CollectionUtils.isEmpty(linking)) { - return correctionInfo; - } - - Map> fieldValueToFieldNames = linking.stream().collect( - Collectors.groupingBy(ElementValue::getFieldValue, - Collectors.mapping(ElementValue::getFieldName, Collectors.toSet()))); - - String sql = SqlParserUpdateHelper.replaceValueFields(correctionInfo.getSql(), fieldValueToFieldNames); + Map> aliasAndBizNameToTechName = getAliasAndBizNameToTechName(dimensions); + String preSql = correctionInfo.getSql(); + correctionInfo.setPreSql(preSql); + String sql = SqlParserUpdateHelper.replaceValue(preSql, aliasAndBizNameToTechName); correctionInfo.setSql(sql); return correctionInfo; } + + private Map> getAliasAndBizNameToTechName(List dimensions) { + if (CollectionUtils.isEmpty(dimensions)) { + return new HashMap<>(); + } + + Map> result = new HashMap<>(); + + for (SchemaElement dimension : dimensions) { + if (Objects.isNull(dimension) + || Strings.isEmpty(dimension.getBizName()) + || CollectionUtils.isEmpty(dimension.getSchemaValueMaps())) { + continue; + } + String bizName = dimension.getBizName(); + + Map aliasAndBizNameToTechName = new HashMap<>(); + + for (SchemaValueMap valueMap : dimension.getSchemaValueMaps()) { + if (Objects.isNull(valueMap) || Strings.isEmpty(valueMap.getTechName())) { + continue; + } + if (Strings.isNotEmpty(valueMap.getBizName())) { + aliasAndBizNameToTechName.put(valueMap.getBizName(), valueMap.getTechName()); + } + if (!CollectionUtils.isEmpty(valueMap.getAlias())) { + valueMap.getAlias().stream().forEach(alias -> { + if (Strings.isNotEmpty(alias)) { + aliasAndBizNameToTechName.put(alias, valueMap.getTechName()); + } + }); + } + } + if (!CollectionUtils.isEmpty(aliasAndBizNameToTechName)) { + result.put(bizName, aliasAndBizNameToTechName); + } + } + return result; + } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FunctionCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FunctionCorrector.java index 13cffe5c2..c5af7566c 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FunctionCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FunctionCorrector.java @@ -9,8 +9,10 @@ public class FunctionCorrector extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) { - String replaceFunction = SqlParserUpdateHelper.replaceFunction(correctionInfo.getSql()); - correctionInfo.setSql(replaceFunction); + String preSql = correctionInfo.getSql(); + correctionInfo.setPreSql(preSql); + String sql = SqlParserUpdateHelper.replaceFunction(preSql); + correctionInfo.setSql(sql); return correctionInfo; } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/QueryFilterAppend.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/QueryFilterAppend.java index b7d843fb7..185d5c6a4 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/QueryFilterAppend.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/QueryFilterAppend.java @@ -20,14 +20,15 @@ public class QueryFilterAppend extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) throws JSQLParserException { String queryFilter = getQueryFilter(correctionInfo.getQueryFilters()); - String sql = correctionInfo.getSql(); + String preSql = correctionInfo.getSql(); if (StringUtils.isNotEmpty(queryFilter)) { - log.info("add queryFilter to sql :{}", queryFilter); + log.info("add queryFilter to preSql :{}", queryFilter); Expression expression = CCJSqlParserUtil.parseCondExpression(queryFilter); - sql = SqlParserUpdateHelper.addWhere(sql, expression); + String sql = SqlParserUpdateHelper.addWhere(preSql, expression); + correctionInfo.setPreSql(preSql); + correctionInfo.setSql(sql); } - correctionInfo.setSql(sql); return correctionInfo; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrector.java index 6098ab4aa..00a8ceb7a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrector.java @@ -15,24 +15,24 @@ public class SelectFieldAppendCorrector extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) { - String sql = correctionInfo.getSql(); - if (SqlParserSelectHelper.hasAggregateFunction(sql)) { + String preSql = correctionInfo.getSql(); + if (SqlParserSelectHelper.hasAggregateFunction(preSql)) { return correctionInfo; } - Set selectFields = new HashSet<>(SqlParserSelectHelper.getSelectFields(sql)); - Set whereFields = new HashSet<>(SqlParserSelectHelper.getWhereFields(sql)); + Set selectFields = new HashSet<>(SqlParserSelectHelper.getSelectFields(preSql)); + Set whereFields = new HashSet<>(SqlParserSelectHelper.getWhereFields(preSql)); if (CollectionUtils.isEmpty(selectFields) || CollectionUtils.isEmpty(whereFields)) { return correctionInfo; } - whereFields.addAll(SqlParserSelectHelper.getOrderByFields(sql)); + whereFields.addAll(SqlParserSelectHelper.getOrderByFields(preSql)); whereFields.removeAll(selectFields); whereFields.remove(TimeDimensionEnum.DAY.getName()); whereFields.remove(TimeDimensionEnum.WEEK.getName()); whereFields.remove(TimeDimensionEnum.MONTH.getName()); - - String replaceFields = SqlParserUpdateHelper.addFieldsToSelect(sql, new ArrayList<>(whereFields)); + String replaceFields = SqlParserUpdateHelper.addFieldsToSelect(preSql, new ArrayList<>(whereFields)); + correctionInfo.setPreSql(preSql); correctionInfo.setSql(replaceFields); return correctionInfo; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/TableNameCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/TableNameCorrector.java index 8d5b907c5..df82eeb22 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/TableNameCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/TableNameCorrector.java @@ -12,9 +12,10 @@ public class TableNameCorrector extends BaseSemanticCorrector { @Override public CorrectionInfo corrector(CorrectionInfo correctionInfo) { Long modelId = correctionInfo.getParseInfo().getModelId(); - String sqlOutput = correctionInfo.getSql(); - String replaceTable = SqlParserUpdateHelper.replaceTable(sqlOutput, TABLE_PREFIX + modelId); - correctionInfo.setSql(replaceTable); + String preSql = correctionInfo.getSql(); + correctionInfo.setPreSql(preSql); + String sql = SqlParserUpdateHelper.replaceTable(preSql, TABLE_PREFIX + modelId); + correctionInfo.setSql(sql); return correctionInfo; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/FuzzyNameMapper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/FuzzyNameMapper.java index c3b5af4d9..cf859e425 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/FuzzyNameMapper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/FuzzyNameMapper.java @@ -8,6 +8,7 @@ import com.tencent.supersonic.chat.api.pojo.SchemaElementType; import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; import com.tencent.supersonic.chat.api.pojo.SemanticSchema; import com.tencent.supersonic.chat.api.pojo.QueryContext; +import com.tencent.supersonic.chat.config.OptimizationConfig; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.knowledge.service.SchemaService; import com.tencent.supersonic.knowledge.utils.HanlpHelper; @@ -105,8 +106,9 @@ public class FuzzyNameMapper implements SchemaMapper { private Double getThreshold(QueryContext queryContext, MapperHelper mapperHelper) { - Double metricDimensionThresholdConfig = mapperHelper.getMetricDimensionThresholdConfig(); - Double metricDimensionMinThresholdConfig = mapperHelper.getMetricDimensionMinThresholdConfig(); + OptimizationConfig optimizationConfig = ContextUtils.getBean(OptimizationConfig.class); + Double metricDimensionThresholdConfig = optimizationConfig.getMetricDimensionThresholdConfig(); + Double metricDimensionMinThresholdConfig = optimizationConfig.getMetricDimensionMinThresholdConfig(); Map> modelElementMatches = queryContext.getMapInfo() .getModelElementMatches(); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/HanlpDictMapper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/HanlpDictMapper.java index e8dda8f42..c4b57d3d3 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/HanlpDictMapper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/HanlpDictMapper.java @@ -9,13 +9,13 @@ import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; import com.tencent.supersonic.chat.api.pojo.SchemaElementType; import com.tencent.supersonic.chat.api.pojo.SchemaMapInfo; import com.tencent.supersonic.chat.service.SemanticService; -import com.tencent.supersonic.knowledge.utils.NatureHelper; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.knowledge.dictionary.DictWordType; import com.tencent.supersonic.knowledge.dictionary.MapResult; import com.tencent.supersonic.knowledge.dictionary.builder.BaseWordBuilder; import com.tencent.supersonic.knowledge.dictionary.builder.WordBuilderFactory; import com.tencent.supersonic.knowledge.utils.HanlpHelper; +import com.tencent.supersonic.knowledge.utils.NatureHelper; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -25,6 +25,8 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; @Slf4j public class HanlpDictMapper implements SchemaMapper { @@ -83,11 +85,14 @@ public class HanlpDictMapper implements SchemaMapper { Long elementID = baseWordBuilder.getElementID(nature); Long frequency = wordNatureToFrequency.get(mapResult.getName() + nature); - SchemaElement element = modelSchema.getElement(elementType, elementID); - if (Objects.isNull(element)) { + SchemaElement elementDb = modelSchema.getElement(elementType, elementID); + if (Objects.isNull(elementDb)) { log.info("element is null, elementType:{},elementID:{}", elementType, elementID); continue; } + SchemaElement element = new SchemaElement(); + BeanUtils.copyProperties(elementDb, element); + element.setAlias(getAlias(elementDb)); if (element.getType().equals(SchemaElementType.VALUE)) { element.setName(mapResult.getName()); } @@ -124,4 +129,16 @@ public class HanlpDictMapper implements SchemaMapper { } return matches; } + + public List getAlias(SchemaElement element) { + if (!SchemaElementType.VALUE.equals(element.getType())) { + return element.getAlias(); + } + if (CollectionUtils.isNotEmpty(element.getAlias()) && StringUtils.isNotEmpty(element.getName())) { + return element.getAlias().stream() + .filter(aliasItem -> aliasItem.contains(element.getName())) + .collect(Collectors.toList()); + } + return element.getAlias(); + } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/MapperHelper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/MapperHelper.java index 81c19c0cc..b79db9d81 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/MapperHelper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/MapperHelper.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.chat.mapper; import com.hankcs.hanlp.algorithm.EditDistance; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; +import com.tencent.supersonic.chat.config.OptimizationConfig; import com.tencent.supersonic.chat.service.AgentService; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.knowledge.utils.NatureHelper; @@ -13,7 +14,7 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -25,17 +26,8 @@ import org.springframework.stereotype.Service; @Slf4j public class MapperHelper { - @Value("${one.detection.size:8}") - private Integer oneDetectionSize; - @Value("${one.detection.max.size:20}") - private Integer oneDetectionMaxSize; - @Value("${metric.dimension.threshold:0.3}") - private Double metricDimensionThresholdConfig; - - @Value("${metric.dimension.min.threshold:0.3}") - private Double metricDimensionMinThresholdConfig; - @Value("${dimension.value.threshold:0.5}") - private Double dimensionValueThresholdConfig; + @Autowired + private OptimizationConfig optimizationConfig; public Integer getStepIndex(Map regOffsetToLength, Integer index) { Integer subRegLength = regOffsetToLength.get(index); @@ -57,10 +49,11 @@ public class MapperHelper { } public double getThresholdMatch(List natures) { + log.info("optimizationConfig:{}", optimizationConfig); if (existDimensionValues(natures)) { - return dimensionValueThresholdConfig; + return optimizationConfig.getDimensionValueThresholdConfig(); } - return metricDimensionThresholdConfig; + return optimizationConfig.getMetricDimensionThresholdConfig(); } /*** @@ -110,4 +103,4 @@ public class MapperHelper { return detectModelIds; } -} \ No newline at end of file +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/QueryMatchStrategy.java b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/QueryMatchStrategy.java index f449f8233..2a89e98dc 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/QueryMatchStrategy.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/mapper/QueryMatchStrategy.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.chat.mapper; import com.hankcs.hanlp.seg.common.Term; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; +import com.tencent.supersonic.chat.config.OptimizationConfig; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.knowledge.dictionary.MapResult; import com.tencent.supersonic.knowledge.service.SearchService; @@ -31,6 +32,9 @@ public class QueryMatchStrategy implements MatchStrategy { @Autowired private MapperHelper mapperHelper; + @Autowired + private OptimizationConfig optimizationConfig; + @Override public Map> match(QueryReq queryReq, List terms, Set detectModelIds) { String text = queryReq.getQueryText(); @@ -111,7 +115,7 @@ public class QueryMatchStrategy implements MatchStrategy { String detectSegment = text.substring(index, i); // step1. pre search - Integer oneDetectionMaxSize = mapperHelper.getOneDetectionMaxSize(); + Integer oneDetectionMaxSize = optimizationConfig.getOneDetectionMaxSize(); LinkedHashSet mapResults = SearchService.prefixSearch(detectSegment, oneDetectionMaxSize, agentId, detectModelIds).stream().collect(Collectors.toCollection(LinkedHashSet::new)); // step2. suffix search @@ -153,7 +157,7 @@ public class QueryMatchStrategy implements MatchStrategy { if (CollectionUtils.isNotEmpty(dimensionMetrics)) { return dimensionMetrics; } else { - return mapResults.stream().limit(mapperHelper.getOneDetectionSize()).collect(Collectors.toList()); + return mapResults.stream().limit(optimizationConfig.getOneDetectionSize()).collect(Collectors.toList()); } } -} \ No newline at end of file +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/SatisfactionChecker.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/SatisfactionChecker.java index ac6eaab93..fe5bffb66 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/SatisfactionChecker.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/SatisfactionChecker.java @@ -4,7 +4,9 @@ package com.tencent.supersonic.chat.parser; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.config.OptimizationConfig; import com.tencent.supersonic.chat.query.llm.dsl.DslQuery; +import com.tencent.supersonic.common.util.ContextUtils; import lombok.extern.slf4j.Slf4j; /** @@ -15,10 +17,6 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class SatisfactionChecker { - private static final double LONG_TEXT_THRESHOLD = 0.8; - private static final double SHORT_TEXT_THRESHOLD = 0.5; - private static final int QUERY_TEXT_LENGTH_THRESHOLD = 10; - // check all the parse info in candidate public static boolean check(QueryContext queryContext) { for (SemanticQuery query : queryContext.getCandidateQueries()) { @@ -35,11 +33,12 @@ public class SatisfactionChecker { private static boolean checkThreshold(String queryText, SemanticParseInfo semanticParseInfo) { int queryTextLength = queryText.replaceAll(" ", "").length(); double degree = semanticParseInfo.getScore() / queryTextLength; - if (queryTextLength > QUERY_TEXT_LENGTH_THRESHOLD) { - if (degree < LONG_TEXT_THRESHOLD) { + OptimizationConfig optimizationConfig = ContextUtils.getBean(OptimizationConfig.class); + if (queryTextLength > optimizationConfig.getQueryTextLengthThreshold()) { + if (degree < optimizationConfig.getLongTextThreshold()) { return false; } - } else if (degree < SHORT_TEXT_THRESHOLD) { + } else if (degree < optimizationConfig.getShortTextThreshold()) { return false; } log.info("queryMode:{}, degree:{}, parse info:{}", diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java index 6e92200bd..c8fa48925 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java @@ -93,19 +93,23 @@ public class LLMDslParser implements SemanticParser { SemanticParseInfo parseInfo = getParseInfo(queryCtx, modelId, dslTool, dslParseResult); - String correctorSql = getCorrectorSql(queryCtx, parseInfo, llmResp.getSqlOutput()); + CorrectionInfo correctionInfo = getCorrectorSql(queryCtx, parseInfo, llmResp.getSqlOutput()); - llmResp.setCorrectorSql(correctorSql); + llmResp.setCorrectorSql(correctionInfo.getSql()); - setFilter(correctorSql, modelId, parseInfo); + setFilter(correctionInfo, modelId, parseInfo); } catch (Exception e) { log.error("LLMDSLParser error", e); } } - public void setFilter(String correctorSql, Long modelId, SemanticParseInfo parseInfo) { + public void setFilter(CorrectionInfo correctionInfo, Long modelId, SemanticParseInfo parseInfo) { + String correctorSql = correctionInfo.getPreSql(); + if (StringUtils.isEmpty(correctorSql)) { + correctorSql = correctionInfo.getSql(); + } List expressions = SqlParserSelectHelper.getFilterExpression(correctorSql); if (CollectionUtils.isEmpty(expressions)) { return; @@ -200,7 +204,7 @@ public class LLMDslParser implements SemanticParser { return dateExpressions.size() > 1 && Objects.nonNull(dateExpressions.get(1).getFieldValue()); } - private String getCorrectorSql(QueryContext queryCtx, SemanticParseInfo parseInfo, String sql) { + private CorrectionInfo getCorrectorSql(QueryContext queryCtx, SemanticParseInfo parseInfo, String sql) { CorrectionInfo correctionInfo = CorrectionInfo.builder() .queryFilters(queryCtx.getRequest().getQueryFilters()).sql(sql) @@ -217,7 +221,7 @@ public class LLMDslParser implements SemanticParser { log.error("sqlCorrection:{} execute error,correctionInfo:{}", dslCorrection, correctionInfo, e); } }); - return correctionInfo.getSql(); + return correctionInfo; } private SemanticParseInfo getParseInfo(QueryContext queryCtx, Long modelId, DslTool dslTool, diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/PluginParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/PluginParser.java new file mode 100644 index 000000000..0d3350cbe --- /dev/null +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/PluginParser.java @@ -0,0 +1,118 @@ +package com.tencent.supersonic.chat.parser.plugin; + +import com.tencent.supersonic.chat.api.component.SemanticParser; +import com.tencent.supersonic.chat.api.pojo.ChatContext; +import com.tencent.supersonic.chat.api.pojo.QueryContext; +import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; +import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.api.pojo.request.QueryFilter; +import com.tencent.supersonic.chat.api.pojo.request.QueryReq; +import com.tencent.supersonic.chat.api.pojo.SchemaElement; +import com.tencent.supersonic.chat.api.pojo.ModelSchema; +import com.tencent.supersonic.chat.api.pojo.SchemaElementType; +import com.tencent.supersonic.chat.plugin.Plugin; +import com.tencent.supersonic.chat.plugin.PluginManager; +import com.tencent.supersonic.chat.plugin.PluginParseResult; +import com.tencent.supersonic.chat.plugin.PluginRecallResult; +import com.tencent.supersonic.chat.query.QueryManager; +import com.tencent.supersonic.chat.query.plugin.PluginSemanticQuery; +import com.tencent.supersonic.chat.service.SemanticService; +import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; +import org.springframework.util.CollectionUtils; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public abstract class PluginParser implements SemanticParser { + + @Override + public void parse(QueryContext queryContext, ChatContext chatContext) { + if (!checkPreCondition(queryContext)) { + return; + } + PluginRecallResult pluginRecallResult = recallPlugin(queryContext); + if (pluginRecallResult == null) { + return; + } + buildQuery(queryContext, pluginRecallResult); + } + + public abstract boolean checkPreCondition(QueryContext queryContext); + + public abstract PluginRecallResult recallPlugin(QueryContext queryContext); + + public void buildQuery(QueryContext queryContext, PluginRecallResult pluginRecallResult) { + Plugin plugin = pluginRecallResult.getPlugin(); + for (Long modelId : pluginRecallResult.getModelIds()) { + PluginSemanticQuery pluginQuery = QueryManager.createPluginQuery(plugin.getType()); + SemanticParseInfo semanticParseInfo = buildSemanticParseInfo(modelId, plugin, queryContext.getRequest(), + queryContext.getMapInfo().getMatchedElements(modelId), pluginRecallResult.getDistance()); + semanticParseInfo.setQueryMode(pluginQuery.getQueryMode()); + semanticParseInfo.setScore(pluginRecallResult.getScore()); + pluginQuery.setParseInfo(semanticParseInfo); + queryContext.getCandidateQueries().add(pluginQuery); + if (plugin.isContainsAllModel()) { + break; + } + } + } + + protected List getPluginList(QueryContext queryContext) { + return PluginManager.getPluginAgentCanSupport(queryContext.getRequest().getAgentId()); + } + + protected SemanticParseInfo buildSemanticParseInfo(Long modelId, Plugin plugin, QueryReq queryReq, + List schemaElementMatches, double distance) { + if (modelId == null && !CollectionUtils.isEmpty(plugin.getModelList())) { + modelId = plugin.getModelList().get(0); + } + SchemaElement model = new SchemaElement(); + model.setModel(modelId); + model.setId(modelId); + SemanticParseInfo semanticParseInfo = new SemanticParseInfo(); + semanticParseInfo.setElementMatches(schemaElementMatches); + semanticParseInfo.setModel(model); + Map properties = new HashMap<>(); + PluginParseResult pluginParseResult = new PluginParseResult(); + pluginParseResult.setPlugin(plugin); + pluginParseResult.setRequest(queryReq); + pluginParseResult.setDistance(distance); + properties.put(Constants.CONTEXT, pluginParseResult); + properties.put("type", "plugin"); + properties.put("name", plugin.getName()); + semanticParseInfo.setProperties(properties); + semanticParseInfo.setScore(distance); + fillSemanticParseInfo(semanticParseInfo); + setEntity(modelId, semanticParseInfo); + return semanticParseInfo; + } + + private void setEntity(Long modelId, SemanticParseInfo semanticParseInfo) { + SemanticService semanticService = ContextUtils.getBean(SemanticService.class); + ModelSchema modelSchema = semanticService.getModelSchema(modelId); + if (modelSchema != null && modelSchema.getEntity() != null) { + semanticParseInfo.setEntity(modelSchema.getEntity()); + } + } + + private void fillSemanticParseInfo(SemanticParseInfo semanticParseInfo) { + List schemaElementMatches = semanticParseInfo.getElementMatches(); + if (CollectionUtils.isEmpty(schemaElementMatches)) { + return; + } + schemaElementMatches.stream().filter(schemaElementMatch -> + SchemaElementType.VALUE.equals(schemaElementMatch.getElement().getType()) + || SchemaElementType.ID.equals(schemaElementMatch.getElement().getType())) + .forEach(schemaElementMatch -> { + QueryFilter queryFilter = new QueryFilter(); + queryFilter.setValue(schemaElementMatch.getWord()); + queryFilter.setElementID(schemaElementMatch.getElement().getId()); + queryFilter.setName(schemaElementMatch.getElement().getName()); + queryFilter.setOperator(FilterOperatorEnum.EQUALS); + queryFilter.setBizName(schemaElementMatch.getElement().getBizName()); + semanticParseInfo.getDimensionFilters().add(queryFilter); + }); + } +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingBasedParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingBasedParser.java index c05178cdb..1ca64fe4b 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingBasedParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingBasedParser.java @@ -1,63 +1,54 @@ package com.tencent.supersonic.chat.parser.plugin.embedding; import com.google.common.collect.Lists; -import com.tencent.supersonic.chat.api.component.SemanticParser; +import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.QueryContext; -import com.tencent.supersonic.chat.api.pojo.SchemaElement; -import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; -import com.tencent.supersonic.chat.api.pojo.SchemaElementType; -import com.tencent.supersonic.chat.api.pojo.ChatContext; -import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.chat.api.pojo.ModelSchema; -import com.tencent.supersonic.chat.api.pojo.request.QueryFilter; -import com.tencent.supersonic.chat.api.pojo.request.QueryReq; import com.tencent.supersonic.chat.parser.ParseMode; +import com.tencent.supersonic.chat.parser.plugin.PluginParser; import com.tencent.supersonic.chat.plugin.Plugin; import com.tencent.supersonic.chat.plugin.PluginManager; -import com.tencent.supersonic.chat.plugin.PluginParseResult; -import com.tencent.supersonic.chat.query.QueryManager; -import com.tencent.supersonic.chat.query.llm.dsl.DslQuery; -import com.tencent.supersonic.chat.query.plugin.PluginSemanticQuery; -import com.tencent.supersonic.chat.service.SemanticService; -import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.chat.plugin.PluginRecallResult; import com.tencent.supersonic.common.util.ContextUtils; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.HashMap; -import java.util.Comparator; import java.util.stream.Collectors; -import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.springframework.util.CollectionUtils; @Slf4j -public class EmbeddingBasedParser implements SemanticParser { +public class EmbeddingBasedParser extends PluginParser { @Override - public void parse(QueryContext queryContext, ChatContext chatContext) { + public boolean checkPreCondition(QueryContext queryContext) { EmbeddingConfig embeddingConfig = ContextUtils.getBean(EmbeddingConfig.class); if (StringUtils.isBlank(embeddingConfig.getUrl())) { - return; + return false; } - log.info("EmbeddingBasedParser parser query ctx: {}, chat ctx: {}", queryContext, chatContext); - String text = queryContext.getRequest().getQueryText(); - List embeddingRetrievals = recallResult(text); - choosePlugin(embeddingRetrievals, queryContext); + List semanticQueries = queryContext.getCandidateQueries(); + for (SemanticQuery semanticQuery : semanticQueries) { + if (queryContext.getRequest().getQueryText().length() <= semanticQuery.getParseInfo().getScore()) { + return false; + } + } + return true; } - private void choosePlugin(List embeddingRetrievals, - QueryContext queryContext) { + @Override + public PluginRecallResult recallPlugin(QueryContext queryContext) { + String text = queryContext.getRequest().getQueryText(); + List embeddingRetrievals = embeddingRecall(text); if (CollectionUtils.isEmpty(embeddingRetrievals)) { - return; + return null; } List plugins = getPluginList(queryContext); Map pluginMap = plugins.stream().collect(Collectors.toMap(Plugin::getId, p -> p)); for (RecallRetrieval embeddingRetrieval : embeddingRetrievals) { Plugin plugin = pluginMap.get(Long.parseLong(embeddingRetrieval.getId())); - if (plugin == null || DslQuery.QUERY_MODE.equalsIgnoreCase(plugin.getType())) { + if (plugin == null) { continue; } Pair> pair = PluginManager.resolve(plugin, queryContext); @@ -65,69 +56,19 @@ public class EmbeddingBasedParser implements SemanticParser { if (pair.getLeft()) { Set modelList = pair.getRight(); if (CollectionUtils.isEmpty(modelList)) { - return; + continue; } - for (Long modelId : modelList) { - buildQuery(plugin, Double.parseDouble(embeddingRetrieval.getDistance()), modelId, queryContext, - queryContext.getMapInfo().getMatchedElements(modelId)); - if (plugin.isContainsAllModel()) { - break; - } - } - return; + plugin.setParseMode(ParseMode.EMBEDDING_RECALL); + double distance = Double.parseDouble(embeddingRetrieval.getDistance()); + double score = queryContext.getRequest().getQueryText().length() * (1 - distance); + return PluginRecallResult.builder() + .plugin(plugin).modelIds(modelList).score(score).distance(distance).build(); } } + return null; } - private void buildQuery(Plugin plugin, double distance, Long modelId, - QueryContext queryContext, List schemaElementMatches) { - log.info("EmbeddingBasedParser Model: {} choose plugin: [{} {}]", modelId, plugin.getId(), plugin.getName()); - PluginSemanticQuery pluginQuery = QueryManager.createPluginQuery(plugin.getType()); - plugin.setParseMode(ParseMode.EMBEDDING_RECALL); - SemanticParseInfo semanticParseInfo = buildSemanticParseInfo(modelId, plugin, queryContext.getRequest(), - schemaElementMatches, distance); - double score = queryContext.getRequest().getQueryText().length() * (1 - distance); - semanticParseInfo.setQueryMode(pluginQuery.getQueryMode()); - semanticParseInfo.setScore(score); - pluginQuery.setParseInfo(semanticParseInfo); - queryContext.getCandidateQueries().add(pluginQuery); - } - - private SemanticParseInfo buildSemanticParseInfo(Long modelId, Plugin plugin, QueryReq queryReq, - List schemaElementMatches, double distance) { - if (modelId == null && !CollectionUtils.isEmpty(plugin.getModelList())) { - modelId = plugin.getModelList().get(0); - } - SchemaElement model = new SchemaElement(); - model.setModel(modelId); - model.setId(modelId); - SemanticParseInfo semanticParseInfo = new SemanticParseInfo(); - semanticParseInfo.setElementMatches(schemaElementMatches); - semanticParseInfo.setModel(model); - Map properties = new HashMap<>(); - PluginParseResult pluginParseResult = new PluginParseResult(); - pluginParseResult.setPlugin(plugin); - pluginParseResult.setRequest(queryReq); - pluginParseResult.setDistance(distance); - properties.put(Constants.CONTEXT, pluginParseResult); - properties.put("type", "plugin"); - properties.put("name", plugin.getName()); - semanticParseInfo.setProperties(properties); - semanticParseInfo.setScore(distance); - fillSemanticParseInfo(semanticParseInfo); - setEntity(modelId, semanticParseInfo); - return semanticParseInfo; - } - - private void setEntity(Long modelId, SemanticParseInfo semanticParseInfo) { - SemanticService semanticService = ContextUtils.getBean(SemanticService.class); - ModelSchema modelSchema = semanticService.getModelSchema(modelId); - if (modelSchema != null && modelSchema.getEntity() != null) { - semanticParseInfo.setEntity(modelSchema.getEntity()); - } - } - - public List recallResult(String embeddingText) { + public List embeddingRecall(String embeddingText) { try { PluginManager pluginManager = ContextUtils.getBean(PluginManager.class); EmbeddingResp embeddingResp = pluginManager.recognize(embeddingText); @@ -144,26 +85,4 @@ public class EmbeddingBasedParser implements SemanticParser { return Lists.newArrayList(); } - private void fillSemanticParseInfo(SemanticParseInfo semanticParseInfo) { - List schemaElementMatches = semanticParseInfo.getElementMatches(); - if (!CollectionUtils.isEmpty(schemaElementMatches)) { - schemaElementMatches.stream().filter(schemaElementMatch -> - SchemaElementType.VALUE.equals(schemaElementMatch.getElement().getType()) - || SchemaElementType.ID.equals(schemaElementMatch.getElement().getType())) - .forEach(schemaElementMatch -> { - QueryFilter queryFilter = new QueryFilter(); - queryFilter.setValue(schemaElementMatch.getWord()); - queryFilter.setElementID(schemaElementMatch.getElement().getId()); - queryFilter.setName(schemaElementMatch.getElement().getName()); - queryFilter.setOperator(FilterOperatorEnum.EQUALS); - queryFilter.setBizName(schemaElementMatch.getElement().getBizName()); - semanticParseInfo.getDimensionFilters().add(queryFilter); - }); - } - } - - protected List getPluginList(QueryContext queryContext) { - return PluginManager.getPluginAgentCanSupport(queryContext.getRequest().getAgentId()); - } - } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingResp.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingResp.java index 18777ddbc..a73453446 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingResp.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/embedding/EmbeddingResp.java @@ -1,9 +1,10 @@ package com.tencent.supersonic.chat.parser.plugin.embedding; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class EmbeddingResp { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionBasedParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionBasedParser.java index c86b4bbdb..b7c58051e 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionBasedParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionBasedParser.java @@ -1,32 +1,23 @@ package com.tencent.supersonic.chat.parser.plugin.function; import com.alibaba.fastjson.JSON; -import com.tencent.supersonic.chat.api.component.SemanticParser; -import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; -import com.tencent.supersonic.chat.api.pojo.SchemaElement; -import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.config.FunctionCallInfoConfig; import com.tencent.supersonic.chat.parser.ParseMode; import com.tencent.supersonic.chat.parser.SatisfactionChecker; +import com.tencent.supersonic.chat.parser.plugin.PluginParser; import com.tencent.supersonic.chat.plugin.Plugin; import com.tencent.supersonic.chat.plugin.PluginManager; import com.tencent.supersonic.chat.plugin.PluginParseConfig; -import com.tencent.supersonic.chat.plugin.PluginParseResult; -import com.tencent.supersonic.chat.query.QueryManager; -import com.tencent.supersonic.chat.query.plugin.PluginSemanticQuery; +import com.tencent.supersonic.chat.plugin.PluginRecallResult; import com.tencent.supersonic.chat.query.llm.dsl.DslQuery; import com.tencent.supersonic.chat.service.PluginService; -import com.tencent.supersonic.chat.utils.ComponentFactory; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.util.ContextUtils; import java.net.URI; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.Objects; -import java.util.Map; -import java.util.HashMap; import java.util.stream.Collectors; import com.tencent.supersonic.common.util.JsonUtil; import lombok.extern.slf4j.Slf4j; @@ -42,85 +33,73 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; @Slf4j -public class FunctionBasedParser implements SemanticParser { +public class FunctionBasedParser extends PluginParser { @Override - public void parse(QueryContext queryCtx, ChatContext chatCtx) { + public boolean checkPreCondition(QueryContext queryContext) { FunctionCallInfoConfig functionCallConfig = ContextUtils.getBean(FunctionCallInfoConfig.class); - PluginService pluginService = ContextUtils.getBean(PluginService.class); String functionUrl = functionCallConfig.getUrl(); - if (StringUtils.isBlank(functionUrl) || SatisfactionChecker.check(queryCtx)) { + if (StringUtils.isBlank(functionUrl) || SatisfactionChecker.check(queryContext)) { log.info("functionUrl:{}, skip function parser, queryText:{}", functionUrl, - queryCtx.getRequest().getQueryText()); - return; + queryContext.getRequest().getQueryText()); + return false; } - List functionDOList = getFunctionDO(queryCtx.getRequest().getModelId(), queryCtx); - if (CollectionUtils.isEmpty(functionDOList)) { - log.info("function call parser, plugin is empty, skip"); - return; - } - FunctionResp functionResp = new FunctionResp(); - if (functionDOList.size() == 1) { - functionResp.setToolSelection(functionDOList.iterator().next().getName()); - } else { - FunctionReq functionReq = FunctionReq.builder() - .queryText(queryCtx.getRequest().getQueryText()) - .pluginConfigs(functionDOList).build(); - functionResp = requestFunction(functionUrl, functionReq); + return true; + } + + @Override + public PluginRecallResult recallPlugin(QueryContext queryContext) { + PluginService pluginService = ContextUtils.getBean(PluginService.class); + FunctionResp functionResp = functionCall(queryContext); + if (skipFunction(functionResp)) { + return null; } log.info("requestFunction result:{}", functionResp.getToolSelection()); - if (skipFunction(functionResp)) { - return; - } - PluginParseResult functionCallParseResult = new PluginParseResult(); String toolSelection = functionResp.getToolSelection(); Optional pluginOptional = pluginService.getPluginByName(toolSelection); if (!pluginOptional.isPresent()) { log.info("pluginOptional is not exist:{}, skip the parse", toolSelection); - return; + return null; } Plugin plugin = pluginOptional.get(); plugin.setParseMode(ParseMode.FUNCTION_CALL); - toolSelection = plugin.getType(); - functionCallParseResult.setPlugin(plugin); - log.info("QueryManager PluginQueryModes:{}", QueryManager.getPluginQueryModes()); - PluginSemanticQuery semanticQuery = QueryManager.createPluginQuery(toolSelection); - ModelResolver modelResolver = ComponentFactory.getModelResolver(); - log.info("plugin ModelList:{}", plugin.getModelList()); - Pair> pluginResolveResult = PluginManager.resolve(plugin, queryCtx); - Long modelId = modelResolver.resolve(queryCtx, chatCtx, pluginResolveResult.getRight()); - log.info("FunctionBasedParser modelId:{}", modelId); - if ((Objects.isNull(modelId) || modelId <= 0) && !plugin.isContainsAllModel()) { - log.info("Model is null, skip the parse, select tool: {}", toolSelection); - return; + Pair> pluginResolveResult = PluginManager.resolve(plugin, queryContext); + if (pluginResolveResult.getLeft()) { + Set modelList = pluginResolveResult.getRight(); + if (CollectionUtils.isEmpty(modelList)) { + return null; + } + double score = queryContext.getRequest().getQueryText().length(); + return PluginRecallResult.builder().plugin(plugin).modelIds(modelList).score(score).build(); } - if (!plugin.getModelList().contains(modelId) && !plugin.isContainsAllModel()) { - return; + return null; + } + + public FunctionResp functionCall(QueryContext queryContext) { + List pluginToFunctionCall = + getPluginToFunctionCall(queryContext.getRequest().getModelId(), queryContext); + if (CollectionUtils.isEmpty(pluginToFunctionCall)) { + log.info("function call parser, plugin is empty, skip"); + return null; } - SemanticParseInfo parseInfo = semanticQuery.getParseInfo(); - if (Objects.nonNull(modelId) && modelId > 0) { - parseInfo.getElementMatches().addAll(queryCtx.getMapInfo().getMatchedElements(modelId)); + FunctionCallInfoConfig functionCallConfig = ContextUtils.getBean(FunctionCallInfoConfig.class); + FunctionResp functionResp = new FunctionResp(); + if (pluginToFunctionCall.size() == 1) { + functionResp.setToolSelection(pluginToFunctionCall.iterator().next().getName()); + } else { + FunctionReq functionReq = FunctionReq.builder() + .queryText(queryContext.getRequest().getQueryText()) + .pluginConfigs(pluginToFunctionCall).build(); + functionResp = requestFunction(functionCallConfig.getUrl(), functionReq); } - functionCallParseResult.setRequest(queryCtx.getRequest()); - Map properties = new HashMap<>(); - properties.put(Constants.CONTEXT, functionCallParseResult); - properties.put("type", "plugin"); - properties.put("name", plugin.getName()); - parseInfo.setProperties(properties); - parseInfo.setScore(queryCtx.getRequest().getQueryText().length()); - parseInfo.setQueryMode(semanticQuery.getQueryMode()); - SchemaElement model = new SchemaElement(); - model.setModel(modelId); - model.setId(modelId); - parseInfo.setModel(model); - queryCtx.getCandidateQueries().add(semanticQuery); + return functionResp; } private boolean skipFunction(FunctionResp functionResp) { return Objects.isNull(functionResp) || StringUtils.isBlank(functionResp.getToolSelection()); } - private List getFunctionDO(Long modelId, QueryContext queryContext) { + private List getPluginToFunctionCall(Long modelId, QueryContext queryContext) { log.info("user decide Model:{}", modelId); List plugins = getPluginList(queryContext); List functionDOList = plugins.stream().filter(plugin -> { @@ -150,7 +129,7 @@ public class FunctionBasedParser implements SemanticParser { return true; } }).map(o -> JsonUtil.toObject(o.getParseModeConfig(), PluginParseConfig.class)).collect(Collectors.toList()); - log.info("getFunctionDO:{}", JsonUtil.toString(functionDOList)); + log.info("PluginToFunctionCall: {}", JsonUtil.toString(functionDOList)); return functionDOList; } @@ -173,8 +152,4 @@ public class FunctionBasedParser implements SemanticParser { } return null; } - - protected List getPluginList(QueryContext queryContext) { - return PluginManager.getPluginAgentCanSupport(queryContext.getRequest().getAgentId()); - } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionReq.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionReq.java index 523a859ad..a3d92813c 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionReq.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/FunctionReq.java @@ -1,7 +1,8 @@ package com.tencent.supersonic.chat.parser.plugin.function; -import com.tencent.supersonic.chat.plugin.PluginParseConfig; import java.util.List; + +import com.tencent.supersonic.chat.plugin.PluginParseConfig; import lombok.Builder; import lombok.Data; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/ModelMatchResult.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/ModelMatchResult.java index 391d673d5..f6a1d45d4 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/ModelMatchResult.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/ModelMatchResult.java @@ -4,7 +4,6 @@ import lombok.Data; @Data public class ModelMatchResult { - private Integer count = 0; private double maxSimilarity; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/Parameters.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/Parameters.java index c05dccae4..3d6d34f0a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/Parameters.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/plugin/function/Parameters.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.chat.parser.plugin.function; +import lombok.Data; import java.util.List; import java.util.Map; -import lombok.Data; @Data public class Parameters { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/AggregateTypeParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/AggregateTypeParser.java index fbe90bb44..e3275cb97 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/AggregateTypeParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/AggregateTypeParser.java @@ -68,6 +68,7 @@ public class AggregateTypeParser implements SemanticParser { Map aggregateCount = new HashMap<>(REGX_MAP.size()); Map aggregateWord = new HashMap<>(REGX_MAP.size()); + for (Map.Entry entry : REGX_MAP.entrySet()) { Matcher matcher = entry.getValue().matcher(queryText); int count = 0; @@ -90,7 +91,6 @@ public class AggregateTypeParser implements SemanticParser { @AllArgsConstructor class AggregateConf { - public AggregateTypeEnum type; public String detectWord; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java index e347fa4d1..aa9dcd3f6 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.chat.persistence.dataobject; import java.util.Date; + import lombok.Data; import lombok.ToString; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatDO.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatDO.java index fa1af2c11..139d8330d 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatDO.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatDO.java @@ -6,6 +6,7 @@ import lombok.Data; public class ChatDO { private long chatId; + private Integer agentId; private String chatName; private String createTime; private String lastTime; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/DimValueDO.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/DimValueDO.java index ca43b8fed..eafe44f57 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/DimValueDO.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/DimValueDO.java @@ -1,10 +1,11 @@ package com.tencent.supersonic.chat.persistence.dataobject; -import com.tencent.supersonic.chat.config.DefaultMetric; -import com.tencent.supersonic.chat.config.Dim4Dict; import java.util.ArrayList; import java.util.List; + +import com.tencent.supersonic.chat.config.DefaultMetric; +import com.tencent.supersonic.chat.config.Dim4Dict; import lombok.Data; import lombok.ToString; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDO.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDO.java index f6b99f603..77dd94e65 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDO.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDO.java @@ -3,7 +3,6 @@ package com.tencent.supersonic.chat.persistence.dataobject; import java.util.Date; public class PluginDO { - /** * */ diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDOExample.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDOExample.java index 6f25dc5e0..703ea3d80 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDOExample.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/PluginDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class PluginDOExample { - /** * s2_plugin */ @@ -149,7 +148,6 @@ public class PluginDOExample { * s2_plugin null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -875,7 +873,6 @@ public class PluginDOExample { * s2_plugin null */ public static class Criterion { - private String condition; private Object value; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatMapper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatMapper.java index 870ac6076..2434e7f3e 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatMapper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatMapper.java @@ -10,7 +10,7 @@ public interface ChatMapper { boolean createChat(ChatDO chatDO); - List getAll(String creator); + List getAll(String creator, Integer agentId); Boolean updateChatName(Long chatId, String chatName, String lastTime, String creator); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatQueryDOMapper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatQueryDOMapper.java index 6dabf7e6c..dbc1c332f 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatQueryDOMapper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/ChatQueryDOMapper.java @@ -2,9 +2,10 @@ package com.tencent.supersonic.chat.persistence.mapper; import com.tencent.supersonic.chat.persistence.dataobject.ChatQueryDO; import com.tencent.supersonic.chat.persistence.dataobject.ChatQueryDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface ChatQueryDOMapper { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/PluginDOMapper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/PluginDOMapper.java index 796cc3e6a..9f410ed00 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/PluginDOMapper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/mapper/PluginDOMapper.java @@ -2,58 +2,67 @@ package com.tencent.supersonic.chat.persistence.mapper; import com.tencent.supersonic.chat.persistence.dataobject.PluginDO; import com.tencent.supersonic.chat.persistence.dataobject.PluginDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; @Mapper public interface PluginDOMapper { - /** + * * @mbg.generated */ long countByExample(PluginDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(PluginDO record); /** + * * @mbg.generated */ int insertSelective(PluginDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(PluginDOExample example); /** + * * @mbg.generated */ List selectByExample(PluginDOExample example); /** + * * @mbg.generated */ PluginDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(PluginDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(PluginDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(PluginDO record); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatConfigRepository.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatConfigRepository.java index 5da97c492..220190c45 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatConfigRepository.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatConfigRepository.java @@ -1,9 +1,10 @@ package com.tencent.supersonic.chat.persistence.repository; +import com.tencent.supersonic.chat.config.ChatConfig; import com.tencent.supersonic.chat.api.pojo.request.ChatConfigFilter; import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp; -import com.tencent.supersonic.chat.config.ChatConfig; + import java.util.List; public interface ChatConfigRepository { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatRepository.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatRepository.java index 54ee6ad53..364a5efa6 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatRepository.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/ChatRepository.java @@ -8,7 +8,7 @@ public interface ChatRepository { boolean createChat(ChatDO chatDO); - List getAll(String creator); + List getAll(String creator, Integer agentId); Boolean updateChatName(Long chatId, String chatName, String lastTime, String creator); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/PluginRepository.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/PluginRepository.java index 969b129b0..4e434c376 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/PluginRepository.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/PluginRepository.java @@ -2,10 +2,10 @@ package com.tencent.supersonic.chat.persistence.repository; import com.tencent.supersonic.chat.persistence.dataobject.PluginDO; import com.tencent.supersonic.chat.persistence.dataobject.PluginDOExample; + import java.util.List; public interface PluginRepository { - List getPlugins(); List fetchPluginDOs(String queryText, String type); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatRepositoryImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatRepositoryImpl.java index 29cd82a1c..09f243a97 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatRepositoryImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatRepositoryImpl.java @@ -2,8 +2,8 @@ package com.tencent.supersonic.chat.persistence.repository.impl; import com.tencent.supersonic.chat.persistence.dataobject.ChatDO; import com.tencent.supersonic.chat.persistence.dataobject.QueryDO; -import com.tencent.supersonic.chat.persistence.mapper.ChatMapper; import com.tencent.supersonic.chat.persistence.repository.ChatRepository; +import com.tencent.supersonic.chat.persistence.mapper.ChatMapper; import java.util.List; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Primary; @@ -26,8 +26,8 @@ public class ChatRepositoryImpl implements ChatRepository { } @Override - public List getAll(String creator) { - return chatMapper.getAll(creator); + public List getAll(String creator, Integer agentId) { + return chatMapper.getAll(creator, agentId); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/Plugin.java b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/Plugin.java index 91eb2293f..c330e53ff 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/Plugin.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/Plugin.java @@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.tencent.supersonic.chat.parser.ParseMode; import com.tencent.supersonic.common.pojo.RecordInfo; -import java.util.List; import lombok.Data; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import java.util.List; @Data public class Plugin extends RecordInfo { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginManager.java b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginManager.java index b8f1b329a..156f3edab 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginManager.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginManager.java @@ -30,9 +30,7 @@ import java.util.HashSet; import java.util.HashMap; import java.util.Objects; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; - import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; @@ -52,8 +50,6 @@ import org.springframework.web.util.UriComponentsBuilder; @Component public class PluginManager { - private static Map internalPluginMap = new ConcurrentHashMap<>(); - private EmbeddingConfig embeddingConfig; private RestTemplate restTemplate; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginRecallResult.java b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginRecallResult.java new file mode 100644 index 000000000..f347afb2d --- /dev/null +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/plugin/PluginRecallResult.java @@ -0,0 +1,23 @@ +package com.tencent.supersonic.chat.plugin; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.util.Set; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PluginRecallResult { + + private Plugin plugin; + + private Set modelIds; + + private double score; + + private double distance; + +} diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/HeuristicQuerySelector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/HeuristicQuerySelector.java index eb3043ae2..38005f126 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/HeuristicQuerySelector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/HeuristicQuerySelector.java @@ -4,6 +4,7 @@ import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; +import com.tencent.supersonic.chat.config.OptimizationConfig; import com.tencent.supersonic.chat.query.rule.RuleSemanticQuery; import java.util.List; @@ -12,18 +13,18 @@ import java.util.OptionalDouble; import com.tencent.supersonic.chat.query.rule.metric.MetricEntityQuery; import com.tencent.supersonic.chat.query.rule.metric.MetricModelQuery; +import com.tencent.supersonic.common.util.ContextUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @Slf4j public class HeuristicQuerySelector implements QuerySelector { - private static final double CANDIDATE_THRESHOLD = 0.2; - @Override public List select(List candidateQueries, QueryReq queryReq) { List selectedQueries = new ArrayList<>(); - + OptimizationConfig optimizationConfig = ContextUtils.getBean(OptimizationConfig.class); + Double candidateThreshold = optimizationConfig.getCandidateThreshold(); if (CollectionUtils.isNotEmpty(candidateQueries) && candidateQueries.size() == 1) { selectedQueries.addAll(candidateQueries); } else { @@ -35,7 +36,7 @@ public class HeuristicQuerySelector implements QuerySelector { candidateQueries.stream().forEach(query -> { SemanticParseInfo parseInfo = query.getParseInfo(); if (!checkFullyInherited(query) - && (maxScore - parseInfo.getScore()) / maxScore <= CANDIDATE_THRESHOLD + && (maxScore - parseInfo.getScore()) / maxScore <= candidateThreshold && checkSatisfyOtherRules(query, candidateQueries)) { selectedQueries.add(query); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/QueryManager.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/QueryManager.java index 181ad210e..9b808f7f1 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/QueryManager.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/QueryManager.java @@ -5,6 +5,7 @@ import com.tencent.supersonic.chat.query.plugin.PluginSemanticQuery; import com.tencent.supersonic.chat.query.rule.RuleSemanticQuery; import com.tencent.supersonic.chat.query.rule.entity.EntitySemanticQuery; import com.tencent.supersonic.chat.query.rule.metric.MetricSemanticQuery; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -55,7 +56,6 @@ public class QueryManager { throw new RuntimeException("no supported queryMode :" + queryMode); } } - public static boolean containsRuleQuery(String queryMode) { if (queryMode == null) { return false; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/metricInterpret/LLmAnswerResp.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/metricInterpret/LLmAnswerResp.java index 5ef6a8d27..8a10b25c7 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/metricInterpret/LLmAnswerResp.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/metricInterpret/LLmAnswerResp.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.chat.query.metricinterpret; + import lombok.Data; @Data diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBase.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBase.java index 1db91e70a..dd26c2ff0 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBase.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBase.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.chat.query.plugin; import com.google.common.collect.Lists; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class WebBase { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBaseResult.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBaseResult.java index debedcd5f..8ba6cde74 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBaseResult.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/WebBaseResult.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.chat.query.plugin; import com.google.common.collect.Lists; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class WebBaseResult { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/webpage/WebPageResponse.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/webpage/WebPageResponse.java index bf4d5b5ae..cda73c496 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/webpage/WebPageResponse.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/webpage/WebPageResponse.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.chat.query.plugin.webpage; import com.tencent.supersonic.chat.query.plugin.WebBaseResult; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class WebPageResponse { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java index 2633c4c21..fa92f91ea 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java @@ -1,3 +1,4 @@ + package com.tencent.supersonic.chat.query.rule; import com.tencent.supersonic.auth.api.authentication.pojo.User; @@ -291,6 +292,7 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable { } + protected QueryStructReq convertQueryStruct() { return QueryReqBuilder.buildStructReq(parseInfo); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/entity/EntitySemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/entity/EntitySemanticQuery.java index a931dda76..83b0f2f04 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/entity/EntitySemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/entity/EntitySemanticQuery.java @@ -1,9 +1,5 @@ package com.tencent.supersonic.chat.query.rule.entity; -import static com.tencent.supersonic.chat.api.pojo.SchemaElementType.ENTITY; -import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; - import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; @@ -15,12 +11,17 @@ import com.tencent.supersonic.chat.query.rule.RuleSemanticQuery; import com.tencent.supersonic.chat.service.ConfigService; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.util.ContextUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; + import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; + +import static com.tencent.supersonic.chat.api.pojo.SchemaElementType.ENTITY; +import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; @Slf4j public abstract class EntitySemanticQuery extends RuleSemanticQuery { @@ -34,7 +35,7 @@ public abstract class EntitySemanticQuery extends RuleSemanticQuery { @Override public List match(List candidateElementMatches, - QueryContext queryCtx) { + QueryContext queryCtx) { candidateElementMatches = filterElementMatches(candidateElementMatches); return super.match(candidateElementMatches, queryCtx); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricSemanticQuery.java index 30ecac5e6..85f95b740 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricSemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricSemanticQuery.java @@ -40,7 +40,7 @@ public abstract class MetricSemanticQuery extends RuleSemanticQuery { @Override public List match(List candidateElementMatches, - QueryContext queryCtx) { + QueryContext queryCtx) { candidateElementMatches = filterElementMatches(candidateElementMatches); return super.match(candidateElementMatches, queryCtx); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricTopNQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricTopNQuery.java index 2c19b89e0..8c515231d 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricTopNQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/metric/MetricTopNQuery.java @@ -3,8 +3,8 @@ package com.tencent.supersonic.chat.query.rule.metric; import static com.tencent.supersonic.chat.api.pojo.SchemaElementType.DIMENSION; import static com.tencent.supersonic.chat.api.pojo.SchemaElementType.VALUE; import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; -import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; import static com.tencent.supersonic.common.pojo.Constants.DESC_UPPER; import com.tencent.supersonic.chat.api.pojo.ChatContext; @@ -13,11 +13,12 @@ import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch; import com.tencent.supersonic.common.pojo.Order; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; +import org.springframework.stereotype.Component; + import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.springframework.stereotype.Component; @Component public class MetricTopNQuery extends MetricSemanticQuery { @@ -35,7 +36,7 @@ public class MetricTopNQuery extends MetricSemanticQuery { @Override public List match(List candidateElementMatches, - QueryContext queryCtx) { + QueryContext queryCtx) { Matcher matcher = INTENT_PATTERN.matcher(queryCtx.getRequest().getQueryText()); if (matcher.matches()) { return super.match(candidateElementMatches, queryCtx); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatController.java index fd74ca0f1..c07f64a4a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatController.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatController.java @@ -30,14 +30,16 @@ public class ChatController { @PostMapping("/save") public Boolean save(@RequestParam(value = "chatName") String chatName, + @RequestParam(value = "agentId", required = false) Integer agentId, HttpServletRequest request, HttpServletResponse response) { - return chatService.addChat(UserHolder.findUser(request, response), chatName); + return chatService.addChat(UserHolder.findUser(request, response), chatName, agentId); } @GetMapping("/getAll") - public List getAllConversions(HttpServletRequest request, HttpServletResponse response) { + public List getAllConversions(@RequestParam(value = "agentId", required = false) Integer agentId, + HttpServletRequest request, HttpServletResponse response) { String userName = UserHolder.findUser(request, response).getName(); - return chatService.getAll(userName); + return chatService.getAll(userName, agentId); } @PostMapping("/delete") diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatQueryController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatQueryController.java index 45f0aecfc..f88b24ea8 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatQueryController.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatQueryController.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.chat.rest; import com.tencent.supersonic.auth.api.authentication.utils.UserHolder; +import com.tencent.supersonic.chat.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; import com.tencent.supersonic.chat.api.pojo.request.QueryDataReq; @@ -33,7 +34,7 @@ public class ChatQueryController { @PostMapping("search") public Object search(@RequestBody QueryReq queryCtx, HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) { queryCtx.setUser(UserHolder.findUser(request, response)); return searchService.search(queryCtx); } @@ -54,7 +55,7 @@ public class ChatQueryController { @PostMapping("execute") public Object execute(@RequestBody ExecuteQueryReq queryCtx, - HttpServletRequest request, HttpServletResponse response) + HttpServletRequest request, HttpServletResponse response) throws Exception { queryCtx.setUser(UserHolder.findUser(request, response)); return queryService.performExecution(queryCtx); @@ -62,16 +63,23 @@ public class ChatQueryController { @PostMapping("queryContext") public Object queryContext(@RequestBody QueryReq queryCtx, HttpServletRequest request, - HttpServletResponse response) throws Exception { + HttpServletResponse response) throws Exception { queryCtx.setUser(UserHolder.findUser(request, response)); return queryService.queryContext(queryCtx); } @PostMapping("queryData") public Object queryData(@RequestBody QueryDataReq queryData, - HttpServletRequest request, HttpServletResponse response) + HttpServletRequest request, HttpServletResponse response) throws Exception { return queryService.executeDirectQuery(queryData, UserHolder.findUser(request, response)); } + @PostMapping("queryDimensionValue") + public Object queryDimensionValue(@RequestBody DimensionValueReq dimensionValueReq, + HttpServletRequest request, HttpServletResponse response) + throws Exception { + return queryService.queryDimensionValue(dimensionValueReq, UserHolder.findUser(request, response)); + } + } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/DictionaryController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/DictionaryController.java index 51a0dbbb5..09fb97995 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/DictionaryController.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/DictionaryController.java @@ -10,6 +10,7 @@ import com.tencent.supersonic.knowledge.dictionary.DimValueDictInfo; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/ChatService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/ChatService.java index df2a81e81..e22b372a1 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/ChatService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/ChatService.java @@ -30,9 +30,9 @@ public interface ChatService { public void switchContext(ChatContext chatCtx); - public Boolean addChat(User user, String chatName); + public Boolean addChat(User user, String chatName, Integer agentId); - public List getAll(String userName); + public List getAll(String userName, Integer agentId); public boolean updateChatName(Long chatId, String chatName, String userName); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/ConfigService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/ConfigService.java index e259f386a..685b5cbfd 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/ConfigService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/ConfigService.java @@ -7,6 +7,7 @@ import com.tencent.supersonic.chat.api.pojo.request.ChatConfigEditReqReq; import com.tencent.supersonic.chat.api.pojo.request.ChatConfigFilter; import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp; import com.tencent.supersonic.chat.api.pojo.response.ChatConfigRichResp; + import java.util.List; public interface ConfigService { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/DictionaryService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/DictionaryService.java index c2895a088..786e79796 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/DictionaryService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/DictionaryService.java @@ -5,10 +5,10 @@ import com.tencent.supersonic.knowledge.dictionary.DictConfig; import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand; import com.tencent.supersonic.knowledge.dictionary.DimValueDictInfo; + import java.util.List; public interface DictionaryService { - Long addDictTask(DimValue2DictCommand dimValue2DictCommend, User user); Long deleteDictTask(DimValue2DictCommand dimValue2DictCommend, User user); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/PluginService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/PluginService.java index dedb6883f..b898e6950 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/PluginService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/PluginService.java @@ -2,8 +2,9 @@ package com.tencent.supersonic.chat.service; import com.tencent.supersonic.auth.api.authentication.pojo.User; -import com.tencent.supersonic.chat.api.pojo.request.PluginQueryReq; import com.tencent.supersonic.chat.plugin.Plugin; +import com.tencent.supersonic.chat.api.pojo.request.PluginQueryReq; + import java.util.List; import java.util.Optional; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/QueryService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/QueryService.java index 0bfdfee4e..482f4787f 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/QueryService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/QueryService.java @@ -2,11 +2,12 @@ package com.tencent.supersonic.chat.service; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; -import com.tencent.supersonic.chat.api.pojo.request.QueryDataReq; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; import com.tencent.supersonic.chat.api.pojo.response.ParseResp; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; +import com.tencent.supersonic.chat.api.pojo.request.QueryDataReq; import org.apache.calcite.sql.parser.SqlParseException; /*** @@ -24,4 +25,5 @@ public interface QueryService { QueryResult executeDirectQuery(QueryDataReq queryData, User user) throws SqlParseException; + Object queryDimensionValue(DimensionValueReq dimensionValueReq, User user) throws Exception; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/RecommendService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/RecommendService.java index fd83b6b92..4afa9a611 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/RecommendService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/RecommendService.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.chat.service; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; import com.tencent.supersonic.chat.api.pojo.response.RecommendQuestionResp; import com.tencent.supersonic.chat.api.pojo.response.RecommendResp; + import java.util.List; /*** diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java index 275a0ddaf..f924acbeb 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java @@ -26,9 +26,9 @@ import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp; import com.tencent.supersonic.chat.api.pojo.response.ChatConfigRichResp; import com.tencent.supersonic.chat.api.pojo.response.ChatDefaultRichConfigResp; import com.tencent.supersonic.chat.api.pojo.response.DataInfo; +import com.tencent.supersonic.chat.api.pojo.response.ModelInfo; import com.tencent.supersonic.chat.api.pojo.response.EntityInfo; import com.tencent.supersonic.chat.api.pojo.response.MetricInfo; -import com.tencent.supersonic.chat.api.pojo.response.ModelInfo; import com.tencent.supersonic.chat.config.AggregatorConfig; import com.tencent.supersonic.chat.utils.ComponentFactory; import com.tencent.supersonic.chat.utils.QueryReqBuilder; @@ -332,7 +332,7 @@ public class SemanticService { } public AggregateInfo getAggregateInfo(User user, SemanticParseInfo semanticParseInfo, - QueryResultWithSchemaResp result) { + QueryResultWithSchemaResp result) { if (CollectionUtils.isEmpty(semanticParseInfo.getMetrics()) || !aggregatorConfig.getEnableRatio()) { return new AggregateInfo(); } @@ -384,7 +384,7 @@ public class SemanticService { } private MetricInfo queryRatio(User user, SemanticParseInfo semanticParseInfo, SchemaElement metric, - AggOperatorEnum aggOperatorEnum, QueryResultWithSchemaResp results) { + AggOperatorEnum aggOperatorEnum, QueryResultWithSchemaResp results) { MetricInfo metricInfo = new MetricInfo(); metricInfo.setStatistics(new HashMap<>()); QueryStructReq queryStructReq = QueryReqBuilder.buildStructRatioReq(semanticParseInfo, metric, aggOperatorEnum); @@ -432,7 +432,7 @@ public class SemanticService { } private DateConf getRatioDateConf(AggOperatorEnum aggOperatorEnum, SemanticParseInfo semanticParseInfo, - QueryResultWithSchemaResp results) { + QueryResultWithSchemaResp results) { String dateField = QueryReqBuilder.getDateField(semanticParseInfo.getDateInfo()); Optional lastDayOp = results.getResultList().stream() .map(r -> r.get(dateField).toString()) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java index 30bd0411a..0d5f5c051 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java @@ -82,21 +82,22 @@ public class ChatServiceImpl implements ChatService { @Override - public Boolean addChat(User user, String chatName) { - ChatDO intelligentConversionDO = new ChatDO(); - intelligentConversionDO.setChatName(chatName); - intelligentConversionDO.setCreator(user.getName()); - intelligentConversionDO.setCreateTime(getCurrentTime()); - intelligentConversionDO.setIsDelete(0); - intelligentConversionDO.setLastTime(getCurrentTime()); - intelligentConversionDO.setLastQuestion("Hello, welcome to using supersonic"); - intelligentConversionDO.setIsTop(0); - return chatRepository.createChat(intelligentConversionDO); + public Boolean addChat(User user, String chatName, Integer agentId) { + ChatDO chatDO = new ChatDO(); + chatDO.setChatName(chatName); + chatDO.setCreator(user.getName()); + chatDO.setCreateTime(getCurrentTime()); + chatDO.setIsDelete(0); + chatDO.setLastTime(getCurrentTime()); + chatDO.setLastQuestion("Hello, welcome to using supersonic"); + chatDO.setIsTop(0); + chatDO.setAgentId(agentId); + return chatRepository.createChat(chatDO); } @Override - public List getAll(String userName) { - return chatRepository.getAll(userName); + public List getAll(String userName, Integer agentId) { + return chatRepository.getAll(userName, agentId); } @Override diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/DictionaryServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/DictionaryServiceImpl.java index d18463732..ce11ad509 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/DictionaryServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/DictionaryServiceImpl.java @@ -9,15 +9,15 @@ import com.tencent.supersonic.chat.utils.DictMetaHelper; import com.tencent.supersonic.chat.utils.DictQueryHelper; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; +import com.tencent.supersonic.knowledge.dictionary.FileHandler; +import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; +import com.tencent.supersonic.knowledge.utils.DictTaskConverter; import com.tencent.supersonic.knowledge.dictionary.DictConfig; import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import com.tencent.supersonic.knowledge.dictionary.DictUpdateMode; import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand; import com.tencent.supersonic.knowledge.dictionary.DimValueDictInfo; -import com.tencent.supersonic.knowledge.dictionary.FileHandler; -import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; import com.tencent.supersonic.knowledge.persistence.repository.DictRepository; -import com.tencent.supersonic.knowledge.utils.DictTaskConverter; import java.util.List; import java.util.Map; import java.util.Objects; @@ -41,9 +41,9 @@ public class DictionaryServiceImpl implements DictionaryService { private String dimValue = "DimValue_%d_%d"; public DictionaryServiceImpl(DictMetaHelper metaUtils, - DictQueryHelper dictQueryHelper, - FileHandler fileHandler, - DictRepository dictRepository) { + DictQueryHelper dictQueryHelper, + FileHandler fileHandler, + DictRepository dictRepository) { this.metaUtils = metaUtils; this.dictQueryHelper = dictQueryHelper; this.fileHandler = fileHandler; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java index 4ea03f75c..de92800e5 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java @@ -8,6 +8,7 @@ import com.tencent.supersonic.chat.api.component.SemanticParser; import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; import com.tencent.supersonic.chat.api.pojo.request.QueryReq; import com.tencent.supersonic.chat.api.pojo.response.EntityInfo; @@ -26,13 +27,23 @@ import com.tencent.supersonic.chat.service.SemanticService; import com.tencent.supersonic.chat.service.StatisticsService; import com.tencent.supersonic.chat.utils.ComponentFactory; -import java.util.ArrayList; -import java.util.Comparator; import java.util.List; +import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; +import java.util.Comparator; +import java.util.Objects; import java.util.stream.Collectors; +//import com.tencent.supersonic.common.pojo.Aggregator; +import com.tencent.supersonic.common.pojo.DateConf; +//import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.JsonUtil; +import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; +import com.tencent.supersonic.semantic.api.query.pojo.Filter; +import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import lombok.extern.slf4j.Slf4j; import org.apache.calcite.sql.parser.SqlParseException; import org.springframework.beans.BeanUtils; @@ -239,5 +250,52 @@ public class QueryServiceImpl implements QueryService { return semanticQuery.execute(user); } + @Override + public Object queryDimensionValue(DimensionValueReq dimensionValueReq, User user) throws Exception { + com.tencent.supersonic.semantic.query.service.QueryService queryService = + ContextUtils.getBean(com.tencent.supersonic.semantic.query.service.QueryService.class); + QueryStructReq queryStructReq = new QueryStructReq(); + + DateConf dateConf = new DateConf(); + dateConf.setDateMode(DateConf.DateMode.RECENT); + dateConf.setUnit(1); + dateConf.setPeriod("DAY"); + queryStructReq.setDateInfo(dateConf); + queryStructReq.setLimit(20L); + + // List aggregators = new ArrayList<>(); + // Aggregator aggregator = new Aggregator(dimensionValueReq.getQueryFilter().getBizName(), + // AggOperatorEnum.DISTINCT); + // aggregators.add(aggregator); + // queryStructReq.setAggregators(aggregators); + + queryStructReq.setModelId(dimensionValueReq.getModelId()); + queryStructReq.setNativeQuery(true); + List groups = new ArrayList<>(); + groups.add(dimensionValueReq.getBizName()); + queryStructReq.setGroups(groups); + if (Objects.isNull(dimensionValueReq.getValue())) { + List dimensionFilters = new ArrayList<>(); + Filter dimensionFilter = new Filter(); + dimensionFilter.setOperator(FilterOperatorEnum.LIKE); + dimensionFilter.setRelation(Filter.Relation.FILTER); + dimensionFilter.setBizName(dimensionValueReq.getBizName()); + dimensionFilter.setValue(dimensionValueReq.getValue()); + dimensionFilters.add(dimensionFilter); + queryStructReq.setDimensionFilters(dimensionFilters); + } + QueryResultWithSchemaResp queryResultWithSchemaResp = queryService.queryByStructWithAuth(queryStructReq, user); + Set dimensionValues = new HashSet<>(); + queryResultWithSchemaResp.getResultList().removeIf(o -> { + if (dimensionValues.contains(o.get(dimensionValueReq.getBizName()))) { + return true; + } else { + dimensionValues.add(o.get(dimensionValueReq.getBizName()).toString()); + return false; + } + }); + return queryResultWithSchemaResp; + } + } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/CacheUtils.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/CacheUtils.java index 014e28341..c82f2b31a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/CacheUtils.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/CacheUtils.java @@ -4,10 +4,10 @@ import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; + import java.util.concurrent.TimeUnit; public class CacheUtils { - private static final Cache cache = Caffeine.newBuilder() .expireAfterWrite(1200, TimeUnit.SECONDS) .expireAfterAccess(1200, TimeUnit.SECONDS) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java index 1d197d75e..539ddc726 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java @@ -9,16 +9,17 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.component.SemanticLayer; import com.tencent.supersonic.chat.config.DefaultMetric; import com.tencent.supersonic.chat.config.Dim4Dict; -import com.tencent.supersonic.common.pojo.Aggregator; -import com.tencent.supersonic.common.pojo.Constants; -import com.tencent.supersonic.common.pojo.DateConf; -import com.tencent.supersonic.common.pojo.Order; import com.tencent.supersonic.common.pojo.QueryColumn; -import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import com.tencent.supersonic.semantic.api.query.pojo.Filter; import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; +import com.tencent.supersonic.common.pojo.Constants; +import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; +import com.tencent.supersonic.common.pojo.Aggregator; +import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.Order; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -26,6 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.StringJoiner; + import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.util.Strings; import org.springframework.beans.factory.annotation.Value; @@ -46,7 +48,7 @@ public class DictQueryHelper { private Long dimMaxLimit; public List fetchDimValueSingle(Long modelId, DefaultMetric defaultMetricDesc, Dim4Dict dim4Dict, - User user) { + User user) { List data = new ArrayList<>(); QueryStructReq queryStructCmd = generateQueryStructCmd(modelId, defaultMetricDesc, dim4Dict); try { @@ -89,7 +91,7 @@ public class DictQueryHelper { } private List generateFileData(List> resultList, String nature, String dimName, - String metricName) { + String metricName) { List data = new ArrayList<>(); if (CollectionUtils.isEmpty(resultList)) { return data; diff --git a/chat/core/src/main/resources/mapper/ChatConfigMapper.xml b/chat/core/src/main/resources/mapper/ChatConfigMapper.xml index 61fa88cca..ae71b8c79 100644 --- a/chat/core/src/main/resources/mapper/ChatConfigMapper.xml +++ b/chat/core/src/main/resources/mapper/ChatConfigMapper.xml @@ -6,7 +6,7 @@ + type="com.tencent.supersonic.chat.persistence.dataobject.ChatConfigDO"> @@ -22,11 +22,14 @@ - insert into s2_chat_config - (model_id, `chat_detail_config`, chat_agg_config, recommended_questions, status, created_by, - updated_by, created_at, updated_at) - values (#{modelId}, #{chatDetailConfig}, #{chatAggConfig}, #{recommendedQuestions}, - #{status}, #{createdBy}, #{updatedBy}, #{createdAt}, #{updatedAt}) + insert into s2_chat_config + ( + model_id, `chat_detail_config`, chat_agg_config, recommended_questions, status, created_by, updated_by, created_at, updated_at + ) + values + ( + #{modelId}, #{chatDetailConfig}, #{chatAggConfig}, #{recommendedQuestions}, #{status}, #{createdBy}, #{updatedBy}, #{createdAt}, #{updatedAt} + ) @@ -82,9 +85,9 @@ select * from s2_chat_config where model_id = #{modelId} - and status != 3 + and status != 3 order by updated_at desc - limit 1 + limit 1 diff --git a/chat/core/src/main/resources/mapper/ChatContextMapper.xml b/chat/core/src/main/resources/mapper/ChatContextMapper.xml index 5f69263cf..2a8834627 100644 --- a/chat/core/src/main/resources/mapper/ChatContextMapper.xml +++ b/chat/core/src/main/resources/mapper/ChatContextMapper.xml @@ -6,7 +6,7 @@ + type="com.tencent.supersonic.chat.persistence.dataobject.ChatContextDO"> @@ -15,22 +15,16 @@ - select * - from s2_chat_context - where chat_id = #{chatId} limit 1 + from s2_chat_context where chat_id=#{chatId} limit 1 - - insert into s2_chat_context (chat_id, user, query_text, semantic_parse) - values (#{chatId}, #{user}, #{queryText}, #{semanticParse}) + + insert into s2_chat_context (chat_id,user,query_text,semantic_parse) values (#{chatId}, #{user},#{queryText}, #{semanticParse}) - update s2_chat_context - set query_text=#{queryText}, - semantic_parse=#{semanticParse} - where chat_id = #{chatId} + update s2_chat_context set query_text=#{queryText},semantic_parse=#{semanticParse} where chat_id=#{chatId} \ No newline at end of file diff --git a/chat/core/src/main/resources/mapper/ChatMapper.xml b/chat/core/src/main/resources/mapper/ChatMapper.xml index a2f788577..18f71d54f 100644 --- a/chat/core/src/main/resources/mapper/ChatMapper.xml +++ b/chat/core/src/main/resources/mapper/ChatMapper.xml @@ -5,9 +5,9 @@ - + + @@ -22,6 +22,9 @@ from s2_chat where creator = #{creator} and is_delete = 0 + + and agent_id = #{agentId} + order by is_top desc, last_time desc @@ -42,16 +45,14 @@ update s2_chat set last_question = #{lastQuestion}, - last_time = #{lastTime} + last_time = #{lastTime} where chat_id = #{chatId} - + insert into s2_chat - (chat_name, create_time, last_time, creator, last_question, is_delete, is_top) - values (#{chatName}, #{createTime}, #{lastTime}, #{creator}, #{lastQuestion}, #{isDelete}, - #{isTop}) + (agent_id, chat_name, create_time, last_time, creator, last_question, is_delete, is_top) + values (#{agentId}, #{chatName}, #{createTime}, #{lastTime}, #{creator}, #{lastQuestion}, #{isDelete}, #{isTop}) @@ -62,8 +63,7 @@ - + @@ -87,29 +87,22 @@ - + update s2_chat_query set score=#{score}, feedback=#{feedback} where question_id = #{id} - insert into s2_chat_query - (question_id, create_time, user_name, question, query_result, time, state, data_content, - name, query_type, - is_deleted, module, chat_id, aggregator, top_num, start_time, end_time, query_sql, columns, - main_entity, score, + (question_id, create_time, user_name, question, query_result, time, state, data_content, name, query_type, + is_deleted, module, chat_id, aggregator, top_num, start_time, end_time, query_sql, columns, main_entity, score, feedback) - values (#{questionId}, #{createTime}, #{userName}, #{question}, #{queryResults}, #{time}, - #{state}, - #{dataContent}, #{name}, #{queryType}, #{isDeleted}, #{module}, #{chatId}, - #{aggregator}, #{topNum}, - #{startTime}, #{endTime}, #{querySql}, #{QueryColumn}, #{EntityInfo}, #{score}, - #{feedback}) + values (#{questionId}, #{createTime}, #{userName}, #{question}, #{queryResults}, #{time}, #{state}, + #{dataContent}, #{name}, #{queryType}, #{isDeleted}, #{module}, #{chatId}, #{aggregator}, #{topNum}, + #{startTime}, #{endTime}, #{querySql}, #{QueryColumn}, #{EntityInfo}, #{score}, #{feedback}) diff --git a/chat/core/src/main/resources/mapper/PluginDOMapper.xml b/chat/core/src/main/resources/mapper/PluginDOMapper.xml index e9a51b57a..5a9386a4f 100644 --- a/chat/core/src/main/resources/mapper/PluginDOMapper.xml +++ b/chat/core/src/main/resources/mapper/PluginDOMapper.xml @@ -1,297 +1,276 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , type, model, pattern, parse_mode, name, created_at, created_by, updated_at, + + + + + + + id, type, model, pattern, parse_mode, name, created_at, created_by, updated_at, updated_by - - - parse_mode_config - , config, comment - - - - - - delete - from s2_plugin - where id = #{id,jdbcType=BIGINT} - - - insert into s2_plugin (id, type, model, - pattern, parse_mode, name, - created_at, created_by, updated_at, - updated_by, parse_mode_config, config, - comment) - values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{model,jdbcType=VARCHAR}, - #{pattern,jdbcType=VARCHAR}, #{parseMode,jdbcType=VARCHAR}, - #{name,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, #{parseModeConfig,jdbcType=LONGVARCHAR}, - #{config,jdbcType=LONGVARCHAR}, - #{comment,jdbcType=LONGVARCHAR}) - - - insert into s2_plugin - - - id, - - - type, - - - model, - - - pattern, - - - parse_mode, - - - name, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - parse_mode_config, - - - config, - - - comment, - - - - - #{id,jdbcType=BIGINT}, - - - #{type,jdbcType=VARCHAR}, - - - #{model,jdbcType=VARCHAR}, - - - #{pattern,jdbcType=VARCHAR}, - - - #{parseMode,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{parseModeConfig,jdbcType=LONGVARCHAR}, - - - #{config,jdbcType=LONGVARCHAR}, - - - #{comment,jdbcType=LONGVARCHAR}, - - - - - - update s2_plugin - - - type = #{type,jdbcType=VARCHAR}, - - - model = #{model,jdbcType=VARCHAR}, - - - pattern = #{pattern,jdbcType=VARCHAR}, - - - parse_mode = #{parseMode,jdbcType=VARCHAR}, - - - name = #{name,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - parse_mode_config = #{parseModeConfig,jdbcType=LONGVARCHAR}, - - - config = #{config,jdbcType=LONGVARCHAR}, - - - comment = #{comment,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_plugin - set type = #{type,jdbcType=VARCHAR}, - model = #{model,jdbcType=VARCHAR}, - pattern = #{pattern,jdbcType=VARCHAR}, - parse_mode = #{parseMode,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - parse_mode_config = #{parseModeConfig,jdbcType=LONGVARCHAR}, - config = #{config,jdbcType=LONGVARCHAR}, - comment = #{comment,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_plugin - set type = #{type,jdbcType=VARCHAR}, - model = #{model,jdbcType=VARCHAR}, - pattern = #{pattern,jdbcType=VARCHAR}, - parse_mode = #{parseMode,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + parse_mode_config, config, comment + + + + + + delete from s2_plugin + where id = #{id,jdbcType=BIGINT} + + + insert into s2_plugin (id, type, model, + pattern, parse_mode, name, + created_at, created_by, updated_at, + updated_by, parse_mode_config, config, + comment) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{model,jdbcType=VARCHAR}, + #{pattern,jdbcType=VARCHAR}, #{parseMode,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, + #{updatedBy,jdbcType=VARCHAR}, #{parseModeConfig,jdbcType=LONGVARCHAR}, #{config,jdbcType=LONGVARCHAR}, + #{comment,jdbcType=LONGVARCHAR}) + + + insert into s2_plugin + + + id, + + + type, + + + model, + + + pattern, + + + parse_mode, + + + name, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + parse_mode_config, + + + config, + + + comment, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{model,jdbcType=VARCHAR}, + + + #{pattern,jdbcType=VARCHAR}, + + + #{parseMode,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{parseModeConfig,jdbcType=LONGVARCHAR}, + + + #{config,jdbcType=LONGVARCHAR}, + + + #{comment,jdbcType=LONGVARCHAR}, + + + + + + update s2_plugin + + + type = #{type,jdbcType=VARCHAR}, + + + model = #{model,jdbcType=VARCHAR}, + + + pattern = #{pattern,jdbcType=VARCHAR}, + + + parse_mode = #{parseMode,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + parse_mode_config = #{parseModeConfig,jdbcType=LONGVARCHAR}, + + + config = #{config,jdbcType=LONGVARCHAR}, + + + comment = #{comment,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_plugin + set type = #{type,jdbcType=VARCHAR}, + model = #{model,jdbcType=VARCHAR}, + pattern = #{pattern,jdbcType=VARCHAR}, + parse_mode = #{parseMode,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + parse_mode_config = #{parseModeConfig,jdbcType=LONGVARCHAR}, + config = #{config,jdbcType=LONGVARCHAR}, + comment = #{comment,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_plugin + set type = #{type,jdbcType=VARCHAR}, + model = #{model,jdbcType=VARCHAR}, + pattern = #{pattern,jdbcType=VARCHAR}, + parse_mode = #{parseMode,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/chat/core/src/main/resources/sql.ddl/chat.sql b/chat/core/src/main/resources/sql.ddl/chat.sql index 183e05673..7ba563391 100644 --- a/chat/core/src/main/resources/sql.ddl/chat.sql +++ b/chat/core/src/main/resources/sql.ddl/chat.sql @@ -2,10 +2,10 @@ CREATE TABLE `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_text` text DEFAULT NULL COMMENT 'query text', - `semantic_parse` text DEFAULT NULL COMMENT 'parse data', - `ext_data` text DEFAULT NULL COMMENT 'extend data', + `user` varchar(64) DEFAULT NULL COMMENT 'row modify user', + `query_text` text DEFAULT NULL COMMENT 'query text', + `semantic_parse` text DEFAULT NULL COMMENT 'parse data', + `ext_data` text DEFAULT NULL COMMENT 'extend data', PRIMARY KEY (`chat_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -40,7 +40,7 @@ CREATE TABLE `chat_query` `is_deleted` int(1) DEFAULT NULL, `module` varchar(30) DEFAULT NULL, `entity` mediumtext COMMENT '', - `chat_id` bigint(8) DEFAULT NULL COMMENT 'chat id', + `chat_id` bigint(8) DEFAULT NULL COMMENT 'chat id', `recommend` text, `aggregator` varchar(20) DEFAULT 'trend', `top_num` int(3) DEFAULT NULL, @@ -59,18 +59,4 @@ CREATE TABLE `chat_query` KEY `common` (`question_id`), KEY `common1` (`user_name`), KEY `common2` (`chat_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; - - -CREATE TABLE `chat` -( - `chat_id` bigint(8) NOT NULL AUTO_INCREMENT, - `chat_name` varchar(100) DEFAULT NULL, - `create_time` datetime DEFAULT NULL, - `last_time` datetime DEFAULT NULL, - `creator` varchar(30) DEFAULT NULL, - `last_question` varchar(200) DEFAULT NULL, - `is_delete` int(2) DEFAULT '0' COMMENT 'is deleted', - `is_top` int(2) DEFAULT '0' COMMENT 'is top', - PRIMARY KEY (`chat_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/DateFieldCorrectorTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/DateFieldCorrectorTest.java similarity index 91% rename from chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/DateFieldCorrectorTest.java rename to chat/core/src/test/java/com/tencent/supersonic/chat/corrector/DateFieldCorrectorTest.java index 4b530bbe7..136aabec4 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/DateFieldCorrectorTest.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/DateFieldCorrectorTest.java @@ -1,9 +1,8 @@ -package com.tencent.supersonic.chat.query.llm.dsl.corrector; +package com.tencent.supersonic.chat.corrector; import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.chat.corrector.DateFieldCorrector; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/FieldValueCorrectorTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldNameCorrectorTest.java similarity index 91% rename from chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/FieldValueCorrectorTest.java rename to chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldNameCorrectorTest.java index c5f34907f..b9e6351b3 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/FieldValueCorrectorTest.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldNameCorrectorTest.java @@ -1,8 +1,7 @@ -package com.tencent.supersonic.chat.query.llm.dsl.corrector; +package com.tencent.supersonic.chat.corrector; import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.chat.corrector.FieldValueCorrector; import com.tencent.supersonic.chat.parser.llm.dsl.DSLParseResult; import com.tencent.supersonic.chat.query.llm.dsl.LLMReq; import com.tencent.supersonic.chat.query.llm.dsl.LLMReq.ElementValue; @@ -14,12 +13,12 @@ import java.util.Map; import org.junit.Assert; import org.junit.jupiter.api.Test; -class FieldValueCorrectorTest { +class FieldNameCorrectorTest { @Test void rewriter() { - FieldValueCorrector corrector = new FieldValueCorrector(); + FieldNameCorrector corrector = new FieldNameCorrector(); CorrectionInfo correctionInfo = CorrectionInfo.builder() .sql("select 歌曲名 from 歌曲库 where 专辑照片 = '七里香' and 专辑名 = '流行' and 数据日期 = '2023-08-19'") .build(); diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldValueCorrectorTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldValueCorrectorTest.java new file mode 100644 index 000000000..1cc8af14b --- /dev/null +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/FieldValueCorrectorTest.java @@ -0,0 +1,71 @@ +package com.tencent.supersonic.chat.corrector; + +import static org.mockito.Mockito.when; + +import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; +import com.tencent.supersonic.chat.api.pojo.SchemaElement; +import com.tencent.supersonic.chat.api.pojo.SchemaValueMap; +import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.api.pojo.SemanticSchema; +import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.knowledge.service.SchemaService; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; + +class FieldValueCorrectorTest { + + + @Test + void corrector() { + + MockedStatic mockContextUtils = Mockito.mockStatic(ContextUtils.class); + + SchemaService mockSchemaService = Mockito.mock(SchemaService.class); + + SemanticSchema mockSemanticSchema = Mockito.mock(SemanticSchema.class); + + List dimensions = new ArrayList<>(); + List schemaValueMaps = new ArrayList<>(); + SchemaValueMap value1 = new SchemaValueMap(); + value1.setBizName("杰伦"); + value1.setTechName("周杰伦"); + value1.setAlias(Arrays.asList("周杰倫", "Jay Chou", "周董", "周先生")); + schemaValueMaps.add(value1); + + SchemaElement schemaElement = SchemaElement.builder() + .bizName("singer_name") + .name("歌手名") + .model(2L) + .schemaValueMaps(schemaValueMaps) + .build(); + dimensions.add(schemaElement); + + when(mockSemanticSchema.getDimensions()).thenReturn(dimensions); + when(mockSchemaService.getSemanticSchema()).thenReturn(mockSemanticSchema); + mockContextUtils.when(() -> ContextUtils.getBean(SchemaService.class)).thenReturn(mockSchemaService); + + SemanticParseInfo parseInfo = new SemanticParseInfo(); + SchemaElement model = new SchemaElement(); + model.setId(2L); + parseInfo.setModel(model); + CorrectionInfo correctionInfo = CorrectionInfo.builder() + .sql("select count(song_name) from 歌曲库 where singer_name = '周先生'") + .parseInfo(parseInfo) + .build(); + + FieldValueCorrector corrector = new FieldValueCorrector(); + CorrectionInfo info = corrector.corrector(correctionInfo); + + Assert.assertEquals("SELECT count(song_name) FROM 歌曲库 WHERE singer_name = '周杰伦'", info.getSql()); + + correctionInfo.setSql("select count(song_name) from 歌曲库 where singer_name = '杰伦'"); + info = corrector.corrector(correctionInfo); + + Assert.assertEquals("SELECT count(song_name) FROM 歌曲库 WHERE singer_name = '周杰伦'", info.getSql()); + } +} \ No newline at end of file diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/SelectFieldAppendCorrectorTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrectorTest.java similarity index 89% rename from chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/SelectFieldAppendCorrectorTest.java rename to chat/core/src/test/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrectorTest.java index 176c0ac17..99da9af35 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/query/llm/dsl/corrector/SelectFieldAppendCorrectorTest.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/corrector/SelectFieldAppendCorrectorTest.java @@ -1,7 +1,6 @@ -package com.tencent.supersonic.chat.query.llm.dsl.corrector; +package com.tencent.supersonic.chat.corrector; import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; -import com.tencent.supersonic.chat.corrector.SelectFieldAppendCorrector; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParserTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParserTest.java index e6f269e71..39056445e 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParserTest.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParserTest.java @@ -1,12 +1,80 @@ package com.tencent.supersonic.chat.parser.llm.dsl; +import static org.mockito.Mockito.when; + +import com.tencent.supersonic.chat.api.pojo.CorrectionInfo; +import com.tencent.supersonic.chat.api.pojo.SchemaElement; +import com.tencent.supersonic.chat.api.pojo.SchemaValueMap; +import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.chat.api.pojo.SemanticSchema; +import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.knowledge.service.SchemaService; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; class LLMDslParserTest { - @Test - void getDimensionFilter() { - } + void setFilter() { + MockedStatic mockContextUtils = Mockito.mockStatic(ContextUtils.class); + SchemaService mockSchemaService = Mockito.mock(SchemaService.class); + SemanticSchema mockSemanticSchema = Mockito.mock(SemanticSchema.class); + + List dimensions = new ArrayList<>(); + List schemaValueMaps = new ArrayList<>(); + SchemaValueMap value1 = new SchemaValueMap(); + value1.setBizName("杰伦"); + value1.setTechName("周杰伦"); + value1.setAlias(Arrays.asList("周杰倫", "Jay Chou", "周董", "周先生")); + schemaValueMaps.add(value1); + + SchemaElement schemaElement = SchemaElement.builder() + .bizName("singer_name") + .name("歌手名") + .model(2L) + .schemaValueMaps(schemaValueMaps) + .build(); + dimensions.add(schemaElement); + + SchemaElement schemaElement2 = SchemaElement.builder() + .bizName("publish_time") + .name("发布时间") + .model(2L) + .build(); + dimensions.add(schemaElement2); + + when(mockSemanticSchema.getDimensions()).thenReturn(dimensions); + + List metrics = new ArrayList<>(); + SchemaElement metric = SchemaElement.builder() + .bizName("play_count") + .name("播放量") + .model(2L) + .build(); + metrics.add(metric); + + when(mockSemanticSchema.getMetrics()).thenReturn(metrics); + + when(mockSchemaService.getSemanticSchema()).thenReturn(mockSemanticSchema); + mockContextUtils.when(() -> ContextUtils.getBean(SchemaService.class)).thenReturn(mockSchemaService); + + SemanticParseInfo parseInfo = new SemanticParseInfo(); + SchemaElement model = new SchemaElement(); + model.setId(2L); + parseInfo.setModel(model); + CorrectionInfo correctionInfo = CorrectionInfo.builder() + .sql("select count(song_name) from 歌曲库 where singer_name = '周先生' and YEAR(publish_time) >= 2023 and ") + .parseInfo(parseInfo) + .build(); + + LLMDslParser llmDslParser = new LLMDslParser(); + + llmDslParser.setFilter(correctionInfo, 2L, parseInfo); + + } } \ No newline at end of file diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java index 7f45a517a..12509c81b 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java @@ -1,13 +1,13 @@ package com.tencent.supersonic.chat.test.context; -import com.tencent.supersonic.chat.persistence.mapper.ChatContextMapper; import com.tencent.supersonic.chat.persistence.repository.impl.ChatContextRepositoryImpl; -import com.tencent.supersonic.chat.test.ChatBizLauncher; import com.tencent.supersonic.chat.utils.ComponentFactory; +import com.tencent.supersonic.chat.persistence.mapper.ChatContextMapper; import com.tencent.supersonic.knowledge.semantic.RemoteSemanticLayer; +import com.tencent.supersonic.chat.test.ChatBizLauncher; import com.tencent.supersonic.semantic.model.domain.DimensionService; -import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.model.domain.ModelService; +import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.query.service.QueryService; import org.junit.runner.RunWith; import org.slf4j.Logger; diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/SemanticParseObjectHelper.java b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/SemanticParseObjectHelper.java index bf1b7056e..95ab92959 100644 --- a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/SemanticParseObjectHelper.java +++ b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/SemanticParseObjectHelper.java @@ -2,11 +2,12 @@ package com.tencent.supersonic.chat.test.context; import com.google.gson.Gson; import com.tencent.supersonic.chat.api.pojo.SchemaElement; -import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.request.QueryFilter; -import com.tencent.supersonic.common.pojo.DateConf; -import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; +import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; +import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; +import com.tencent.supersonic.common.pojo.DateConf; + import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; diff --git a/chat/core/src/test/resources/db/chat-data-h2.sql b/chat/core/src/test/resources/db/chat-data-h2.sql index b86f91a2b..0119e135e 100644 --- a/chat/core/src/test/resources/db/chat-data-h2.sql +++ b/chat/core/src/test/resources/db/chat-data-h2.sql @@ -1,2 +1 @@ -insert into chat_context (chat_id, modified_at, `user`, `query_text`, `semantic_parse`, ext_data) -VALUES (1, '2023-05-24 00:00:00', 'admin', '超音数访问次数', '', 'admin'); \ No newline at end of file +insert into chat_context (chat_id, modified_at , `user`, `query_text`, `semantic_parse` ,ext_data) VALUES(1, '2023-05-24 00:00:00', 'admin', '超音数访问次数', '', 'admin'); \ No newline at end of file diff --git a/chat/core/src/test/resources/db/chat-schema-h2.sql b/chat/core/src/test/resources/db/chat-schema-h2.sql index 6eda5ad03..004e09154 100644 --- a/chat/core/src/test/resources/db/chat-schema-h2.sql +++ b/chat/core/src/test/resources/db/chat-schema-h2.sql @@ -1,59 +1,59 @@ CREATE TABLE `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 + `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 `chat` ( - `chat_id` BIGINT NOT NULL,-- AUTO_INCREMENT, - `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', + `chat_id` BIGINT NOT NULL ,-- AUTO_INCREMENT, + `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 `chat_query` ( - `id` BIGINT NOT NULL,--AUTO_INCREMENT, - `question_id` BIGINT DEFAULT NULL, + `id` BIGINT NOT NULL ,--AUTO_INCREMENT, + `question_id` BIGINT DEFAULT NULL, `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user_name` varchar(150) DEFAULT NULL COMMENT '', - `question` varchar(300) DEFAULT NULL COMMENT '', + `user_name` varchar(150) DEFAULT NULL COMMENT '', + `question` varchar(300) DEFAULT NULL COMMENT '', `query_result` LONGVARCHAR, - `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , `state` int(1) DEFAULT NULL, - `data_content` varchar(30) DEFAULT NULL, - `name` varchar(100) DEFAULT NULL, + `data_content` varchar(30) DEFAULT NULL, + `name` varchar(100) DEFAULT NULL, `scene_type` int(2) DEFAULT NULL, `query_type` int(2) DEFAULT NULL, `is_deleted` int(1) DEFAULT NULL, - `module` varchar(30) DEFAULT NULL, + `module` varchar(30) DEFAULT NULL, `entity` LONGVARCHAR COMMENT '', - `chat_id` BIGINT DEFAULT NULL COMMENT 'chat id', + `chat_id` BIGINT DEFAULT NULL COMMENT 'chat id', `recommend` text, - `aggregator` varchar(20) DEFAULT 'trend', - `top_num` int DEFAULT NULL, - `start_time` varchar(30) DEFAULT NULL, - `end_time` varchar(30) DEFAULT NULL, + `aggregator` varchar(20) DEFAULT 'trend', + `top_num` int DEFAULT NULL, + `start_time` varchar(30) DEFAULT NULL, + `end_time` varchar(30) DEFAULT NULL, `compare_recommend` LONGVARCHAR, `compare_entity` LONGVARCHAR, `query_sql` LONGVARCHAR, - `columns` varchar(2000) DEFAULT NULL, + `columns` varchar(2000) DEFAULT NULL, `result_list` LONGVARCHAR, - `main_entity` varchar(5000) DEFAULT NULL, - `semantic_text` varchar(5000) DEFAULT NULL, - `score` int DEFAULT '0', - `feedback` varchar(1024) DEFAULT '', + `main_entity` varchar(5000) DEFAULT NULL, + `semantic_text` varchar(5000) DEFAULT NULL, + `score` int DEFAULT '0', + `feedback` varchar(1024) DEFAULT '', PRIMARY KEY (`id`) -); +) ; diff --git a/chat/knowledge/src/main/java/com/hankcs/hanlp/dictionary/CoreDictionary.java b/chat/knowledge/src/main/java/com/hankcs/hanlp/dictionary/CoreDictionary.java index 5f1e6af67..e97c9f903 100644 --- a/chat/knowledge/src/main/java/com/hankcs/hanlp/dictionary/CoreDictionary.java +++ b/chat/knowledge/src/main/java/com/hankcs/hanlp/dictionary/CoreDictionary.java @@ -10,6 +10,7 @@ import com.hankcs.hanlp.corpus.io.IOUtil; import com.hankcs.hanlp.corpus.tag.Nature; import com.hankcs.hanlp.utility.Predefine; import com.hankcs.hanlp.utility.TextUtility; + import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataOutputStream; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/ApplicationStartedInit.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/ApplicationStartedInit.java index 41a881726..5deb2dda1 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/ApplicationStartedInit.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/ApplicationStartedInit.java @@ -1,10 +1,9 @@ package com.tencent.supersonic.knowledge; import com.tencent.supersonic.knowledge.dictionary.DictWord; -import com.tencent.supersonic.knowledge.service.KnowledgeService; import com.tencent.supersonic.knowledge.service.SchemaService; +import com.tencent.supersonic.knowledge.service.KnowledgeService; import com.tencent.supersonic.knowledge.service.WordService; -import java.util.List; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +12,8 @@ import org.springframework.context.ApplicationListener; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.util.List; + @Slf4j @Component public class ApplicationStartedInit implements ApplicationListener { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DictConfig.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DictConfig.java index f81875e3c..768962f26 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DictConfig.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DictConfig.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.knowledge.dictionary; import java.util.List; + import lombok.Data; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DimValue2DictCommand.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DimValue2DictCommand.java index c5d56634a..734b24a04 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DimValue2DictCommand.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/DimValue2DictCommand.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.knowledge.dictionary; import java.util.HashMap; import java.util.List; import java.util.Map; + import lombok.Data; @Data diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/HadoopFileIOAdapter.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/HadoopFileIOAdapter.java index 0230020a4..f948c2817 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/HadoopFileIOAdapter.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/HadoopFileIOAdapter.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; + import lombok.extern.slf4j.Slf4j; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/MultiCustomDictionary.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/MultiCustomDictionary.java index 6a48cee28..d2b732ca8 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/MultiCustomDictionary.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/MultiCustomDictionary.java @@ -16,6 +16,7 @@ import com.hankcs.hanlp.utility.Predefine; import com.hankcs.hanlp.utility.TextUtility; import com.tencent.supersonic.knowledge.service.SearchService; import com.tencent.supersonic.knowledge.utils.HanlpHelper; + import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataOutputStream; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/BaseWordBuilder.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/BaseWordBuilder.java index a0e504ad6..a600b972c 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/BaseWordBuilder.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/BaseWordBuilder.java @@ -1,10 +1,11 @@ package com.tencent.supersonic.knowledge.dictionary.builder; +import java.util.ArrayList; +import java.util.List; + import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; -import java.util.ArrayList; -import java.util.List; import lombok.extern.slf4j.Slf4j; /** diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/DomainWordBuilder.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/DomainWordBuilder.java index 83d6da45d..554437972 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/DomainWordBuilder.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/DomainWordBuilder.java @@ -1,10 +1,12 @@ package com.tencent.supersonic.knowledge.dictionary.builder; import com.google.common.collect.Lists; + +import java.util.List; + import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; -import java.util.List; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/EntityWordBuilder.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/EntityWordBuilder.java index c8e659562..d2b30b635 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/EntityWordBuilder.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/EntityWordBuilder.java @@ -1,11 +1,13 @@ package com.tencent.supersonic.knowledge.dictionary.builder; import com.google.common.collect.Lists; + +import java.util.List; +import java.util.Objects; + import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; -import java.util.List; -import java.util.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/ValueWordBuilder.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/ValueWordBuilder.java index 1d51f12f3..bc0a24462 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/ValueWordBuilder.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/dictionary/builder/ValueWordBuilder.java @@ -1,11 +1,13 @@ package com.tencent.supersonic.knowledge.dictionary.builder; import com.google.common.collect.Lists; + +import java.util.List; +import java.util.Objects; + import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; -import java.util.List; -import java.util.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/dataobject/DictConfDO.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/dataobject/DictConfDO.java index bfb17c838..770e7c5ec 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/dataobject/DictConfDO.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/dataobject/DictConfDO.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.knowledge.persistence.dataobject; import java.util.Date; + import lombok.Data; @Data diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/mapper/DictTaskMapper.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/mapper/DictTaskMapper.java index df1faca99..a63926643 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/mapper/DictTaskMapper.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/mapper/DictTaskMapper.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.knowledge.persistence.mapper; -import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; +import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import java.util.List; import org.apache.ibatis.annotations.Mapper; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepository.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepository.java index fa54a6211..ac029aed9 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepository.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepository.java @@ -1,10 +1,11 @@ package com.tencent.supersonic.knowledge.persistence.repository; +import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; import com.tencent.supersonic.knowledge.dictionary.DictConfig; import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import com.tencent.supersonic.knowledge.dictionary.DimValueDictInfo; -import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; + import java.util.List; public interface DictRepository { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepositoryImpl.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepositoryImpl.java index 422202073..f460bcf30 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepositoryImpl.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/persistence/repository/DictRepositoryImpl.java @@ -1,19 +1,21 @@ package com.tencent.supersonic.knowledge.persistence.repository; import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; +import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; +import com.tencent.supersonic.knowledge.utils.DictTaskConverter; +import com.tencent.supersonic.knowledge.persistence.dataobject.DictConfDO; import com.tencent.supersonic.knowledge.dictionary.DictConfig; import com.tencent.supersonic.knowledge.dictionary.DictTaskFilter; import com.tencent.supersonic.knowledge.dictionary.DimValueDictInfo; -import com.tencent.supersonic.knowledge.persistence.dataobject.DictConfDO; -import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; import com.tencent.supersonic.knowledge.persistence.mapper.DictConfMapper; import com.tencent.supersonic.knowledge.persistence.mapper.DictTaskMapper; -import com.tencent.supersonic.knowledge.utils.DictTaskConverter; + import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; + import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; @@ -26,7 +28,7 @@ public class DictRepositoryImpl implements DictRepository { private final DictConfMapper dictConfMapper; public DictRepositoryImpl(DictTaskMapper dictTaskMapper, - DictConfMapper dictConfMapper) { + DictConfMapper dictConfMapper) { this.dictTaskMapper = dictTaskMapper; this.dictConfMapper = dictConfMapper; } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java index 062d64136..95beeab59 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java @@ -7,10 +7,12 @@ import com.tencent.supersonic.chat.api.pojo.ModelSchema; import com.tencent.supersonic.common.pojo.ResultData; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; + import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.TimeUnit; + import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.core.ParameterizedTypeReference; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/ModelSchemaBuilder.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/ModelSchemaBuilder.java index 02b415d05..a244708c8 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/ModelSchemaBuilder.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/ModelSchemaBuilder.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.knowledge.semantic; import com.tencent.supersonic.chat.api.pojo.ModelSchema; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SchemaElementType; +import com.tencent.supersonic.chat.api.pojo.SchemaValueMap; import com.tencent.supersonic.semantic.api.model.pojo.DimValueMap; import com.tencent.supersonic.semantic.api.model.pojo.Entity; import com.tencent.supersonic.semantic.api.model.response.DimSchemaResp; @@ -64,9 +65,16 @@ public class ModelSchemaBuilder { Set dimensionValues = new HashSet<>(); for (DimSchemaResp dim : resp.getDimensions()) { + List alias = new ArrayList<>(); + String aliasStr = dim.getAlias(); + if (Strings.isNotEmpty(aliasStr)) { + alias = Arrays.asList(aliasStr.split(aliasSplit)); + } Set dimValueAlias = new HashSet<>(); - if (!CollectionUtils.isEmpty(dim.getDimValueMaps())) { - List dimValueMaps = dim.getDimValueMaps(); + List dimValueMaps = dim.getDimValueMaps(); + List schemaValueMaps = new ArrayList<>(); + if (!CollectionUtils.isEmpty(dimValueMaps)) { + for (DimValueMap dimValueMap : dimValueMaps) { if (Strings.isNotEmpty(dimValueMap.getBizName())) { dimValueAlias.add(dimValueMap.getBizName()); @@ -74,13 +82,11 @@ public class ModelSchemaBuilder { if (!CollectionUtils.isEmpty(dimValueMap.getAlias())) { dimValueAlias.addAll(dimValueMap.getAlias()); } + SchemaValueMap schemaValueMap = new SchemaValueMap(); + BeanUtils.copyProperties(dimValueMap, schemaValueMap); + schemaValueMaps.add(schemaValueMap); } - } - List alias = new ArrayList<>(); - String aliasStr = dim.getAlias(); - if (Strings.isNotEmpty(aliasStr)) { - alias = Arrays.asList(aliasStr.split(aliasSplit)); } SchemaElement dimToAdd = SchemaElement.builder() .model(resp.getId()) @@ -90,6 +96,7 @@ public class ModelSchemaBuilder { .type(SchemaElementType.DIMENSION) .useCnt(dim.getUseCnt()) .alias(alias) + .schemaValueMaps(schemaValueMaps) .build(); dimensions.add(dimToAdd); diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeService.java index a1b9616b7..ff26cad82 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeService.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeService.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.knowledge.service; import com.tencent.supersonic.knowledge.dictionary.DictWord; + import java.util.List; public interface KnowledgeService { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeServiceImpl.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeServiceImpl.java index 5bbb6b540..1f089a5d4 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeServiceImpl.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/KnowledgeServiceImpl.java @@ -3,8 +3,10 @@ package com.tencent.supersonic.knowledge.service; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; import com.tencent.supersonic.knowledge.utils.HanlpHelper; + import java.util.List; import java.util.stream.Collectors; + import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java index 60a02c91f..57256c79b 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java @@ -7,10 +7,11 @@ import com.tencent.supersonic.chat.api.component.SemanticLayer; import com.tencent.supersonic.chat.api.pojo.ModelSchema; import com.tencent.supersonic.chat.api.pojo.SemanticSchema; import com.tencent.supersonic.knowledge.utils.ComponentFactory; -import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.concurrent.TimeUnit; + @Service @Slf4j public class SchemaService { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java index 8748104b7..5afff44b6 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java @@ -6,9 +6,11 @@ import com.tencent.supersonic.chat.api.pojo.SemanticSchema; import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; import com.tencent.supersonic.knowledge.dictionary.builder.WordBuilderFactory; -import com.tencent.supersonic.knowledge.utils.ComponentFactory; + import java.util.ArrayList; import java.util.List; + +import com.tencent.supersonic.knowledge.utils.ComponentFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java index 2582515cf..532f58203 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java @@ -1,9 +1,10 @@ package com.tencent.supersonic.knowledge.utils; import com.tencent.supersonic.chat.api.component.SemanticLayer; +import org.springframework.core.io.support.SpringFactoriesLoader; + import java.util.List; import java.util.Objects; -import org.springframework.core.io.support.SpringFactoriesLoader; public class ComponentFactory { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/DictTaskConverter.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/DictTaskConverter.java index 1e60f2eea..67ce6cf34 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/DictTaskConverter.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/DictTaskConverter.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand; import com.tencent.supersonic.knowledge.dictionary.DimValueInfo; import com.tencent.supersonic.knowledge.persistence.dataobject.DictConfDO; import com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO; + import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/FileHelper.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/FileHelper.java index b23785b9e..3ad816b90 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/FileHelper.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/FileHelper.java @@ -7,6 +7,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; + import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java index 587e120ba..89987b103 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java @@ -7,17 +7,18 @@ import com.hankcs.hanlp.dictionary.CoreDictionary; import com.hankcs.hanlp.dictionary.DynamicCustomDictionary; import com.hankcs.hanlp.seg.Segment; import com.hankcs.hanlp.seg.common.Term; -import com.tencent.supersonic.knowledge.dictionary.DictWord; import com.tencent.supersonic.knowledge.dictionary.DictWordType; -import com.tencent.supersonic.knowledge.dictionary.HadoopFileIOAdapter; -import com.tencent.supersonic.knowledge.dictionary.MapResult; -import com.tencent.supersonic.knowledge.dictionary.MultiCustomDictionary; -import com.tencent.supersonic.knowledge.service.SearchService; +import com.tencent.supersonic.knowledge.dictionary.DictWord; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; + +import com.tencent.supersonic.knowledge.dictionary.MapResult; +import com.tencent.supersonic.knowledge.dictionary.HadoopFileIOAdapter; +import com.tencent.supersonic.knowledge.service.SearchService; +import com.tencent.supersonic.knowledge.dictionary.MultiCustomDictionary; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; import org.springframework.util.ResourceUtils; diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HdfsFileHelper.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HdfsFileHelper.java index 3b388d3de..2d4943954 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HdfsFileHelper.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HdfsFileHelper.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; + import lombok.extern.slf4j.Slf4j; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; diff --git a/chat/knowledge/src/main/resources/mapper/DictConfMapper.xml b/chat/knowledge/src/main/resources/mapper/DictConfMapper.xml index 0db616b11..eb28da69e 100644 --- a/chat/knowledge/src/main/resources/mapper/DictConfMapper.xml +++ b/chat/knowledge/src/main/resources/mapper/DictConfMapper.xml @@ -5,7 +5,7 @@ + type="com.tencent.supersonic.knowledge.persistence.dataobject.DictConfDO"> @@ -18,35 +18,35 @@ insert into s2_dictionary (`domain_id`, dim_value_infos, created_at, updated_at, created_by, updated_by) - values (#{modelId}, #{dimValueInfos}, #{createdAt}, #{updatedAt}, #{createdBy}, - #{updatedBy}) + values + (#{modelId}, #{dimValueInfos}, #{createdAt}, #{updatedAt}, #{createdBy}, #{updatedBy}) - insert into s2_dictionary + insert into s2_dictionary (`model_id`, dim_value_infos, created_at, updated_at, created_by, updated_by) - values (#{modelId}, #{dimValueInfos}, #{createdAt}, #{updatedAt}, #{createdBy}, - #{updatedBy}) on duplicate key - update - dim_value_infos = #{dimValueInfos}, - updated_at = #{updatedAt}, - updated_by = #{updatedBy} + values + (#{modelId}, #{dimValueInfos}, #{createdAt}, #{updatedAt}, #{createdBy}, #{updatedBy}) + on duplicate key update + dim_value_infos = #{dimValueInfos}, + updated_at = #{updatedAt}, + updated_by = #{updatedBy} update s2_dictionary set dim_value_infos = #{dimValueInfos}, - updated_at = #{updatedAt}, - updated_by = #{updatedBy} + updated_at = #{updatedAt}, + updated_by = #{updatedBy} where model_id = #{modelId} - and status = 0 + and status = 0 diff --git a/chat/knowledge/src/main/resources/mapper/DictTaskMapper.xml b/chat/knowledge/src/main/resources/mapper/DictTaskMapper.xml index 990b8a7bd..2f26482a4 100644 --- a/chat/knowledge/src/main/resources/mapper/DictTaskMapper.xml +++ b/chat/knowledge/src/main/resources/mapper/DictTaskMapper.xml @@ -5,7 +5,7 @@ + type="com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO"> @@ -21,8 +21,8 @@ insert into s2_dictionary_task (`name`, description, command, command_md5, status, created_by, progress, elapsed_ms) - values (#{name}, #{description}, #{command}, #{commandMd5}, #{status}, #{createdBy}, - #{progress}, #{elapsedMs}) + values + (#{name}, #{description}, #{command}, #{commandMd5}, #{status}, #{createdBy}, #{progress}, #{elapsedMs}) @@ -54,7 +54,7 @@ and id >= #{id} - and `name` like "%"#{name}"%" + and `name` like "%"#{name}"%" and created_by = #{createdBy} diff --git a/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary.sql b/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary.sql index f1e1cfcd2..ebbdaf1e7 100644 --- a/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary.sql +++ b/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary.sql @@ -1,40 +1,15 @@ -CREATE TABLE IF NOT EXISTS `s2_dictionary` -( - `id` bigint -( - 20 -) unsigned NOT NULL AUTO_INCREMENT, - `item_id` bigint -( - 20 -) DEFAULT NULL COMMENT '对应维度id、指标id等', - `type` varchar -( - 50 -) DEFAULT NULL COMMENT '对应维度、指标等', - `black_list` mediumtext COMMENT '字典黑名单', - `white_list` mediumtext COMMENT '字典白名单', - `rule_list` mediumtext COMMENT '字典规则', - `is_dict_Info` tinyint -( - 1 -) NOT NULL DEFAULT '0' COMMENT '1-开启写入字典,0-不开启', - `created_at` datetime NOT NULL COMMENT '创建时间', - `updated_at` datetime NOT NULL COMMENT '更新时间', - `created_by` varchar -( - 100 -) NOT NULL COMMENT '创建人', - `updated_by` varchar -( - 100 -) DEFAULT NULL COMMENT '更新人', - `is_deleted` tinyint -( - 1 -) NOT NULL DEFAULT '0' COMMENT '1-删除,0-可用', - PRIMARY KEY -( - `id` -) - ) COMMENT='字典配置信息表' +CREATE TABLE IF NOT EXISTS `s2_dictionary` ( +`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, +`item_id` bigint(20) DEFAULT NULL COMMENT '对应维度id、指标id等', +`type` varchar(50) DEFAULT NULL COMMENT '对应维度、指标等', +`black_list` mediumtext COMMENT '字典黑名单', +`white_list` mediumtext COMMENT '字典白名单', +`rule_list` mediumtext COMMENT '字典规则', +`is_dict_Info` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1-开启写入字典,0-不开启', +`created_at` datetime NOT NULL COMMENT '创建时间', +`updated_at` datetime NOT NULL COMMENT '更新时间', +`created_by` varchar(100) NOT NULL COMMENT '创建人', +`updated_by` varchar(100) DEFAULT NULL COMMENT '更新人', +`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1-删除,0-可用', + PRIMARY KEY (`id`) +) COMMENT='字典配置信息表' diff --git a/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary_task.sql b/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary_task.sql index 22f0dc716..3744f3106 100644 --- a/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary_task.sql +++ b/chat/knowledge/src/main/resources/sql.ddl/s2_dictionary_task.sql @@ -1,33 +1,11 @@ -CREATE TABLE IF NOT EXISTS `s2_dictionary_task` -( - `id` bigint -( - 20 -) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar -( - 255 -) NOT NULL COMMENT '任务名称', - `description` varchar -( - 255 -) NOT NULL COMMENT '任务描述', - `command` mediumtext NOT NULL COMMENT '任务请求参数', - `status` int -( - 10 -) NOT NULL COMMENT '任务最终运行状态', - `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `created_by` varchar -( - 100 -) NOT NULL COMMENT '创建人', - `elapsed_ms` bigint -( - 10 -) DEFAULT NULL COMMENT '任务耗时', - PRIMARY KEY -( - `id` -) - ) COMMENT='字典任务信息表' +CREATE TABLE IF NOT EXISTS `s2_dictionary_task` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL COMMENT '任务名称', + `description` varchar(255) NOT NULL COMMENT '任务描述', + `command` mediumtext NOT NULL COMMENT '任务请求参数', + `status` int(10) NOT NULL COMMENT '任务最终运行状态', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `created_by` varchar(100) NOT NULL COMMENT '创建人', + `elapsed_ms` bigint(10) DEFAULT NULL COMMENT '任务耗时', + PRIMARY KEY (`id`) +)COMMENT='字典任务信息表' diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml index 47cd1044e..a4fbeaaa9 100644 --- a/checkstyle/checkstyle.xml +++ b/checkstyle/checkstyle.xml @@ -7,10 +7,9 @@ - - + diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/Aggregator.java b/common/src/main/java/com/tencent/supersonic/common/pojo/Aggregator.java index 0d95ba049..e535de293 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/Aggregator.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/Aggregator.java @@ -1,8 +1,10 @@ package com.tencent.supersonic.common.pojo; import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; + import java.util.List; import javax.validation.constraints.NotBlank; + import lombok.Data; @Data diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/Order.java b/common/src/main/java/com/tencent/supersonic/common/pojo/Order.java index a1ffd706d..9e8b70b36 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/Order.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/Order.java @@ -4,6 +4,7 @@ import static com.tencent.supersonic.common.pojo.Constants.ASC_UPPER; import com.google.common.base.Objects; import javax.validation.constraints.NotBlank; + import lombok.Data; @Data diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/QueryAuthorization.java b/common/src/main/java/com/tencent/supersonic/common/pojo/QueryAuthorization.java index 443b88b4e..798c84450 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/QueryAuthorization.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/QueryAuthorization.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.common.pojo; import java.util.List; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/ResultData.java b/common/src/main/java/com/tencent/supersonic/common/pojo/ResultData.java index 6ac6e94f0..0314ec35c 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/ResultData.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/ResultData.java @@ -7,7 +7,6 @@ import lombok.Data; */ @Data public class ResultData { - private int code; private String msg; private T data; diff --git a/common/src/main/java/com/tencent/supersonic/common/util/DatePeriodEnum.java b/common/src/main/java/com/tencent/supersonic/common/util/DatePeriodEnum.java index 0f7eea279..be9139f78 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/DatePeriodEnum.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/DatePeriodEnum.java @@ -1,10 +1,19 @@ package com.tencent.supersonic.common.util; public enum DatePeriodEnum { - DAY, - WEEK, - MONTH, - YEAR; + DAY("日"), + WEEK("周"), + MONTH("月"), + YEAR("年"); + private String chName; + + DatePeriodEnum(String chName) { + this.chName = chName; + } + + public String getChName() { + return chName; + } public static DatePeriodEnum get(String period) { for (DatePeriodEnum value : values()) { @@ -14,4 +23,6 @@ public enum DatePeriodEnum { } return null; } + + } diff --git a/common/src/main/java/com/tencent/supersonic/common/util/JsonUtil.java b/common/src/main/java/com/tencent/supersonic/common/util/JsonUtil.java index 11417f064..eb1cdf24e 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/JsonUtil.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/JsonUtil.java @@ -12,7 +12,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.type.CollectionType; import com.fasterxml.jackson.databind.type.MapType; import com.fasterxml.jackson.databind.type.TypeFactory; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.io.IOException; import java.nio.charset.Charset; import java.security.InvalidParameterException; @@ -20,6 +19,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; + +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java b/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java index ea5df4e14..7399e787a 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/ThreadContext.java @@ -1,10 +1,10 @@ package com.tencent.supersonic.common.util; -import java.util.Map; import lombok.Builder; import lombok.Data; import lombok.ToString; +import java.util.Map; @Builder @ToString diff --git a/common/src/main/java/com/tencent/supersonic/common/util/calcite/SqlParseUtils.java b/common/src/main/java/com/tencent/supersonic/common/util/calcite/SqlParseUtils.java index 9a88b030f..f85ef63ed 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/calcite/SqlParseUtils.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/calcite/SqlParseUtils.java @@ -40,6 +40,7 @@ public class SqlParseUtils { handlerSQL(sqlNode, sqlParserInfo); + sqlParserInfo.setAllFields(sqlParserInfo.getAllFields().stream().distinct().collect(Collectors.toList())); sqlParserInfo.setSelectFields( diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/DateFunctionHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/DateFunctionHelper.java new file mode 100644 index 000000000..534374e2e --- /dev/null +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/DateFunctionHelper.java @@ -0,0 +1,61 @@ +package com.tencent.supersonic.common.util.jsqlparser; + +import com.tencent.supersonic.common.util.DatePeriodEnum; +import com.tencent.supersonic.common.util.DateUtils; +import java.util.List; +import lombok.extern.slf4j.Slf4j; +import net.sf.jsqlparser.expression.DoubleValue; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.operators.relational.ComparisonOperator; + +@Slf4j +public class DateFunctionHelper { + + public static final String DATE_FUNCTION = "datediff"; + public static final double HALF_YEAR = 0.5d; + public static final int SIX_MONTH = 6; + public static final String EQUAL = "="; + + public static String getStartDateStr(ComparisonOperator minorThanEquals, List expressions) { + String unitValue = getUnit(expressions); + String dateValue = getEndDateValue(expressions); + String dateStr = ""; + Expression rightExpression = minorThanEquals.getRightExpression(); + DatePeriodEnum datePeriodEnum = DatePeriodEnum.get(unitValue); + if (rightExpression instanceof DoubleValue) { + DoubleValue value = (DoubleValue) rightExpression; + double doubleValue = value.getValue(); + if (DatePeriodEnum.YEAR.equals(datePeriodEnum) && doubleValue == HALF_YEAR) { + datePeriodEnum = DatePeriodEnum.MONTH; + dateStr = DateUtils.getBeforeDate(dateValue, SIX_MONTH, datePeriodEnum); + } + } else if (rightExpression instanceof LongValue) { + LongValue value = (LongValue) rightExpression; + long doubleValue = value.getValue(); + dateStr = DateUtils.getBeforeDate(dateValue, (int) doubleValue, datePeriodEnum); + } + return dateStr; + } + + public static String getEndDateOperator(ComparisonOperator comparisonOperator) { + String operator = comparisonOperator.getStringExpression(); + if (EQUAL.equalsIgnoreCase(operator)) { + operator = "<="; + } + return operator; + } + + public static String getEndDateValue(List leftExpressions) { + StringValue date = (StringValue) leftExpressions.get(2); + return date.getValue(); + } + + private static String getUnit(List expressions) { + StringValue unit = (StringValue) expressions.get(0); + return unit.getValue(); + } + + +} \ No newline at end of file diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java index 112a78520..0d592ffe1 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java @@ -1,9 +1,15 @@ package com.tencent.supersonic.common.util.jsqlparser; +import com.tencent.supersonic.common.util.DatePeriodEnum; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; import java.util.Set; +import java.util.stream.Collectors; import net.sf.jsqlparser.expression.DoubleValue; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.ExpressionVisitorAdapter; +import net.sf.jsqlparser.expression.Function; import net.sf.jsqlparser.expression.LongValue; import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.relational.ComparisonOperator; @@ -13,6 +19,7 @@ import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals; import net.sf.jsqlparser.expression.operators.relational.MinorThan; import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals; import net.sf.jsqlparser.schema.Column; +import org.apache.commons.collections.CollectionUtils; public class FieldAndValueAcquireVisitor extends ExpressionVisitorAdapter { @@ -66,19 +73,42 @@ public class FieldAndValueAcquireVisitor extends ExpressionVisitorAdapter { columnName = column.getColumnName(); filterExpression.setFieldName(columnName); } - if (rightExpression instanceof StringValue) { - StringValue stringValue = (StringValue) rightExpression; - filterExpression.setFieldValue(stringValue.getValue()); - } - if (rightExpression instanceof DoubleValue) { - DoubleValue doubleValue = (DoubleValue) rightExpression; - filterExpression.setFieldValue(doubleValue.getValue()); - } - if (rightExpression instanceof LongValue) { - LongValue longValue = (LongValue) rightExpression; - filterExpression.setFieldValue(longValue.getValue()); + if (leftExpression instanceof Function) { + Function leftExpressionFunction = (Function) leftExpression; + String dateFunction = leftExpressionFunction.getName().toUpperCase(); + List collect = Arrays.stream(DatePeriodEnum.values()).collect(Collectors.toList()); + DatePeriodEnum periodEnum = DatePeriodEnum.get(dateFunction); + if (Objects.nonNull(periodEnum) && collect.contains(periodEnum)) { + List leftExpressions = leftExpressionFunction.getParameters().getExpressions(); + if (CollectionUtils.isEmpty(leftExpressions) || leftExpressions.size() < 1) { + return filterExpression; + } + Column field = (Column) leftExpressions.get(0); + filterExpression.setFieldName(field.getColumnName()); + filterExpression.setFieldValue(getFieldValue(rightExpression) + periodEnum.getChName()); + filterExpression.setOperator(expr.getStringExpression()); + return filterExpression; + } } + + filterExpression.setFieldValue(getFieldValue(rightExpression)); filterExpression.setOperator(expr.getStringExpression()); return filterExpression; } + + private Object getFieldValue(Expression rightExpression) { + if (rightExpression instanceof StringValue) { + StringValue stringValue = (StringValue) rightExpression; + return stringValue.getValue(); + } + if (rightExpression instanceof DoubleValue) { + DoubleValue doubleValue = (DoubleValue) rightExpression; + return doubleValue.getValue(); + } + if (rightExpression instanceof LongValue) { + LongValue longValue = (LongValue) rightExpression; + return longValue.getValue(); + } + return null; + } } \ No newline at end of file diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldlValueReplaceVisitor.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldlValueReplaceVisitor.java new file mode 100644 index 000000000..915629992 --- /dev/null +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldlValueReplaceVisitor.java @@ -0,0 +1,54 @@ +package com.tencent.supersonic.common.util.jsqlparser; + +import java.util.Map; +import java.util.Objects; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.ExpressionVisitorAdapter; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.operators.relational.EqualsTo; +import net.sf.jsqlparser.schema.Column; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; + +public class FieldlValueReplaceVisitor extends ExpressionVisitorAdapter { + + private Map> filedNameToValueMap; + + public FieldlValueReplaceVisitor(Map> filedNameToValueMap) { + this.filedNameToValueMap = filedNameToValueMap; + } + + @Override + public void visit(EqualsTo expr) { + Expression leftExpression = expr.getLeftExpression(); + Expression rightExpression = expr.getRightExpression(); + if (!(rightExpression instanceof StringValue)) { + return; + } + if (!(leftExpression instanceof Column)) { + return; + } + if (CollectionUtils.isEmpty(filedNameToValueMap)) { + return; + } + if (Objects.isNull(rightExpression) || Objects.isNull(leftExpression)) { + return; + } + Column leftColumnName = (Column) leftExpression; + StringValue rightStringValue = (StringValue) rightExpression; + + String columnName = leftColumnName.getColumnName(); + if (StringUtils.isEmpty(columnName)) { + return; + } + Map valueMap = filedNameToValueMap.get(columnName); + if (Objects.isNull(valueMap) || valueMap.isEmpty()) { + return; + } + String replaceValue = valueMap.get(rightStringValue.getValue()); + if (StringUtils.isNotEmpty(replaceValue)) { + rightStringValue.setValue(replaceValue); + } + } + +} \ No newline at end of file diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledValueReplaceVisitor.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledNameReplaceVisitor.java similarity index 90% rename from common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledValueReplaceVisitor.java rename to common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledNameReplaceVisitor.java index 884baa708..fed24f0fd 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledValueReplaceVisitor.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FiledNameReplaceVisitor.java @@ -10,11 +10,11 @@ import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.schema.Column; import org.springframework.util.CollectionUtils; -public class FiledValueReplaceVisitor extends ExpressionVisitorAdapter { +public class FiledNameReplaceVisitor extends ExpressionVisitorAdapter { private Map> fieldValueToFieldNames; - public FiledValueReplaceVisitor(Map> fieldValueToFieldNames) { + public FiledNameReplaceVisitor(Map> fieldValueToFieldNames) { this.fieldValueToFieldNames = fieldValueToFieldNames; } diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FunctionReplaceVisitor.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FunctionReplaceVisitor.java index 34b8e608d..8fcd0afe4 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FunctionReplaceVisitor.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FunctionReplaceVisitor.java @@ -1,19 +1,14 @@ package com.tencent.supersonic.common.util.jsqlparser; -import com.tencent.supersonic.common.util.DatePeriodEnum; -import com.tencent.supersonic.common.util.DateUtils; import com.tencent.supersonic.common.util.StringUtil; import java.util.ArrayList; import java.util.List; import java.util.Objects; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.JSQLParserException; -import net.sf.jsqlparser.expression.DoubleValue; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.ExpressionVisitorAdapter; import net.sf.jsqlparser.expression.Function; -import net.sf.jsqlparser.expression.LongValue; -import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.relational.ComparisonOperator; import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.expression.operators.relational.GreaterThan; @@ -27,10 +22,6 @@ import org.apache.commons.collections.CollectionUtils; @Slf4j public class FunctionReplaceVisitor extends ExpressionVisitorAdapter { - public static final String DATE_FUNCTION = "datediff"; - public static final double HALF_YEAR = 0.5d; - public static final int SIX_MONTH = 6; - public static final String EQUAL = "="; private List waitingForAdds = new ArrayList<>(); @Override @@ -86,7 +77,7 @@ public class FunctionReplaceVisitor extends ExpressionVisitorAdapter { return result; } Function leftExpressionFunction = (Function) leftExpression; - if (!leftExpressionFunction.toString().contains(DATE_FUNCTION)) { + if (!leftExpressionFunction.toString().contains(DateFunctionHelper.DATE_FUNCTION)) { return result; } List leftExpressions = leftExpressionFunction.getParameters().getExpressions(); @@ -96,18 +87,18 @@ public class FunctionReplaceVisitor extends ExpressionVisitorAdapter { Column field = (Column) leftExpressions.get(1); String columnName = field.getColumnName(); try { - String startDateValue = getStartDateStr(comparisonOperator, leftExpressions); - String endDateValue = getEndDateValue(leftExpressions); + String startDateValue = DateFunctionHelper.getStartDateStr(comparisonOperator, leftExpressions); + String endDateValue = DateFunctionHelper.getEndDateValue(leftExpressions); String endDateOperator = comparisonOperator.getStringExpression(); String condExpr = - columnName + StringUtil.getSpaceWrap(getEndDateOperator(comparisonOperator)) + columnName + StringUtil.getSpaceWrap(DateFunctionHelper.getEndDateOperator(comparisonOperator)) + StringUtil.getCommaWrap(endDateValue); ComparisonOperator expression = (ComparisonOperator) CCJSqlParserUtil.parseCondExpression(condExpr); String startDataCondExpr = columnName + StringUtil.getSpaceWrap(startDateOperator) + StringUtil.getCommaWrap(startDateValue); - if (EQUAL.equalsIgnoreCase(endDateOperator)) { + if (DateFunctionHelper.EQUAL.equalsIgnoreCase(endDateOperator)) { result.add(CCJSqlParserUtil.parseCondExpression(condExpr)); expression = (ComparisonOperator) CCJSqlParserUtil.parseCondExpression(" 1 = 1 "); } @@ -128,44 +119,4 @@ public class FunctionReplaceVisitor extends ExpressionVisitorAdapter { return null; } - private String getStartDateStr(ComparisonOperator minorThanEquals, List expressions) { - String unitValue = getUnit(expressions); - String dateValue = getEndDateValue(expressions); - String dateStr = ""; - Expression rightExpression = minorThanEquals.getRightExpression(); - DatePeriodEnum datePeriodEnum = DatePeriodEnum.get(unitValue); - if (rightExpression instanceof DoubleValue) { - DoubleValue value = (DoubleValue) rightExpression; - double doubleValue = value.getValue(); - if (DatePeriodEnum.YEAR.equals(datePeriodEnum) && doubleValue == HALF_YEAR) { - datePeriodEnum = DatePeriodEnum.MONTH; - dateStr = DateUtils.getBeforeDate(dateValue, SIX_MONTH, datePeriodEnum); - } - } else if (rightExpression instanceof LongValue) { - LongValue value = (LongValue) rightExpression; - long doubleValue = value.getValue(); - dateStr = DateUtils.getBeforeDate(dateValue, (int) doubleValue, datePeriodEnum); - } - return dateStr; - } - - private String getEndDateOperator(ComparisonOperator comparisonOperator) { - String operator = comparisonOperator.getStringExpression(); - if (EQUAL.equalsIgnoreCase(operator)) { - operator = "<="; - } - return operator; - } - - private String getEndDateValue(List leftExpressions) { - StringValue date = (StringValue) leftExpressions.get(2); - return date.getValue(); - } - - private String getUnit(List expressions) { - StringValue unit = (StringValue) expressions.get(0); - return unit.getValue(); - } - - } \ No newline at end of file diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserUpdateHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserUpdateHelper.java index e25978fd5..044f08513 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserUpdateHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserUpdateHelper.java @@ -28,16 +28,30 @@ import org.springframework.util.CollectionUtils; @Slf4j public class SqlParserUpdateHelper { - public static String replaceValueFields(String sql, Map> fieldValueToFieldNames) { + public static String replaceValue(String sql, Map> filedNameToValueMap) { Select selectStatement = SqlParserSelectHelper.getSelect(sql); SelectBody selectBody = selectStatement.getSelectBody(); if (!(selectBody instanceof PlainSelect)) { return sql; } PlainSelect plainSelect = (PlainSelect) selectBody; - //1. replace where fields Expression where = plainSelect.getWhere(); - FiledValueReplaceVisitor visitor = new FiledValueReplaceVisitor(fieldValueToFieldNames); + FieldlValueReplaceVisitor visitor = new FieldlValueReplaceVisitor(filedNameToValueMap); + if (Objects.nonNull(where)) { + where.accept(visitor); + } + return selectStatement.toString(); + } + + public static String replaceFieldNameByValue(String sql, Map> fieldValueToFieldNames) { + Select selectStatement = SqlParserSelectHelper.getSelect(sql); + SelectBody selectBody = selectStatement.getSelectBody(); + if (!(selectBody instanceof PlainSelect)) { + return sql; + } + PlainSelect plainSelect = (PlainSelect) selectBody; + Expression where = plainSelect.getWhere(); + FiledNameReplaceVisitor visitor = new FiledNameReplaceVisitor(fieldValueToFieldNames); if (Objects.nonNull(where)) { where.accept(visitor); } diff --git a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java index b34195ca8..d26f9310b 100644 --- a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java @@ -19,6 +19,29 @@ class SqlParserSelectHelperTest { void getWhereFilterExpression() { List filterExpression = SqlParserSelectHelper.getFilterExpression( + "SELECT department, user_id, field_a FROM s2 WHERE " + + "sys_imp_date = '2023-08-08' AND YEAR(publish_date) = 2023 " + + " AND user_id = 'alice' ORDER BY pv DESC LIMIT 1"); + + System.out.println(filterExpression); + + filterExpression = SqlParserSelectHelper.getFilterExpression( + "SELECT department, user_id, field_a FROM s2 WHERE sys_imp_date = '2023-08-08' " + + " AND YEAR(publish_date) = 2023 " + + " AND MONTH(publish_date) = 8" + + " AND user_id = 'alice' ORDER BY pv DESC LIMIT 1"); + + System.out.println(filterExpression); + + filterExpression = SqlParserSelectHelper.getFilterExpression( + "SELECT department, user_id, field_a FROM s2 WHERE sys_imp_date = '2023-08-08'" + + " AND YEAR(publish_date) = 2023 " + + " AND MONTH(publish_date) = 8 AND DAY(publish_date) =20 " + + " AND user_id = 'alice' ORDER BY pv DESC LIMIT 1"); + System.out.println(filterExpression); + + + filterExpression = SqlParserSelectHelper.getFilterExpression( "SELECT department, user_id, field_a FROM s2 WHERE sys_imp_date = '2023-08-08' " + " AND user_id = 'alice' AND publish_date = '11' ORDER BY pv DESC LIMIT 1"); diff --git a/launchers/chat/src/main/resources/META-INF/spring.factories b/launchers/chat/src/main/resources/META-INF/spring.factories index 967ebe322..1c1b866e2 100644 --- a/launchers/chat/src/main/resources/META-INF/spring.factories +++ b/launchers/chat/src/main/resources/META-INF/spring.factories @@ -10,7 +10,7 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\ com.tencent.supersonic.chat.parser.rule.AgentCheckParser, \ com.tencent.supersonic.chat.parser.rule.TimeRangeParser, \ com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \ - com.tencent.supersonic.chat.parser.llm.dsl.LLMDSLParser, \ + com.tencent.supersonic.chat.parser.llm.dsl.LLMDslParser, \ com.tencent.supersonic.chat.parser.plugin.function.FunctionBasedParser @@ -32,9 +32,10 @@ com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.chat.api.component.SemanticCorrector=\ com.tencent.supersonic.chat.corrector.DateFieldCorrector, \ - com.tencent.supersonic.chat.corrector.FieldValueCorrector, \ + com.tencent.supersonic.chat.corrector.FieldNameCorrector, \ com.tencent.supersonic.chat.corrector.FieldCorrector, \ com.tencent.supersonic.chat.corrector.FunctionCorrector, \ com.tencent.supersonic.chat.corrector.TableNameCorrector, \ com.tencent.supersonic.chat.corrector.QueryFilterAppend, \ - com.tencent.supersonic.chat.corrector.SelectFieldAppendCorrector + com.tencent.supersonic.chat.corrector.SelectFieldAppendCorrector, \ + com.tencent.supersonic.chat.corrector.FieldValueCorrector \ No newline at end of file diff --git a/launchers/chat/src/main/resources/application-local.yaml b/launchers/chat/src/main/resources/application-local.yaml index 121adbce5..d02e1f1f6 100644 --- a/launchers/chat/src/main/resources/application-local.yaml +++ b/launchers/chat/src/main/resources/application-local.yaml @@ -16,9 +16,13 @@ server: port: 9080 authentication: - enable: false + enable: true exclude: path: /api/auth/user/register,/api/auth/user/login + token: + http: + header: + key: Authorization semantic: url: diff --git a/launchers/chat/src/main/resources/db/chat-data-h2.sql b/launchers/chat/src/main/resources/db/chat-data-h2.sql index 9da3c2336..a5207a41c 100644 --- a/launchers/chat/src/main/resources/db/chat-data-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-data-h2.sql @@ -1,72 +1,29 @@ -insert into s2_user (id, `name`, password, display_name, email) -values (1, 'admin', 'admin', 'admin', 'admin@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (2, 'jack', '123456', 'jack', 'jack@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (3, 'tom', '123456', 'tom', 'tom@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (4, 'lucy', '123456', 'lucy', 'lucy@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); -- insert into s2_chat_config (`id` ,`domain_id` ,`default_metrics`,`visibility`,`entity_info` ,`dictionary_info`,`created_at`,`updated_at`,`created_by`,`updated_by`,`status` ) values (1,1,'[{"metricId":1,"unit":7,"period":"DAY"}]','{"blackDimIdList":[],"blackMetricIdList":[]}','{"entityIds":[2],"names":["用户","用户姓名"],"detailData":{"dimensionIds":[1,2],"metricIds":[2]}}','[{"itemId":1,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":2,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":3,"type":"DIMENSION","blackList":[],"isDictInfo":true}]','2023-05-24 18:00:00','2023-05-25 11:00:00','admin','admin',1); -insert into s2_chat_config (`id`, `domain_id`, `chat_detail_config`, `chat_agg_config`, - `created_at`, `updated_at`, `created_by`, `updated_by`, `status`) -values (1, 1, - '{"visibility":{"blackDimIdList":[1],"blackMetricIdList":[2]},"knowledgeInfos":[{"itemId":2,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[1,2],"metricIds":[1],"unit":7,"period":"DAY"},"entity":null}', - '{"visibility":{"blackDimIdList":[3],"blackMetricIdList":[3]},"knowledgeInfos":[{"itemId":2,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[1,2],"metricIds":[1],"unit":7,"period":"DAY"}}', - '[{"question":"超音数访问次数"},{"question":"超音数访问人数"},{"question":"超音数按部门访问次数"}]', - '2023-05-24 18:00:00', '2023-05-25 11:00:00', 'admin', 'admin', 1); -insert into s2_chat_config (`id`, `domain_id`, `chat_detail_config`, `chat_agg_config`, - `created_at`, `updated_at`, `created_by`, `updated_by`, `status`) -values (2, 2, - '{"visibility":{"blackDimIdList":[],"blackMetricIdList":[]},"knowledgeInfos":[{"itemId":7,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[4,5,6,7],"metricIds":[4],"unit":7,"period":"DAY"},"entity":{"entityId":1,"names":["歌手","艺人"]}}', - '{"visibility":{"blackDimIdList":[],"blackMetricIdList":[]},"knowledgeInfos":[{"itemId":7,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[4,5,6,7],"metricIds":[4],"unit":7,"period":"DAY"}}', - '2023-05-24 18:00:00', '2023-05-25 11:00:00', 'admin', 'admin', 1); +-- insert into s2_chat_config (`id` ,`model_id` ,`chat_detail_config`,`chat_agg_config`,`created_at`,`updated_at`,`created_by`,`updated_by`,`status` ) +-- values (1,1, +-- '{"visibility":{"blackDimIdList":[1],"blackMetricIdList":[2]},"knowledgeInfos":[{"itemId":2,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[1,2],"metricIds":[1],"unit":7,"period":"DAY"},"entity":null}', +-- '{"visibility":{"blackDimIdList":[3],"blackMetricIdList":[3]},"knowledgeInfos":[{"itemId":2,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[1,2],"metricIds":[1],"unit":7,"period":"DAY"}}', +-- '[{"question":"超音数访问次数"},{"question":"超音数访问人数"},{"question":"超音数按部门访问次数"}]', +-- '2023-05-24 18:00:00','2023-05-25 11:00:00','admin','admin',1); +-- insert into s2_chat_config (`id` ,`model_id` ,`chat_detail_config`,`chat_agg_config`,`created_at`,`updated_at`,`created_by`,`updated_by`,`status` ) +-- values (2,2,'{"visibility":{"blackDimIdList":[],"blackMetricIdList":[]},"knowledgeInfos":[{"itemId":7,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[4,5,6,7],"metricIds":[4],"unit":7,"period":"DAY"},"entity":{"entityId":1,"names":["歌手","艺人"]}}', +-- '{"visibility":{"blackDimIdList":[],"blackMetricIdList":[]},"knowledgeInfos":[{"itemId":7,"type":"DIMENSION","searchEnable":true}],"chatDefaultConfig":{"dimensionIds":[4,5,6,7],"metricIds":[4],"unit":7,"period":"DAY"}}', +-- '2023-05-24 18:00:00','2023-05-25 11:00:00','admin','admin',1); -insert into s2_chat (chat_id, `chat_name`, create_time, last_time, creator, last_question, - is_delete, is_top) -values (1, '超音数访问统计', '2023-06-10 10:00:52.495', '2023-06-10 10:00:52', 'admin', '您好,欢迎使用内容智能小Q', - '0', '0'); -insert into s2_chat (chat_id, `chat_name`, create_time, last_time, creator, last_question, - is_delete, is_top) -values (2, '用户访问统计', '2023-06-10 10:01:04.528', '2023-06-10 10:01:04', 'admin', '您好,欢迎使用内容智能小Q', - '0', '0'); +insert into s2_chat (chat_id, `chat_name`, create_time, last_time, creator,last_question,is_delete,is_top) values (1, '超音数访问统计','2023-06-10 10:00:52.495','2023-06-10 10:00:52','admin','您好,欢迎使用内容智能小Q','0','0'); +insert into s2_chat (chat_id, `chat_name`, create_time, last_time, creator,last_question,is_delete,is_top) values (2, '用户访问统计','2023-06-10 10:01:04.528','2023-06-10 10:01:04','admin','您好,欢迎使用内容智能小Q','0','0'); -insert into s2_chat_context (chat_id, modified_at, `user`, `query_text`, `semantic_parse`, ext_data) -VALUES (1, '2023-06-10 10:40:49.877', 'admin', '访问', - '{"queryMode":"METRIC_ORDERBY","aggType":"NONE","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"nativeQuery":false}', - 'admin'); -insert into s2_chat_context (chat_id, modified_at, `user`, `query_text`, `semantic_parse`, ext_data) -VALUES (2, '2023-06-10 10:42:02.184', 'null', '访问', - '{"queryMode":"METRIC_ORDERBY","aggType":"NONE","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"nativeQuery":false}', - 'null'); +insert into s2_chat_context (chat_id, modified_at , `user`, `query_text`, `semantic_parse` ,ext_data) VALUES(1, '2023-06-10 10:40:49.877', 'admin', '访问', '{"queryMode":"METRIC_ORDERBY","aggType":"NONE","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"nativeQuery":false}', 'admin'); +insert into s2_chat_context (chat_id, modified_at , `user`, `query_text`, `semantic_parse` ,ext_data) VALUES(2, '2023-06-10 10:42:02.184', 'null', '访问', '{"queryMode":"METRIC_ORDERBY","aggType":"NONE","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"nativeQuery":false}', 'null'); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (1, '2023-06-10 10:39:55.178', '超音数 访问次数', 'admin', 0, 1, - '{"queryMode":"METRIC_DOMAIN","querySql":"SELECT `sys_imp_date` , `pv` FROM ( SELECT `sys_imp_date` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` FROM ( SELECT `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_f370` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_DOMAIN","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","pv":11},{"sys_imp_date":"2023-06-04","pv":14},{"sys_imp_date":"2023-06-05","pv":1},{"sys_imp_date":"2023-06-06","pv":19},{"sys_imp_date":"2023-06-07","pv":18},{"sys_imp_date":"2023-06-08","pv":24},{"sys_imp_date":"2023-06-09","pv":23}]}', - 0, ''); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (2, '2023-06-10 10:40:12.259', '按页面', 'admin', 0, 1, - '{"queryMode":"METRIC_ORDERBY","querySql":"SELECT `sys_imp_date` , `page` , `pv` FROM ( SELECT `sys_imp_date` , `page` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` , `page` FROM ( SELECT `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` , `page` AS `page` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_ecf5` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` , `page` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"页面","type":"VARCHAR","nameEn":"page","showType":"CATEGORY","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_ORDERBY","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","page":"p1","pv":2},{"sys_imp_date":"2023-06-03","page":"p2","pv":3},{"sys_imp_date":"2023-06-03","page":"p3","pv":2},{"sys_imp_date":"2023-06-03","page":"p4","pv":1},{"sys_imp_date":"2023-06-03","page":"p5","pv":3},{"sys_imp_date":"2023-06-04","page":"p1","pv":3},{"sys_imp_date":"2023-06-04","page":"p2","pv":1},{"sys_imp_date":"2023-06-04","page":"p3","pv":2},{"sys_imp_date":"2023-06-04","page":"p4","pv":4},{"sys_imp_date":"2023-06-04","page":"p5","pv":4}]}', - 0, ''); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (3, '2023-06-10 10:40:49.877', '访问', 'admin', 0, 1, - '{"queryMode":"METRIC_ORDERBY","querySql":"SELECT `sys_imp_date` , `page` , `uv` , `pv` FROM ( SELECT `sys_imp_date` , `page` , `s2_pv_uv_statis_uv` AS `uv` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT COUNT ( DISTINCT `s2_pv_uv_statis_uv` ) AS `s2_pv_uv_statis_uv` , SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` , `page` FROM ( SELECT `uv` AS `s2_pv_uv_statis_uv` , `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` , `page` AS `page` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_022c` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` , `page` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"页面","type":"VARCHAR","nameEn":"page","showType":"CATEGORY","authorized":true},{"name":"访问人数","type":"BIGINT","nameEn":"uv","showType":"NUMBER","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_ORDERBY","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","page":"p1","uv":2,"pv":2},{"sys_imp_date":"2023-06-03","page":"p2","uv":3,"pv":3},{"sys_imp_date":"2023-06-03","page":"p3","uv":2,"pv":2},{"sys_imp_date":"2023-06-03","page":"p4","uv":1,"pv":1},{"sys_imp_date":"2023-06-03","page":"p5","uv":3,"pv":3},{"sys_imp_date":"2023-06-04","page":"p1","uv":2,"pv":3},{"sys_imp_date":"2023-06-04","page":"p2","uv":1,"pv":1},{"sys_imp_date":"2023-06-04","page":"p3","uv":2,"pv":2},{"sys_imp_date":"2023-06-04","page":"p4","uv":3,"pv":4},{"sys_imp_date":"2023-06-04","page":"p5","uv":3,"pv":4}]}', - 0, ''); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (4, '2023-06-10 10:41:18.589', 'alice 访问次数', 'admin', 0, 2, - '{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `pv` FROM ( SELECT `sys_imp_date` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` FROM ( SELECT `user_name` , `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_b825` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","pv":2},{"sys_imp_date":"2023-06-04","pv":2},{"sys_imp_date":"2023-06-06","pv":2},{"sys_imp_date":"2023-06-07","pv":2},{"sys_imp_date":"2023-06-08","pv":5},{"sys_imp_date":"2023-06-09","pv":2}]}', - 0, ''); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (5, '2023-06-10 10:41:48.211', '停留时长', 'admin', 0, 2, - '{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `stay_hours` FROM ( SELECT `sys_imp_date` , `s2_stay_time_statis_stay_hours` AS `stay_hours` FROM ( SELECT SUM ( `s2_stay_time_statis_stay_hours` ) AS `s2_stay_time_statis_stay_hours` , `sys_imp_date` FROM ( SELECT `user_name` , `stay_hours` AS `s2_stay_time_statis_stay_hours` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `page` , `user_name` , `stay_hours` FROM `s2_stay_time_statis` ) AS `s2_stay_time_statis` ) AS `src00_s2_stay_time_statis_df18` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_stay_time_statis_0` ) AS `s2_stay_time_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"停留时长","type":"DOUBLE","nameEn":"stay_hours","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":1,"name":"停留时长","bizName":"stay_hours","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","stay_hours":0.5963801306980994},{"sys_imp_date":"2023-06-04","stay_hours":1.5120376931855422},{"sys_imp_date":"2023-06-06","stay_hours":3.7790223355266317},{"sys_imp_date":"2023-06-07","stay_hours":0.8654528466186735},{"sys_imp_date":"2023-06-08","stay_hours":0.9796159603778489},{"sys_imp_date":"2023-06-09","stay_hours":0.6705580511822682}]}', - 0, ''); -insert into s2_chat_query (`question_id`, `create_time`, `query_text`, `user_name`, `query_state`, - `chat_id`, `query_response`, `score`, `feedback`) -VALUES (6, '2023-06-10 10:42:02.184', '访问', 'admin', 0, 2, - '{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `stay_hours` FROM ( SELECT `sys_imp_date` , `s2_stay_time_statis_stay_hours` AS `stay_hours` FROM ( SELECT SUM ( `s2_stay_time_statis_stay_hours` ) AS `s2_stay_time_statis_stay_hours` , `sys_imp_date` FROM ( SELECT `user_name` , `stay_hours` AS `s2_stay_time_statis_stay_hours` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `page` , `user_name` , `stay_hours` FROM `s2_stay_time_statis` ) AS `s2_stay_time_statis` ) AS `src00_s2_stay_time_statis_df18` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_stay_time_statis_0` ) AS `s2_stay_time_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"停留时长","type":"DOUBLE","nameEn":"stay_hours","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":1,"name":"停留时长","bizName":"stay_hours","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","stay_hours":0.5963801306980994},{"sys_imp_date":"2023-06-04","stay_hours":1.5120376931855422},{"sys_imp_date":"2023-06-06","stay_hours":3.7790223355266317},{"sys_imp_date":"2023-06-07","stay_hours":0.8654528466186735},{"sys_imp_date":"2023-06-08","stay_hours":0.9796159603778489},{"sys_imp_date":"2023-06-09","stay_hours":0.6705580511822682}]}', - 0, ''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(1, '2023-06-10 10:39:55.178', '超音数 访问次数', 'admin',0,1,'{"queryMode":"METRIC_DOMAIN","querySql":"SELECT `sys_imp_date` , `pv` FROM ( SELECT `sys_imp_date` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` FROM ( SELECT `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_f370` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_DOMAIN","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","pv":11},{"sys_imp_date":"2023-06-04","pv":14},{"sys_imp_date":"2023-06-05","pv":1},{"sys_imp_date":"2023-06-06","pv":19},{"sys_imp_date":"2023-06-07","pv":18},{"sys_imp_date":"2023-06-08","pv":24},{"sys_imp_date":"2023-06-09","pv":23}]}',0,''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(2, '2023-06-10 10:40:12.259', '按页面', 'admin',0,1,'{"queryMode":"METRIC_ORDERBY","querySql":"SELECT `sys_imp_date` , `page` , `pv` FROM ( SELECT `sys_imp_date` , `page` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` , `page` FROM ( SELECT `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` , `page` AS `page` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_ecf5` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` , `page` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"页面","type":"VARCHAR","nameEn":"page","showType":"CATEGORY","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_ORDERBY","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","page":"p1","pv":2},{"sys_imp_date":"2023-06-03","page":"p2","pv":3},{"sys_imp_date":"2023-06-03","page":"p3","pv":2},{"sys_imp_date":"2023-06-03","page":"p4","pv":1},{"sys_imp_date":"2023-06-03","page":"p5","pv":3},{"sys_imp_date":"2023-06-04","page":"p1","pv":3},{"sys_imp_date":"2023-06-04","page":"p2","pv":1},{"sys_imp_date":"2023-06-04","page":"p3","pv":2},{"sys_imp_date":"2023-06-04","page":"p4","pv":4},{"sys_imp_date":"2023-06-04","page":"p5","pv":4}]}',0,''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(3, '2023-06-10 10:40:49.877', '访问', 'admin',0,1,'{"queryMode":"METRIC_ORDERBY","querySql":"SELECT `sys_imp_date` , `page` , `uv` , `pv` FROM ( SELECT `sys_imp_date` , `page` , `s2_pv_uv_statis_uv` AS `uv` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT COUNT ( DISTINCT `s2_pv_uv_statis_uv` ) AS `s2_pv_uv_statis_uv` , SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` , `page` FROM ( SELECT `uv` AS `s2_pv_uv_statis_uv` , `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` , `page` AS `page` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_022c` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' ) GROUP BY `sys_imp_date` , `page` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"页面","type":"VARCHAR","nameEn":"page","showType":"CATEGORY","authorized":true},{"name":"访问人数","type":"BIGINT","nameEn":"uv","showType":"NUMBER","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"}},"chatContext":{"queryMode":"METRIC_ORDERBY","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":3,"name":"访问人数","bizName":"uv","status":1,"sensitiveLevel":0},{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"id":3,"name":"页面","bizName":"page","status":1,"sensitiveLevel":0},{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","page":"p1","uv":2,"pv":2},{"sys_imp_date":"2023-06-03","page":"p2","uv":3,"pv":3},{"sys_imp_date":"2023-06-03","page":"p3","uv":2,"pv":2},{"sys_imp_date":"2023-06-03","page":"p4","uv":1,"pv":1},{"sys_imp_date":"2023-06-03","page":"p5","uv":3,"pv":3},{"sys_imp_date":"2023-06-04","page":"p1","uv":2,"pv":3},{"sys_imp_date":"2023-06-04","page":"p2","uv":1,"pv":1},{"sys_imp_date":"2023-06-04","page":"p3","uv":2,"pv":2},{"sys_imp_date":"2023-06-04","page":"p4","uv":3,"pv":4},{"sys_imp_date":"2023-06-04","page":"p5","uv":3,"pv":4}]}',0,''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(4, '2023-06-10 10:41:18.589','alice 访问次数','admin',0,2,'{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `pv` FROM ( SELECT `sys_imp_date` , `s2_pv_uv_statis_pv` AS `pv` FROM ( SELECT SUM ( `s2_pv_uv_statis_pv` ) AS `s2_pv_uv_statis_pv` , `sys_imp_date` FROM ( SELECT `user_name` , `pv` AS `s2_pv_uv_statis_pv` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `user_name` , `page` , 1 AS `pv` , `user_name` AS `uv` FROM `s2_pv_uv_statis` ) AS `s2_pv_uv_statis` ) AS `src00_s2_pv_uv_statis_b825` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_pv_uv_statis_0` ) AS `s2_pv_uv_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"访问次数","type":"BIGINT","nameEn":"pv","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":2,"name":"访问次数","bizName":"pv","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","pv":2},{"sys_imp_date":"2023-06-04","pv":2},{"sys_imp_date":"2023-06-06","pv":2},{"sys_imp_date":"2023-06-07","pv":2},{"sys_imp_date":"2023-06-08","pv":5},{"sys_imp_date":"2023-06-09","pv":2}]}',0,''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(5, '2023-06-10 10:41:48.211','停留时长','admin',0,2,'{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `stay_hours` FROM ( SELECT `sys_imp_date` , `s2_stay_time_statis_stay_hours` AS `stay_hours` FROM ( SELECT SUM ( `s2_stay_time_statis_stay_hours` ) AS `s2_stay_time_statis_stay_hours` , `sys_imp_date` FROM ( SELECT `user_name` , `stay_hours` AS `s2_stay_time_statis_stay_hours` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `page` , `user_name` , `stay_hours` FROM `s2_stay_time_statis` ) AS `s2_stay_time_statis` ) AS `src00_s2_stay_time_statis_df18` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_stay_time_statis_0` ) AS `s2_stay_time_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"停留时长","type":"DOUBLE","nameEn":"stay_hours","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":1,"name":"停留时长","bizName":"stay_hours","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","stay_hours":0.5963801306980994},{"sys_imp_date":"2023-06-04","stay_hours":1.5120376931855422},{"sys_imp_date":"2023-06-06","stay_hours":3.7790223355266317},{"sys_imp_date":"2023-06-07","stay_hours":0.8654528466186735},{"sys_imp_date":"2023-06-08","stay_hours":0.9796159603778489},{"sys_imp_date":"2023-06-09","stay_hours":0.6705580511822682}]}',0,''); +insert into s2_chat_query (`question_id`,`create_time`,`query_text`,`user_name`,`query_state`,`chat_id`,`query_result`,`score`,`feedback`) VALUES(6, '2023-06-10 10:42:02.184','访问','admin',0,2,'{"queryMode":"METRIC_FILTER","querySql":"SELECT `sys_imp_date` , `stay_hours` FROM ( SELECT `sys_imp_date` , `s2_stay_time_statis_stay_hours` AS `stay_hours` FROM ( SELECT SUM ( `s2_stay_time_statis_stay_hours` ) AS `s2_stay_time_statis_stay_hours` , `sys_imp_date` FROM ( SELECT `user_name` , `stay_hours` AS `s2_stay_time_statis_stay_hours` , `imp_date` AS `sys_imp_date` FROM ( SELECT `imp_date` , `page` , `user_name` , `stay_hours` FROM `s2_stay_time_statis` ) AS `s2_stay_time_statis` ) AS `src00_s2_stay_time_statis_df18` WHERE ( `sys_imp_date` >= ''2023-06-03'' AND `sys_imp_date` <= ''2023-06-09'' AND `user_name` = ''alice'' ) GROUP BY `sys_imp_date` ) AS `s2_stay_time_statis_0` ) AS `s2_stay_time_statis_1` LIMIT 10","queryState":0,"queryColumns":[{"name":"date","type":"VARCHAR","nameEn":"sys_imp_date","showType":"DATE","authorized":true},{"name":"停留时长","type":"DOUBLE","nameEn":"stay_hours","showType":"NUMBER","authorized":true}],"entityInfo":{"domainInfo":{"itemId":1,"name":"超音数","bizName":"supersonic","words":["用户","用户姓名"],"primaryEntityBizName":"user_name"},"dimensions":[{"itemId":1,"name":"部门","bizName":"department","value":"sales"},{"itemId":2,"name":"用户名","bizName":"user_name","value":"alice"}],"metrics":[{"itemId":2,"name":"访问次数","bizName":"pv","value":"2"}],"entityId":"alice"},"chatContext":{"queryMode":"METRIC_FILTER","domainId":1,"domainName":"超音数","entity":0,"metrics":[{"id":1,"name":"停留时长","bizName":"stay_hours","status":1,"sensitiveLevel":0}],"dimensions":[{"bizName":"sys_imp_date","status":1,"sensitiveLevel":0}],"dimensionFilters":[{"bizName":"user_name","name":"用户名","operator":"=","value":"alice","elementID":2}],"metricFilters":[],"orders":[],"dateInfo":{"dateMode":"RECENT_UNITS","startDate":"2023-06-03","endDate":"2023-06-09","dateList":[],"unit":7,"period":"DAY"},"limit":10,"nativeQuery":false},"queryResults":[{"sys_imp_date":"2023-06-03","stay_hours":0.5963801306980994},{"sys_imp_date":"2023-06-04","stay_hours":1.5120376931855422},{"sys_imp_date":"2023-06-06","stay_hours":3.7790223355266317},{"sys_imp_date":"2023-06-07","stay_hours":0.8654528466186735},{"sys_imp_date":"2023-06-08","stay_hours":0.9796159603778489},{"sys_imp_date":"2023-06-09","stay_hours":0.6705580511822682}]}',0,''); diff --git a/launchers/chat/src/main/resources/db/chat-schema-h2.sql b/launchers/chat/src/main/resources/db/chat-schema-h2.sql index d5e0638de..bf83e93ef 100644 --- a/launchers/chat/src/main/resources/db/chat-schema-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-schema-h2.sql @@ -12,6 +12,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context` 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 , @@ -64,7 +65,7 @@ CREATE TABLE `s2_chat_statistics` CREATE TABLE IF NOT EXISTS `s2_chat_config` ( `id` INT NOT NULL AUTO_INCREMENT, - `domain_id` INT DEFAULT NULL , + `model_id` INT DEFAULT NULL , `chat_detail_config` varchar(655) , `chat_agg_config` varchar(655) , `recommended_questions` varchar(1500) , @@ -143,7 +144,7 @@ CREATE TABLE IF NOT EXISTS `s2_plugin` ( `id` INT AUTO_INCREMENT, `type` varchar(50) NULL, - `domain` varchar(100) NULL, + `model` varchar(100) NULL, `pattern` varchar(500) NULL, `parse_mode` varchar(100) NULL, `parse_mode_config` LONGVARCHAR NULL, diff --git a/launchers/chat/src/main/resources/logback-spring.xml b/launchers/chat/src/main/resources/logback-spring.xml index b6d7a041d..810eda9b3 100644 --- a/launchers/chat/src/main/resources/logback-spring.xml +++ b/launchers/chat/src/main/resources/logback-spring.xml @@ -1,13 +1,13 @@ logback - + - %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n + %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n @@ -46,8 +46,7 @@ - ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 90 @@ -75,8 +74,7 @@ - ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 30 diff --git a/launchers/common/src/main/java/com/tencent/supersonic/advice/RestExceptionHandler.java b/launchers/common/src/main/java/com/tencent/supersonic/advice/RestExceptionHandler.java index c42fe4123..5b62f20ee 100644 --- a/launchers/common/src/main/java/com/tencent/supersonic/advice/RestExceptionHandler.java +++ b/launchers/common/src/main/java/com/tencent/supersonic/advice/RestExceptionHandler.java @@ -1,10 +1,10 @@ package com.tencent.supersonic.advice; -import com.tencent.supersonic.common.pojo.ResultData; -import com.tencent.supersonic.common.pojo.ReturnCode; import com.tencent.supersonic.common.pojo.exception.AccessException; import com.tencent.supersonic.common.pojo.exception.CommonException; import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException; +import com.tencent.supersonic.common.pojo.ResultData; +import com.tencent.supersonic.common.pojo.ReturnCode; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; diff --git a/launchers/semantic/src/main/build/build.xml b/launchers/semantic/src/main/build/build.xml index 977780800..7165bcc00 100644 --- a/launchers/semantic/src/main/build/build.xml +++ b/launchers/semantic/src/main/build/build.xml @@ -1,6 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> bin tar.gz diff --git a/launchers/semantic/src/main/resources/META-INF/spring.factories b/launchers/semantic/src/main/resources/META-INF/spring.factories index 3345b5159..1d40fdda2 100644 --- a/launchers/semantic/src/main/resources/META-INF/spring.factories +++ b/launchers/semantic/src/main/resources/META-INF/spring.factories @@ -1,5 +1,6 @@ com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\ com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor + com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.auth.authentication.adaptor.DefaultUserAdaptor diff --git a/launchers/semantic/src/main/resources/application-local.yaml b/launchers/semantic/src/main/resources/application-local.yaml index 4bfa55b6e..ef83ce3be 100644 --- a/launchers/semantic/src/main/resources/application-local.yaml +++ b/launchers/semantic/src/main/resources/application-local.yaml @@ -18,6 +18,10 @@ spring: data: classpath:db/semantic-data-h2.sql authentication: - enable: false + enable: true exclude: path: /api/auth/user/register,/api/auth/user/login + token: + http: + header: + key: Authorization diff --git a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql index 4e5edc9a0..b9904da13 100644 --- a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql @@ -1,2308 +1,1111 @@ -insert into s2_database (id, domain_id, `name`, description, `type`, config, created_at, created_by, - updated_at, updated_by) -VALUES (1, 1, 'H2数据实例', '', 'h2', - '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', - '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin'); -insert into s2_database (id, domain_id, `name`, description, `type`, config, created_at, created_by, - updated_at, updated_by) -VALUES (2, 2, 'H2数据实例', '', 'h2', - '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', - '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin'); -insert into s2_datasource (id, domain_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (1, 1, '停留时长统计', 's2_stay_time_statis', '停留时长统计', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_stay_time_statis_stay_hours","expr":"stay_hours","isCreateMetric":1,"name":"停留时长"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, page,user_name,stay_hours FROM s2_stay_time_statis"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, domain_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (2, 1, 'PVUV统计', 's2_pv_uv_statis', 'PVUV统计', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","expr":"pv","isCreateMetric":1,"name":"访问次数"},{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","expr":"uv","isCreateMetric":1,"name":"访问人数"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, user_name,page,1 as pv, user_name as uv FROM s2_pv_uv_statis"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, domain_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (3, 1, '用户部门', 'user_department', '用户部门', 1, - '{"dimensions":[{"bizName":"department","dateFormat":"yyyy-MM-dd","expr":"department","isCreateDimension":1,"name":"部门","type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[],"queryType":"sql_query","sqlQuery":"SELECT user_name,department FROM s2_user_department"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, domain_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (4, 2, '艺人库', 'singer', '艺人库', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"act_area","dateFormat":"yyyy-MM-dd","expr":"act_area","isCreateDimension":1,"name":"活跃区域","type":"categorical"},{"bizName":"song_name","dateFormat":"yyyy-MM-dd","expr":"song_name","isCreateDimension":1,"name":"代表作","type":"categorical"},{"bizName":"genre","dateFormat":"yyyy-MM-dd","expr":"genre","isCreateDimension":1,"name":"风格","type":"categorical"}],"identifiers":[{"bizName":"singer_name","name":"歌手名","type":"primary"}],"measures":[{"agg":"sum","bizName":"music_down_cnt","expr":"down_cnt","isCreateMetric":1,"name":"下载量"},{"agg":"sum","bizName":"music_js_play_cnt","expr":"js_play_cnt","isCreateMetric":1,"name":"播放量"},{"agg":"sum","bizName":"music_favor_cnt","expr":"favor_cnt","isCreateMetric":1,"name":"收藏量"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date,singer_name,act_area,song_name,genre,js_play_cnt,down_cnt,favor_cnt FROM singer "}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, domain_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (1, 1, 1, 2, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, domain_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (2, 1, 1, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, domain_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (3, 1, 2, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (1, 1, 3, '部门', 'department', '部门', 1, 0, 'categorical', NULL, 'department', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (2, 1, 1, '用户名', 'user_name', '用户名', 1, 0, 'primary', NULL, 'user_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (3, 1, 2, '页面', 'page', '页面', 1, 2, 'categorical', NULL, 'page', '2023-05-24 00:00:00', - 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (4, 2, 4, '活跃区域', 'act_area', '活跃区域', 1, 2, 'categorical', NULL, 'act_area', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (5, 2, 4, '代表作', 'song_name', '代表作', 1, 2, 'categorical', NULL, 'song_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (6, 2, 4, '风格', 'genre', '风格', 1, 2, 'categorical', NULL, 'genre', '2023-05-24 00:00:00', - 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, domain_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (7, 2, 4, '歌手名', 'singer_name', '歌手名', 1, 2, 'categorical', NULL, 'singer_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, - updated_by, `admin`, admin_org, is_open, viewer, view_org) -VALUES (1, '超音数', 'supersonic', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', - 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin'); -insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, - updated_by, `admin`, admin_org, is_open, viewer, view_org) -VALUES (2, '艺人库', 'singer', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', - 'admin', '', 0, 'admin,tom,jack', 'admin'); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (1, 1, '停留时长', 'stay_hours', '停留时长', 1, 2, 'ATOMIC', - '{"expr":"s2_stay_time_statis_stay_hours","measures":[{"agg":"sum","expr":"stay_hours","isCreateMetric":1,"datasourceId":1,"bizName":"s2_stay_time_statis_stay_hours","name":"s2_stay_time_statis_stay_hours"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (2, 1, '访问次数', 'pv', '访问次数', 1, 0, 'ATOMIC', - ' {"expr":"s2_pv_uv_statis_pv","measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","datasourceId":2,"expr":"pv","isCreateMetric":1,"name":"s2_pv_uv_statis_pv"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (3, 1, '访问人数', 'uv', '访问人数', 1, 0, 'ATOMIC', - ' {"expr":"s2_pv_uv_statis_uv","measures":[{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","datasourceId":2,"expr":"uv","isCreateMetric":1,"name":"s2_pv_uv_statis_uv"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (4, 2, '播放量', 'js_play_cnt', '播放量', 1, 2, 'ATOMIC', - '{"expr":"music_js_play_cnt","measures":[{"agg":"sum","expr":"js_play_cnt","isCreateMetric":1,"datasourceId":4,"bizName":"music_js_play_cnt","name":"music_js_play_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (5, 2, '下载量', 'down_cnt', '下载量', 1, 0, 'ATOMIC', - ' {"expr":"music_down_cnt","measures":[{"agg":"sum","bizName":"music_down_cnt","datasourceId":4,"expr":"down_cnt","isCreateMetric":1,"name":"music_down_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, domain_id, `name`, biz_name, description, status, sensitive_level, - `type`, type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (6, 2, '收藏量', 'favor_cnt', '收藏量', 1, 0, 'ATOMIC', - ' {"expr":"music_favor_cnt","measures":[{"agg":"sum","bizName":"music_favor_cnt","datasourceId":4,"expr":"favor_cnt","isCreateMetric":1,"name":"music_favor_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); +insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, updated_by, `admin`, admin_org, viewer, view_org) VALUES(1, '超音数', 'supersonic', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 'admin,tom,jack', 'admin' ); +insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(1, '超音数', 'supersonic', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','' ); +insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(2, '艺人库', 'singer', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','{"entityId": 7, "names": ["歌手", "艺人"]}' ); +insert into s2_database (id, `name`, description, `type` ,config ,created_at ,created_by ,updated_at ,updated_by, `admin`) VALUES(1, 'H2数据实例', '', 'h2', '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(1, 1, '停留时长统计', 's2_stay_time_statis', '停留时长统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_stay_time_statis_stay_hours","expr":"stay_hours","isCreateMetric":1,"name":"停留时长"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, page,user_name,stay_hours FROM s2_stay_time_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(2, 1, 'PVUV统计', 's2_pv_uv_statis', 'PVUV统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","expr":"pv","isCreateMetric":1,"name":"访问次数"},{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","expr":"uv","isCreateMetric":1,"name":"访问人数"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, user_name,page,1 as pv, user_name as uv FROM s2_pv_uv_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(3, 1, '用户部门', 'user_department', '用户部门', 1, '{"dimensions":[{"bizName":"department","dateFormat":"yyyy-MM-dd","expr":"department","isCreateDimension":1,"name":"部门","type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[],"queryType":"sql_query","sqlQuery":"SELECT user_name,department FROM s2_user_department"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(4, 2, '艺人库', 'singer', '艺人库', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"act_area","dateFormat":"yyyy-MM-dd","expr":"act_area","isCreateDimension":1,"name":"活跃区域","type":"categorical"},{"bizName":"song_name","dateFormat":"yyyy-MM-dd","expr":"song_name","isCreateDimension":1,"name":"代表作","type":"categorical"},{"bizName":"genre","dateFormat":"yyyy-MM-dd","expr":"genre","isCreateDimension":1,"name":"风格","type":"categorical"}],"identifiers":[{"bizName":"singer_name","name":"歌手名","type":"primary"}],"measures":[{"agg":"sum","bizName":"music_down_cnt","expr":"down_cnt","isCreateMetric":1,"name":"下载量"},{"agg":"sum","bizName":"music_js_play_cnt","expr":"js_play_cnt","isCreateMetric":1,"name":"播放量"},{"agg":"sum","bizName":"music_favor_cnt","expr":"favor_cnt","isCreateMetric":1,"name":"收藏量"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date,singer_name,act_area,song_name,genre,js_play_cnt,down_cnt,favor_cnt FROM singer "}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(1, 1, 1, 2, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(2, 1, 1, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(3, 1, 2, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(1, 1, 3, '部门', 'department', '部门', 1, 0, 'categorical', NULL, 'department', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(2, 1, 1, '用户名', 'user_name', '用户名', 1, 0, 'primary', NULL, 'user_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(3, 1, 2, '页面', 'page', '页面', 1, 2, 'categorical', NULL, 'page', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(4, 2, 4, '活跃区域', 'act_area', '活跃区域', 1, 2, 'categorical', NULL, 'act_area', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(5, 2, 4, '代表作', 'song_name', '代表作', 1, 2, 'categorical', NULL, 'song_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(6, 2, 4, '风格', 'genre', '风格', 1, 2, 'categorical', NULL, 'genre', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(7, 2, 4, '歌手名', 'singer_name', '歌手名', 1, 2, 'categorical', NULL, 'singer_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(1, 1, '停留时长', 'stay_hours', '停留时长', 1, 2, 'ATOMIC', '{"expr":"s2_stay_time_statis_stay_hours","measures":[{"agg":"sum","expr":"stay_hours","isCreateMetric":1,"datasourceId":1,"bizName":"s2_stay_time_statis_stay_hours","name":"s2_stay_time_statis_stay_hours"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(2, 1, '访问次数', 'pv', '访问次数', 1, 0, 'ATOMIC', ' {"expr":"s2_pv_uv_statis_pv","measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","datasourceId":2,"expr":"pv","isCreateMetric":1,"name":"s2_pv_uv_statis_pv"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(3, 1, '访问人数', 'uv', '访问人数', 1, 0, 'ATOMIC', ' {"expr":"s2_pv_uv_statis_uv","measures":[{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","datasourceId":2,"expr":"uv","isCreateMetric":1,"name":"s2_pv_uv_statis_uv"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(4, 2, '播放量', 'js_play_cnt', '播放量', 1, 2, 'ATOMIC', '{"expr":"music_js_play_cnt","measures":[{"agg":"sum","expr":"js_play_cnt","isCreateMetric":1,"datasourceId":4,"bizName":"music_js_play_cnt","name":"music_js_play_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(5, 2, '下载量', 'down_cnt', '下载量', 1, 0, 'ATOMIC', ' {"expr":"music_down_cnt","measures":[{"agg":"sum","bizName":"music_down_cnt","datasourceId":4,"expr":"down_cnt","isCreateMetric":1,"name":"music_down_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(6, 2, '收藏量', 'favor_cnt', '收藏量', 1, 0, 'ATOMIC', ' {"expr":"music_favor_cnt","measures":[{"agg":"sum","bizName":"music_favor_cnt","datasourceId":4,"expr":"favor_cnt","isCreateMetric":1,"name":"music_favor_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); -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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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 (1, 'dimension', 'yyyy-MM-dd', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '2023-06-01', 'admin', '2023-06-01', 'admin'); insert into s2_auth_groups (group_id, config) -values (1, - '{"domainId":"1","name":"admin-permission","groupId":1,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":[""],"dimensionFilterDescription":"授权admin 页面和停留时长权限","authorizedUsers":["admin"],"authorizedDepartmentIds":[]}'); +values (1, '{"domainId":"1","name":"admin-permission","groupId":1,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":[""],"dimensionFilterDescription":"授权admin 页面和停留时长权限","authorizedUsers":["admin"],"authorizedDepartmentIds":[]}'); insert into s2_auth_groups (group_id, config) -values (2, - '{"domainId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); +values (2, '{"domainId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); -insert into s2_user (id, `name`, password, display_name, email) -values (1, 'admin', 'admin', 'admin', 'admin@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (2, 'jack', '123456', 'jack', 'jack@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (3, 'tom', '123456', 'tom', 'tom@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (4, 'lucy', '123456', 'lucy', 'lucy@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); ---demo data for semantic and chat -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'); +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'); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7636857512911863', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.17663327393462436', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.38943688941552057', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.2715819955225307', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.9358210273119568', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9364586435510802', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9707723036513162', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.8497763866782723', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.15504417761372413', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9507563118298399', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9746364180572994', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.12869214941133378', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.3024970533288409', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.6639702099980812', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', '0.4929901454858626', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.06853040276026445', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8488086078299616', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.8589111177125592', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.5576357066482228', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.8047888670006846', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.766944548494366', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.5280072184505449', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.9693343356046343', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.12805203958456424', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.16963603387027637', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5901202956521101', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.12710364646712236', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.6346530909156196', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.12461289103639872', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.9863947334662437', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.48899961064192987', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', '0.5382796792688207', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', '0.3506568687014143', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.8633072449771709', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.13999135315363687', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.07258740493845894', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5244413940436958', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.13258670732966138', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.6015982054464575', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.05513158944480323', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.6707121735296985', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.9330440339006469', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.5630674323371607', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.8720647566229917', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8331899070546519', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.6712876436249856', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.6694409980332703', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.3703307480606334', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.775368688472696', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.9151205443267096', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.09543108823305857', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.7893992120771057', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.5119923080070498', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.49906724167974936', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.046258282700961884', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.44843595680103954', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.7743935471689718', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5855299615656824', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.9412963512379853', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.8383247587082538', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', '0.14517876867236124', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.9327229861441061', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.19042326582894153', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.6029067818254513', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.21715964747214422', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.34259842721045974', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.7064419016593382', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', '0.5725636566517865', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.22332539583809208', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.8049036189055911', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.6029674758974956', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.11884976360561716', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', '0.7124916829130662', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.5893693718556829', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.602073304496253', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.10491061160039927', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.9006548872378379', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.8545144244288455', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.16915384987875726', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.2271640700690446', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.7807518577160636', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.8919859648888653', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.1564450687270359', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.5840549187653847', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.2213255596777869', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.07868261880306426', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.07710010861455818', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.5131249730162654', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5035035055368601', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8996978291173905', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.057442290722216294', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6443079066865616', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.7398098480748726', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.9835694815034591', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', '0.9879213445635557', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.4020136688147111', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.6698797170128024', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.17325132416789113', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.5784229486763606', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9185978183932058', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.5474783153973963', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.9730731954700215', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.5390873359288765', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.20522241320887713', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4088233242325021', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.7608047695853417', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.2749731221085713', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.06154055374702494', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.460668002022406', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.4474746325306228', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.5761666885467472', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.33233441360339655', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.7426534909874778', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.5841437875889118', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2818296500094526', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.8670888843915217', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.5249294365740248', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.5483356748008438', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.7278566847412673', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.6779976902157362', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.09995341651736978', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.4528538159233879', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5870756885301056', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9842091927290255', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.04580936015706816', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.8814678270145769', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.06517379256096412', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8769832364187129', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.584562279025023', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8102404090621375', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.11481653429176686', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.43422888918962554', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.0684414272594508', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.976546463969412', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.617906858141431', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.08663740247579998', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.7124944606691416', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.1321700521239627', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', '0.3078946609431664', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.6149442855237194', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', '0.5963801306980994', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.6999542038973406', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.4599112653446624', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.20300901401048832', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.39989705958717037', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.2486378364940327', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.16880398079144077', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.73927288385526', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8645283506689198', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.3266940826759587', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.9195490073037541', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.9452523036658287', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.21269683438120535', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.7377502855387184', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.38981597634408716', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7001799391999863', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6616720024008785', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', '0.497721735058096', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.22255613760959603', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.05247640233319417', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.27237572107833363', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.9529452406380252', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.28243045060463157', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.17880444250082506', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.035050038002381156', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.840803223728221', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5318457377361356', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9280332892460665', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.752354382202208', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.1866528331789219', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.7016165545791373', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.4191547989960899', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7025516699007639', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.6160127317884274', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.91223094958137', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.4383056089013998', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.595750781166582', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.9472349338730268', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', '0.0519104588842193', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.48043983034526205', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.14754707786497478', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.36124288370035695', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.21777919493494613', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.22637666702475057', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.9378215576942598', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.3309229261144562', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.7602880453727515', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.9470462487873785', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.6770215935547629', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.1586074803669385', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.2754855564794071', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.8355347738454384', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.7251813505573811', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.006606625589642534', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.304832277753024', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.026368662837989554', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.6855977520602776', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.8193746826441749', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.021179295102459972', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.1533849522536005', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.18893553542301778', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.39870999343833624', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.9985665103520182', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.6961441157700171', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.9861933923851885', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.993076500099477', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.4320547269058953', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.18441071030375877', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.1501504986117118', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.252021845734527', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', '0.24442701577183745', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.07563738855797564', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.34247820646440985', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.9456979276862031', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.19494357263973816', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.9371493867882469', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6136241316589367', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.8922330760877784', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.9001986074661864', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.4889702884422866', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.2689551234431401', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.5223573993758465', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.05042295556527243', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.2717147121880483', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7397093309370814', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.157064341631733', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', '0.7213399784998017', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.764081440588005', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.7514070600074144', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.611647412825278', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.6600796877195596', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.8942204153751679', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.07398121085929721', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.1652506990439564', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5849759516111703', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.1672502732600889', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.7836135556233219', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.26181269644936356', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.6577275876355586', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.3067293364197956', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.8608288543866495', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.814283434116926', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.33993584425872936', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'john', '0.010812798859160089', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5156558224263926', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.46320035330198406', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2651020283994786', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.42467241545664147', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.3695905136678498', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.15269122123348644', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6755688670583248', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.39064306179528907', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.36479296691952023', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', '0.5069249157662691', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.4785315495532231', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.7582526218052175', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.42064109605717914', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.5587757581237022', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.3561686564964428', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7101688305173135', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.6518061375522985', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.7564485884156583', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.36531347293134464', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5201689359070235', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7138792929290383', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.9751003716333827', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.5281906318027629', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.6291356541485003', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.1938712974807698', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', '0.6267850210775459', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.4469970592043767', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.7690659124175409', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.13335067838090386', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.2966621725922035', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.5740481445089863', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.838028890036331', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.8094354537628714', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.5552924586108698', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.49150373927678315', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.7264346889377966', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.9292830287297702', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.3905616258240767', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.15912349648571666', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.6030082006630102', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.8712354035243679', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.7685306377211826', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.2869913942171415', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.7142615166855639', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.5625978475154423', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.13611601734791123', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.6977333962685311', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.35140477709778295', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.8805119222967716', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7014124236538637', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.12759538003439375', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.7515403792213445', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.03700239289885987', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.31674618364630946', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.4491378834800146', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.6742764131652571', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.5286362221140248', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.007890326473113496', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8046560540950831', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7198364371127147', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.7400546712169153', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.16859870460868698', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.8462852684569557', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.010211452005474353', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8617802368201087', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.21667479046797633', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.8667689615468714', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.16140709875863557', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.16713368182304666', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.8957484629768053', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', '0.457835758220534', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.9435170960198477', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.9699253608913104', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.2309897429566834', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.7879705066452681', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.20795869239817255', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.4110352469382019', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.4979592772533561', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.18810865430947044', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', '0.5001240246982048', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.08341934160029707', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.04812784841651041', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4655982693269717', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.8539357978460663', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.9649541785823592', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.8243635648047365', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.929949719929735', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.055983276861168996', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.07845430274829746', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.28257674222099116', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.1578419214960578', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.7853118484860825', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.20790127125904156', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.8650538395535204', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.902116091225815', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', '0.48542770770171373', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.16725337150113984', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.3157444453259486', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.565727220131555', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.2531688065358064', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.9191434620980499', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.9224628853942058', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', '0.3256288410730337', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.9709152566761661', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.9794173893522709', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.16582064407977237', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.2652519246960059', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.04092489871261762', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.3020444893927522', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.4655412764350543', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.9226436424888846', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.4707663393012884', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.3277970119243966', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.4730675479071551', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.10261940477901954', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.4148892373198616', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.2877219827348403', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.16212409974675845', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9567425121214822', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.19795350030679149', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6954199597749198', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.32884293488801164', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.4789917995407148', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.0698927593996298', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.3352267723792438', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.8085116661598726', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.17515060210353794', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.6006963088370202', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8794167536704468', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.04091469320757368', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.6709116812690366', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.4850646101328463', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.547488212623346', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.6301717145008927', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.06123370093612068', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2545600223228257', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.28355287519210803', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.3231348374147818', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.4585172495754063', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.7893945285152268', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.6810596014794181', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.7136031244915907', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', '0.259734039051829', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.7759518703827996', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.06288891046833589', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', '0.8242980461154241', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.36590300307021595', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.20254092528445444', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.5427356081880325', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.1467846603517391', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8975527268892767', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.3483541520806722', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.6922544855316723', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.3690185253006011', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.7564541265683148', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.3634152133342695', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.33740378933701987', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.7942640738315301', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.7894896778233523', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.7153281477198108', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.5546359859065261', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7727157385809087', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.8707097754747494', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.3873936520764878', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.7590305068820566', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.512826935863365', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.19120284727846926', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.5382693105670825', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.826241649014955', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.6133080470571559', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.6452862617544055', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.3025772179023586', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '4.709864550322962E-4', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.024816355013726588', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.8407500495605565', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.8420879584266481', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2719224735814776', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.8939712577294938', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.8086189323362379', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.6063415085381448', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.39783242658234674', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.6085577206028068', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.5154289424127074', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.878436600887031', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5577906295015223', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', '0.1143260282925247', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.312756557275364', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.05548807854726956', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', '0.12140791431139175', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.23897628700410234', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.22223137342481392', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.12379891645900953', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.33729146112854247', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.8816768640060831', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.6301700633426532', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4566295223861714', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.1777378523933678', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.8163769471165477', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.4380805149704541', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2987018822475964', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.6726495645391617', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.8394327461109705', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', '0.820512945501936', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.1580105370757261', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.9961450897279505', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6574891890500061', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5201205570085158', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2445069633928285', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.3155229654901067', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.3665971881269575', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5544977915912215', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.15978771803015113', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.038128748344929186', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.49026304025118594', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.5166802080526571', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.22568230066042194', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.9888634109849955', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.21022365182102054', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', '0.47052993358031114', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.25686122383263454', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.18929054223320718', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.7925339862375451', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.12613308249498645', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7381524971311578', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.08639585437319919', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.9519897106846164', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.33446548574801926', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.40667134603483324', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.17100718420628735', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.4445585525686886', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.47372916928883013', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.19826861093848824', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.13679268112019338', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.9805515708224516', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', '0.4738376165601095', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.5739441073158964', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.8428505498030564', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.32655416551155336', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7055736367780644', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.9621355090189875', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.9665339161730553', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.44309781869697995', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.8651220802537761', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.6451892308277741', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.056797307451316725', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.6847604118085596', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.13428051757364667', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.9814797176951834', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.7386074051153445', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4825297824657663', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.06608870508231235', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.6278253028988848', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', '0.6705580511822682', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.8131712486302015', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.8124302447925607', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.039935860913407284', 'p2'); + + +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7636857512911863', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.17663327393462436', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.38943688941552057', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.2715819955225307', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.9358210273119568', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9364586435510802', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9707723036513162', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.8497763866782723', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.15504417761372413', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9507563118298399', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9746364180572994', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.12869214941133378', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.3024970533288409', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.6639702099980812', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', '0.4929901454858626', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.06853040276026445', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8488086078299616', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.8589111177125592', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.5576357066482228', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.8047888670006846', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.766944548494366', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.5280072184505449', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.9693343356046343', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.12805203958456424', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.16963603387027637', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5901202956521101', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.12710364646712236', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.6346530909156196', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.12461289103639872', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.9863947334662437', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.48899961064192987', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', '0.5382796792688207', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', '0.3506568687014143', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.8633072449771709', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.13999135315363687', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.07258740493845894', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5244413940436958', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.13258670732966138', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.6015982054464575', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.05513158944480323', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.6707121735296985', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.9330440339006469', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.5630674323371607', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.8720647566229917', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8331899070546519', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.6712876436249856', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.6694409980332703', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.3703307480606334', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.775368688472696', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.9151205443267096', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.09543108823305857', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.7893992120771057', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.5119923080070498', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.49906724167974936', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.046258282700961884', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.44843595680103954', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.7743935471689718', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5855299615656824', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.9412963512379853', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.8383247587082538', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', '0.14517876867236124', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.9327229861441061', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.19042326582894153', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.6029067818254513', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.21715964747214422', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.34259842721045974', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.7064419016593382', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', '0.5725636566517865', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.22332539583809208', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.8049036189055911', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.6029674758974956', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.11884976360561716', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', '0.7124916829130662', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.5893693718556829', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.602073304496253', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.10491061160039927', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.9006548872378379', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.8545144244288455', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.16915384987875726', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.2271640700690446', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.7807518577160636', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.8919859648888653', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.1564450687270359', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.5840549187653847', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.2213255596777869', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.07868261880306426', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.07710010861455818', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.5131249730162654', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5035035055368601', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8996978291173905', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.057442290722216294', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6443079066865616', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.7398098480748726', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.9835694815034591', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', '0.9879213445635557', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.4020136688147111', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.6698797170128024', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.17325132416789113', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.5784229486763606', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9185978183932058', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.5474783153973963', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.9730731954700215', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.5390873359288765', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.20522241320887713', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4088233242325021', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.7608047695853417', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.2749731221085713', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.06154055374702494', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.460668002022406', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.4474746325306228', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.5761666885467472', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.33233441360339655', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.7426534909874778', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.5841437875889118', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2818296500094526', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.8670888843915217', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.5249294365740248', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.5483356748008438', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.7278566847412673', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.6779976902157362', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.09995341651736978', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.4528538159233879', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5870756885301056', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9842091927290255', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.04580936015706816', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.8814678270145769', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.06517379256096412', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8769832364187129', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.584562279025023', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8102404090621375', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.11481653429176686', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.43422888918962554', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.0684414272594508', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.976546463969412', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.617906858141431', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.08663740247579998', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.7124944606691416', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.1321700521239627', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', '0.3078946609431664', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.6149442855237194', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', '0.5963801306980994', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.6999542038973406', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.4599112653446624', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.20300901401048832', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.39989705958717037', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.2486378364940327', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.16880398079144077', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.73927288385526', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8645283506689198', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.3266940826759587', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.9195490073037541', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.9452523036658287', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.21269683438120535', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.7377502855387184', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.38981597634408716', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7001799391999863', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6616720024008785', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', '0.497721735058096', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.22255613760959603', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.05247640233319417', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.27237572107833363', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.9529452406380252', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.28243045060463157', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.17880444250082506', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.035050038002381156', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.840803223728221', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5318457377361356', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9280332892460665', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.752354382202208', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.1866528331789219', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.7016165545791373', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.4191547989960899', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7025516699007639', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.6160127317884274', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.91223094958137', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.4383056089013998', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.595750781166582', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.9472349338730268', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', '0.0519104588842193', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.48043983034526205', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.14754707786497478', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.36124288370035695', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.21777919493494613', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.22637666702475057', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.9378215576942598', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.3309229261144562', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.7602880453727515', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.9470462487873785', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.6770215935547629', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.1586074803669385', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.2754855564794071', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.8355347738454384', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.7251813505573811', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.006606625589642534', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.304832277753024', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.026368662837989554', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.6855977520602776', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.8193746826441749', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.021179295102459972', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.1533849522536005', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.18893553542301778', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.39870999343833624', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.9985665103520182', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.6961441157700171', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.9861933923851885', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.993076500099477', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.4320547269058953', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.18441071030375877', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.1501504986117118', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.252021845734527', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', '0.24442701577183745', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.07563738855797564', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.34247820646440985', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.9456979276862031', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.19494357263973816', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.9371493867882469', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6136241316589367', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.8922330760877784', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.9001986074661864', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.4889702884422866', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.2689551234431401', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.5223573993758465', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.05042295556527243', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.2717147121880483', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7397093309370814', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.157064341631733', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', '0.7213399784998017', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.764081440588005', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.7514070600074144', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.611647412825278', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.6600796877195596', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.8942204153751679', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.07398121085929721', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.1652506990439564', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5849759516111703', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.1672502732600889', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.7836135556233219', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.26181269644936356', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.6577275876355586', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.3067293364197956', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.8608288543866495', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.814283434116926', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.33993584425872936', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'john', '0.010812798859160089', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5156558224263926', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.46320035330198406', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2651020283994786', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.42467241545664147', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.3695905136678498', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.15269122123348644', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6755688670583248', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.39064306179528907', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.36479296691952023', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', '0.5069249157662691', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.4785315495532231', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.7582526218052175', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.42064109605717914', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.5587757581237022', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.3561686564964428', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7101688305173135', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.6518061375522985', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.7564485884156583', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.36531347293134464', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5201689359070235', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7138792929290383', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.9751003716333827', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.5281906318027629', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.6291356541485003', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.1938712974807698', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', '0.6267850210775459', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.4469970592043767', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.7690659124175409', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.13335067838090386', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.2966621725922035', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.5740481445089863', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.838028890036331', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.8094354537628714', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.5552924586108698', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.49150373927678315', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.7264346889377966', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.9292830287297702', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.3905616258240767', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.15912349648571666', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.6030082006630102', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.8712354035243679', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.7685306377211826', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.2869913942171415', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.7142615166855639', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.5625978475154423', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.13611601734791123', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.6977333962685311', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.35140477709778295', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.8805119222967716', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7014124236538637', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.12759538003439375', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.7515403792213445', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.03700239289885987', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.31674618364630946', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.4491378834800146', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.6742764131652571', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.5286362221140248', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.007890326473113496', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8046560540950831', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7198364371127147', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.7400546712169153', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.16859870460868698', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.8462852684569557', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.010211452005474353', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8617802368201087', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.21667479046797633', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.8667689615468714', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.16140709875863557', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.16713368182304666', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.8957484629768053', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', '0.457835758220534', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.9435170960198477', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.9699253608913104', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.2309897429566834', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.7879705066452681', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.20795869239817255', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.4110352469382019', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.4979592772533561', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.18810865430947044', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', '0.5001240246982048', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.08341934160029707', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.04812784841651041', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4655982693269717', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.8539357978460663', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.9649541785823592', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.8243635648047365', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.929949719929735', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.055983276861168996', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.07845430274829746', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.28257674222099116', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.1578419214960578', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.7853118484860825', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.20790127125904156', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.8650538395535204', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.902116091225815', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', '0.48542770770171373', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.16725337150113984', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.3157444453259486', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.565727220131555', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.2531688065358064', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.9191434620980499', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.9224628853942058', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', '0.3256288410730337', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.9709152566761661', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.9794173893522709', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.16582064407977237', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.2652519246960059', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.04092489871261762', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.3020444893927522', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.4655412764350543', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.9226436424888846', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.4707663393012884', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.3277970119243966', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.4730675479071551', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.10261940477901954', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.4148892373198616', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.2877219827348403', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.16212409974675845', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9567425121214822', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.19795350030679149', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6954199597749198', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.32884293488801164', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.4789917995407148', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.0698927593996298', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.3352267723792438', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.8085116661598726', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.17515060210353794', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.6006963088370202', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8794167536704468', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.04091469320757368', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.6709116812690366', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.4850646101328463', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.547488212623346', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.6301717145008927', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.06123370093612068', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2545600223228257', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.28355287519210803', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.3231348374147818', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.4585172495754063', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.7893945285152268', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.6810596014794181', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.7136031244915907', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', '0.259734039051829', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.7759518703827996', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.06288891046833589', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', '0.8242980461154241', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.36590300307021595', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.20254092528445444', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.5427356081880325', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.1467846603517391', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8975527268892767', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.3483541520806722', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.6922544855316723', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.3690185253006011', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.7564541265683148', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.3634152133342695', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.33740378933701987', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.7942640738315301', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.7894896778233523', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.7153281477198108', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.5546359859065261', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7727157385809087', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.8707097754747494', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.3873936520764878', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.7590305068820566', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.512826935863365', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.19120284727846926', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.5382693105670825', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.826241649014955', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.6133080470571559', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.6452862617544055', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.3025772179023586', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '4.709864550322962E-4', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.024816355013726588', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.8407500495605565', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.8420879584266481', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2719224735814776', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.8939712577294938', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.8086189323362379', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.6063415085381448', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.39783242658234674', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.6085577206028068', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.5154289424127074', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.878436600887031', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5577906295015223', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', '0.1143260282925247', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.312756557275364', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.05548807854726956', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', '0.12140791431139175', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.23897628700410234', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.22223137342481392', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.12379891645900953', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.33729146112854247', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.8816768640060831', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.6301700633426532', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4566295223861714', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.1777378523933678', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.8163769471165477', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.4380805149704541', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2987018822475964', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.6726495645391617', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.8394327461109705', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', '0.820512945501936', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.1580105370757261', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.9961450897279505', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6574891890500061', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5201205570085158', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2445069633928285', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.3155229654901067', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.3665971881269575', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5544977915912215', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.15978771803015113', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.038128748344929186', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.49026304025118594', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.5166802080526571', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.22568230066042194', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.9888634109849955', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.21022365182102054', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', '0.47052993358031114', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.25686122383263454', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.18929054223320718', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.7925339862375451', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.12613308249498645', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7381524971311578', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.08639585437319919', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.9519897106846164', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.33446548574801926', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.40667134603483324', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.17100718420628735', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.4445585525686886', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.47372916928883013', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.19826861093848824', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.13679268112019338', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.9805515708224516', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', '0.4738376165601095', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.5739441073158964', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.8428505498030564', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.32655416551155336', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7055736367780644', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.9621355090189875', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.9665339161730553', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.44309781869697995', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.8651220802537761', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.6451892308277741', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.056797307451316725', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.6847604118085596', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.13428051757364667', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.9814797176951834', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.7386074051153445', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4825297824657663', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.06608870508231235', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.6278253028988848', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', '0.6705580511822682', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.8131712486302015', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.8124302447925607', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.039935860913407284', 'p2'); diff --git a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql index 5799f2186..3b25d76dd 100644 --- a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql @@ -1,513 +1,278 @@ -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 , - `is_unique` INT DEFAULT NULL , -- 0 is non-unique, 1 is unique - `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 - PRIMARY KEY -( - `id` -) +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 + `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 + PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_domain IS 'domain basic information'; +COMMENT ON TABLE s2_model IS 'model information'; + +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 , + `is_unique` INT DEFAULT NULL , -- 0 is non-unique, 1 is unique + `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 + PRIMARY KEY (`id`) + ); +COMMENT ON TABLE s2_domain IS 'domain basic information'; -CREATE TABLE `s2_database` -( - `id` INT NOT NULL AUTO_INCREMENT, - `domain_id` INT NOT NULL, - `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, +CREATE TABLE `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'; +COMMENT ON TABLE s2_database IS 'database instance table'; -CREATE TABLE IF NOT EXISTS `s2_datasource` -( - `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 , - `database_id` INT NOT NULL , - `datasource_detail` LONGVARCHAR NOT NULL , - `created_at` TIMESTAMP NOT NULL , - `created_by` varchar -( - 100 -) NOT NULL , - `updated_at` TIMESTAMP NOT NULL , - `updated_by` varchar -( - 100 -) NOT NULL, - PRIMARY KEY -( - `id` -) +CREATE TABLE IF NOT EXISTS `s2_datasource` ( + `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 , + `database_id` INT NOT NULL , + `datasource_detail` LONGVARCHAR NOT NULL , + `created_at` TIMESTAMP NOT NULL , + `created_by` varchar(100) NOT NULL , + `updated_at` TIMESTAMP NOT NULL , + `updated_by` varchar(100) NOT NULL, + PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_datasource IS 'datasource table'; +COMMENT ON TABLE s2_datasource IS 'datasource table'; create table s2_user ( - id INT AUTO_INCREMENT, - name varchar(100) not null, + id INT AUTO_INCREMENT, + name varchar(100) not null, display_name varchar(100) null, - password varchar(100) null, - email varchar(100) null, + password varchar(100) null, + email varchar(100) null, PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_user IS 'user information table'; +COMMENT ON TABLE s2_user IS 'user information table'; create table s2_auth_groups ( group_id INT, - config varchar(2048), + config varchar(2048), PRIMARY KEY (`group_id`) ); -CREATE TABLE IF NOT EXISTS `s2_metric` -( - `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 , -- status, 0 is normal, 1 is off the shelf, 2 is deleted +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 , -- status, 0 is normal, 1 is off the shelf, 2 is deleted `sensitive_level` INT NOT NULL , - `type` varchar -( - 50 -) NOT NULL , -- type proxy,expr - `type_params` LONGVARCHAR DEFAULT NULL , + `type` varchar(50) NOT NULL , -- type proxy,expr + `type_params` LONGVARCHAR DEFAULT NULL , `created_at` TIMESTAMP NOT NULL , - `created_by` varchar -( - 100 -) 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, - PRIMARY KEY -( - `id` -) + `updated_by` varchar(100) NOT NULL , + `data_format_type` varchar(50) DEFAULT NULL , + `data_format` varchar(500) DEFAULT NULL, + `alias` varchar(500) DEFAULT NULL, + PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_metric IS 'metric information table'; +COMMENT ON TABLE s2_metric IS 'metric information table'; -CREATE TABLE IF NOT EXISTS `s2_dimension` -( - `id` - INT - NOT - NULL - AUTO_INCREMENT, - `domain_id` - INT - NOT - NULL, - `datasource_id` - INT - NOT - NULL, - `name` - varchar -( - 255 -) NOT NULL , - `biz_name` varchar -( - 255 -) NOT NULL , - `description` varchar -( - 500 -) NOT NULL , +CREATE TABLE IF NOT EXISTS `s2_dimension` ( + `id` INT NOT NULL AUTO_INCREMENT , + `model_id` INT NOT NULL , + `datasource_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 normal, 1 is off the shelf, 2 is deleted `sensitive_level` INT DEFAULT NULL , - `type` varchar -( - 50 -) NOT NULL , -- type categorical,time - `type_params` LONGVARCHAR DEFAULT NULL , + `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, - PRIMARY KEY -( - `id` -) + `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, + PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_dimension IS 'dimension information table'; +COMMENT ON TABLE s2_dimension IS 'dimension information table'; create table s2_datasource_rela ( id INT AUTO_INCREMENT, - domain_id INT null, - datasource_from INT null, - datasource_to INT null, + model_id INT null, + datasource_from INT null, + datasource_to INT null, join_key varchar(100) null, - created_at TIMESTAMP null, + created_at TIMESTAMP null, created_by varchar(100) null, - updated_at TIMESTAMP null, + updated_at TIMESTAMP null, updated_by varchar(100) null, PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_datasource_rela IS 'data source association table'; +COMMENT ON TABLE s2_datasource_rela IS 'data source association table'; create table s2_view_info ( id INT auto_increment, - domain_id INT null, - type varchar(20) null comment 'datasource、dimension、metric', - config LONGVARCHAR null comment 'config detail', - created_at TIMESTAMP null, + model_id INT null, + type varchar(20) null comment 'datasource、dimension、metric', + config LONGVARCHAR null comment 'config detail', + created_at TIMESTAMP null, created_by varchar(100) null, - updated_at TIMESTAMP null, + updated_at TIMESTAMP null, updated_by varchar(100) not null ); -COMMENT -ON TABLE s2_view_info IS 'view information table'; +COMMENT ON TABLE s2_view_info IS 'view information table'; -CREATE TABLE `s2_query_stat_info` -( - `id` INT NOT NULL AUTO_INCREMENT, - `trace_id` varchar(200) DEFAULT NULL, -- query unique identifier - `domain_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 +CREATE TABLE `s2_query_stat_info` ( + `id` INT NOT NULL AUTO_INCREMENT, + `trace_id` varchar(200) DEFAULT NULL, -- query unique identifier + `model_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 PRIMARY KEY (`id`) -); -COMMENT -ON TABLE s2_query_stat_info IS 'query statistics table'; +) ; +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 , - `domain_id` INT NOT NULL , - `dimensions` LONGVARCHAR , - `metrics` LONGVARCHAR , - `orders` LONGVARCHAR , - `filters` LONGVARCHAR , - `date_info` LONGVARCHAR , +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 , + `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` -) + PRIMARY KEY (`id`) ); -COMMENT -ON TABLE s2_semantic_pasre_info IS 'semantic layer sql parsing information table'; +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` -) +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'; +COMMENT ON TABLE s2_available_date_info IS 's2_available_date_info 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 +CREATE TABLE IF NOT EXISTS `s2_user_department` ( + `user_name` varchar(200) NOT NULL, + `department` varchar(200) NOT NULL -- department of user ); -COMMENT -ON TABLE s2_semantic_pasre_info IS 'user_department_info'; +COMMENT ON TABLE s2_semantic_pasre_info 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 +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_semantic_pasre_info IS 'user_access_info'; +COMMENT ON TABLE s2_semantic_pasre_info IS 'user_access_info'; -CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` -( - `imp_date` varchar -( - 200 -) NOT NULL, - `user_name` 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 NOT NULL, - `page` varchar -( - 200 -) NOT NULL + `page` varchar(200) NOT NULL ); -COMMENT -ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info'; +COMMENT ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info'; -CREATE TABLE IF NOT EXISTS `singer` -( - `imp_date` varchar -( - 200 -) NOT NULL, - `singer_name` varchar -( - 200 -) NOT NULL, - `act_area` varchar -( - 200 -) NOT NULL, - `song_name` varchar -( - 200 -) NOT NULL, - `genre` varchar -( - 200 -) NOT NULL, +CREATE TABLE IF NOT EXISTS `singer` ( + `imp_date` varchar(200) NOT NULL, + `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 ); -COMMENT -ON TABLE singer IS 'singer_info'; +COMMENT ON TABLE singer IS 'singer_info'; diff --git a/launchers/semantic/src/main/resources/logback-spring.xml b/launchers/semantic/src/main/resources/logback-spring.xml index e94cda0d7..bcbf33a3a 100644 --- a/launchers/semantic/src/main/resources/logback-spring.xml +++ b/launchers/semantic/src/main/resources/logback-spring.xml @@ -46,8 +46,7 @@ - ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 90 @@ -56,7 +55,7 @@ UTF-8 - %d [%thread] %-5level [%X{TRACE_ID}] %logger{36} - %msg%n + %d [%thread] %-5level [%X{TRACE_ID}] %logger{36} - %msg%n @@ -75,8 +74,7 @@ - ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 30 diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java index c8d3a7306..247576710 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java @@ -71,7 +71,7 @@ public class ConfigureDemo implements ApplicationListener } public void addSampleChats() throws Exception { - chatService.addChat(user, "样例对话1"); + chatService.addChat(user, "样例对话1", 1); parseAndExecute(1, "超音数 访问次数"); parseAndExecute(1, "按部门统计"); @@ -79,7 +79,7 @@ public class ConfigureDemo implements ApplicationListener } public void addSampleChats2() throws Exception { - chatService.addChat(user, "样例对话2"); + chatService.addChat(user, "样例对话2", 1); parseAndExecute(2, "alice 停留时长"); parseAndExecute(2, "对比alice和lucy的访问次数"); diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/db/MybatisConfig.java b/launchers/standalone/src/main/java/com/tencent/supersonic/db/MybatisConfig.java index 7856043bd..f3428741a 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/db/MybatisConfig.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/db/MybatisConfig.java @@ -1,6 +1,5 @@ package com.tencent.supersonic.db; -import javax.sql.DataSource; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; @@ -9,6 +8,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import javax.sql.DataSource; + @Configuration @MapperScan(value = "com.tencent.supersonic", annotationClass = Mapper.class) diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index 2305f851b..14609d5fd 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -32,9 +32,10 @@ com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.chat.api.component.SemanticCorrector=\ com.tencent.supersonic.chat.corrector.DateFieldCorrector, \ - com.tencent.supersonic.chat.corrector.FieldValueCorrector, \ + com.tencent.supersonic.chat.corrector.FieldNameCorrector, \ com.tencent.supersonic.chat.corrector.FieldCorrector, \ com.tencent.supersonic.chat.corrector.FunctionCorrector, \ com.tencent.supersonic.chat.corrector.TableNameCorrector, \ com.tencent.supersonic.chat.corrector.QueryFilterAppend, \ - com.tencent.supersonic.chat.corrector.SelectFieldAppendCorrector + com.tencent.supersonic.chat.corrector.SelectFieldAppendCorrector, \ + com.tencent.supersonic.chat.corrector.FieldValueCorrector diff --git a/launchers/standalone/src/main/resources/db/data-h2.sql b/launchers/standalone/src/main/resources/db/data-h2.sql index f8e1030a3..cbcb6f8bf 100644 --- a/launchers/standalone/src/main/resources/db/data-h2.sql +++ b/launchers/standalone/src/main/resources/db/data-h2.sql @@ -9,7 +9,7 @@ insert into s2_user (id, `name`, password, display_name, email) values (5, 'alic insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, updated_by, `admin`, admin_org, viewer, view_org) VALUES(1, '超音数', 'supersonic', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 'admin,tom,jack', 'admin' ); insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(1, '超音数', 'supersonic', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','' ); insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(2, '艺人库', 'singer', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','{"entityId": 7, "names": ["歌手", "艺人"]}' ); -insert into s2_database (id, domain_id , `name`, description, `type` ,config ,created_at ,created_by ,updated_at ,updated_by) VALUES(1, 1, 'H2数据实例', '', 'h2', '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin'); +insert into s2_database (id, `name`, description, `type` ,config ,created_at ,created_by ,updated_at ,updated_by, `admin`) VALUES(1, 'H2数据实例', '', 'h2', '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin'); insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(1, 1, '停留时长统计', 's2_stay_time_statis', '停留时长统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_stay_time_statis_stay_hours","expr":"stay_hours","isCreateMetric":1,"name":"停留时长"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, page,user_name,stay_hours FROM s2_stay_time_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(2, 1, 'PVUV统计', 's2_pv_uv_statis', 'PVUV统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","expr":"pv","isCreateMetric":1,"name":"访问次数"},{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","expr":"uv","isCreateMetric":1,"name":"访问人数"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, user_name,page,1 as pv, user_name as uv FROM s2_pv_uv_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(3, 1, '用户部门', 'user_department', '用户部门', 1, '{"dimensions":[{"bizName":"department","dateFormat":"yyyy-MM-dd","expr":"department","isCreateDimension":1,"name":"部门","type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[],"queryType":"sql_query","sqlQuery":"SELECT user_name,department FROM s2_user_department"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index e0e6bc25d..350b3cfb8 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context` 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 , @@ -133,7 +134,6 @@ COMMENT ON TABLE s2_model IS 'model information'; CREATE TABLE `s2_database` ( `id` INT NOT NULL AUTO_INCREMENT, - `domain_id` INT NOT NULL , `name` varchar(255) NOT NULL , `description` varchar(500) DEFAULT NULL , `version` varchar(64) DEFAULT NULL , @@ -143,6 +143,8 @@ CREATE TABLE `s2_database` ( `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'; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index a183fbdb2..c77bd15d9 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -1,79 +1,85 @@ create table supersonic_sit.s2_auth_groups ( - group_id int not null + group_id int not null primary key, config varchar(2048) null -) collate = utf8mb4_unicode_ci; +) + collate = utf8mb4_unicode_ci; create table supersonic_sit.s2_available_date_info ( id int auto_increment primary key, - item_id int not null, - type varchar(255) not null, - date_format varchar(64) not null, - start_date varchar(64) null, - end_date varchar(64) null, - unavailable_date text null, - created_at timestamp default CURRENT_TIMESTAMP not null, - created_by varchar(100) not null, - updated_at timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP, - updated_by varchar(100) not null, - status int default 0 null -) collate = utf8mb4_unicode_ci; + item_id int not null, + type varchar(255) not null, + date_format varchar(64) not null, + start_date varchar(64) null, + end_date varchar(64) null, + unavailable_date text null, + created_at timestamp default CURRENT_TIMESTAMP not null, + created_by varchar(100) not null, + updated_at timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP, + updated_by varchar(100) not null, + status int default 0 null +) + collate = utf8mb4_unicode_ci; create table supersonic_sit.s2_chat ( chat_id bigint(8) auto_increment primary key, - chat_name varchar(100) null, - create_time datetime null, - last_time datetime null, - creator varchar(30) null, - last_question varchar(200) null, + chat_name varchar(100) null, + create_time datetime null, + last_time datetime null, + creator varchar(30) null, + last_question varchar(200) null, is_delete int(2) default 0 null comment 'is deleted', is_top int(2) default 0 null comment 'is top' -) charset = utf8; +) + charset = utf8; create table supersonic_sit.s2_chat_config ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `domain_id` bigint(20) DEFAULT NULL COMMENT '主题域id', - `chat_detail_config` mediumtext COMMENT '明细模式配置信息', - `chat_agg_config` mediumtext COMMENT '指标模式配置信息', - `recommended_questions` mediumtext COMMENT '推荐问题配置', - `created_at` datetime NOT NULL COMMENT '创建时间', - `updated_at` datetime NOT NULL COMMENT '更新时间', - `created_by` varchar(100) NOT NULL COMMENT '创建人', - `updated_by` varchar(100) NOT NULL COMMENT '更新人', - `status` int(10) NOT NULL COMMENT '主题域扩展信息状态, 0-删除,1-生效', - PRIMARY KEY (`id`) -) comment '主题域扩展信息表' charset = utf8; + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `domain_id` bigint(20) DEFAULT NULL COMMENT '主题域id', + `chat_detail_config` mediumtext COMMENT '明细模式配置信息', + `chat_agg_config` mediumtext COMMENT '指标模式配置信息', + `recommended_questions` mediumtext COMMENT '推荐问题配置', + `created_at` datetime NOT NULL COMMENT '创建时间', + `updated_at` datetime NOT NULL COMMENT '更新时间', + `created_by` varchar(100) NOT NULL COMMENT '创建人', + `updated_by` varchar(100) NOT NULL COMMENT '更新人', + `status` int(10) NOT NULL COMMENT '主题域扩展信息状态, 0-删除,1-生效', + PRIMARY KEY (`id`) +) + comment '主题域扩展信息表' charset = utf8; create table supersonic_sit.s2_chat_context ( chat_id bigint not null comment 'context chat id' primary key, modified_at datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 'row modify time', - user varchar(64) null comment 'row modify user', - query_text text null comment 'query text', - semantic_parse text null comment 'parse data', - ext_data text null comment 'extend data' -) charset = utf8; + user varchar(64) null comment 'row modify user', + query_text text null comment 'query text', + semantic_parse text null comment 'parse data', + ext_data text null comment 'extend data' +) + charset = utf8; create table supersonic_sit.s2_chat_query ( question_id bigint auto_increment primary key, create_time timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP, - query_text mediumtext null, - user_name varchar(150) null, - query_state int(1) null, + query_text mediumtext null, + user_name varchar(150) null, + query_state int(1) null, chat_id bigint not null, query_response mediumtext not null, - score int default 0 null, - feedback varchar(1024) default '' null -) charset = utf8; + score int default 0 null, + feedback varchar(1024) default '' null +) + charset = utf8; create table supersonic_sit.s2_database ( @@ -82,14 +88,15 @@ create table supersonic_sit.s2_database domain_id bigint not null comment '主题域ID', name varchar(255) not null comment '名称', description varchar(500) null comment '描述', - version varchar(64) null comment '版本', + version varchar(64) null comment '版本', type varchar(20) not null comment '类型 mysql,clickhouse,tdw', config text not null comment '配置信息', created_at datetime not null comment '创建时间', created_by varchar(100) not null comment '创建人', updated_at datetime not null comment '更新时间', updated_by varchar(100) not null comment '更新人' -) comment '数据库实例表' charset = utf8; +) + comment '数据库实例表' charset = utf8; create table supersonic_sit.s2_datasource ( @@ -105,140 +112,147 @@ create table supersonic_sit.s2_datasource created_by varchar(100) not null comment '创建人', updated_at datetime not null comment '更新时间', updated_by varchar(100) not null comment '更新人' -) charset = utf8; +) + charset = utf8; create table supersonic_sit.s2_datasource_rela ( id bigint auto_increment primary key, - domain_id bigint null, - datasource_from bigint null, - datasource_to bigint null, + domain_id bigint null, + datasource_from bigint null, + datasource_to bigint null, join_key varchar(100) null, - created_at datetime null, + created_at datetime null, created_by varchar(100) null, - updated_at datetime null, + updated_at datetime null, updated_by varchar(100) null -) charset = utf8; +) + charset = utf8; create table supersonic_sit.s2_dimension ( id bigint auto_increment comment '维度ID' primary key, - domain_id bigint not null comment '主题域id', - datasource_id bigint not null comment '所属数据源id', - name varchar(255) not null comment '维度名称', - biz_name varchar(255) not null comment '字段名称', - description varchar(500) not null comment '描述', - status int(10) not null comment '维度状态,0正常,1下架,2删除', - sensitive_level int(10) null comment '敏感级别', - type varchar(50) not null comment '维度类型 categorical,time', - type_params text null comment '类型参数', - expr text not null comment '表达式', - created_at datetime not null comment '创建时间', - created_by varchar(100) not null comment '创建人', - updated_at datetime not null comment '更新时间', - updated_by varchar(100) not null comment '更新人', - semantic_type varchar(20) not null comment '语义类型DATE, ID, CATEGORY', + domain_id bigint not null comment '主题域id', + datasource_id bigint not null comment '所属数据源id', + name varchar(255) not null comment '维度名称', + biz_name varchar(255) not null comment '字段名称', + description varchar(500) not null comment '描述', + status int(10) not null comment '维度状态,0正常,1下架,2删除', + sensitive_level int(10) null comment '敏感级别', + type varchar(50) not null comment '维度类型 categorical,time', + type_params text null comment '类型参数', + expr text not null comment '表达式', + created_at datetime not null comment '创建时间', + created_by varchar(100) not null comment '创建人', + updated_at datetime not null comment '更新时间', + updated_by varchar(100) not null comment '更新人', + semantic_type varchar(20) not null comment '语义类型DATE, ID, CATEGORY', alias varchar(500) collate utf8_unicode_ci null, - default_values varchar(500) DEFAULT NULL, - dim_value_maps varchar(500) DEFAULT NULL -) comment '维度表' charset = utf8; + default_values varchar(500) DEFAULT NULL, + dim_value_maps varchar(500) DEFAULT NULL +) + comment '维度表' charset = utf8; create table supersonic_sit.s2_domain ( id bigint auto_increment comment '自增ID' primary key, - name varchar(255) null comment '主题域名称', - biz_name varchar(255) null comment '内部名称', - parent_id bigint default 0 null comment '父主题域ID', - status int(10) not null comment '主题域状态', - created_at datetime null comment '创建时间', - created_by varchar(100) null comment '创建人', - updated_at datetime null comment '更新时间', - updated_by varchar(100) null comment '更新人', - admin varchar(3000) null comment '主题域管理员', - admin_org varchar(3000) null comment '主题域管理员组织', - is_open int null comment '主题域是否公开', - viewer varchar(3000) null comment '主题域可用用户', - view_org varchar(3000) null comment '主题域可用组织', + name varchar(255) null comment '主题域名称', + biz_name varchar(255) null comment '内部名称', + parent_id bigint default 0 null comment '父主题域ID', + status int(10) not null comment '主题域状态', + created_at datetime null comment '创建时间', + created_by varchar(100) null comment '创建人', + updated_at datetime null comment '更新时间', + updated_by varchar(100) null comment '更新人', + admin varchar(3000) null comment '主题域管理员', + admin_org varchar(3000) null comment '主题域管理员组织', + is_open int null comment '主题域是否公开', + viewer varchar(3000) null comment '主题域可用用户', + view_org varchar(3000) null comment '主题域可用组织', entity varchar(500) DEFAULT NULL COMMENT '主题域实体信息' -) comment '主题域基础信息表' charset = utf8; +) + comment '主题域基础信息表' charset = utf8; create table supersonic_sit.s2_domain_extend ( id bigint unsigned auto_increment primary key, - domain_id bigint null comment '主题域id', + domain_id bigint null comment '主题域id', default_metrics varchar(655) null comment '默认指标', - visibility mediumtext null comment '不可见的维度/指标信息', - entity_info mediumtext null comment '实体信息', - dictionary_info mediumtext null comment '字典相关的维度设置信息', + visibility mediumtext null comment '不可见的维度/指标信息', + entity_info mediumtext null comment '实体信息', + dictionary_info mediumtext null comment '字典相关的维度设置信息', created_at datetime not null comment '创建时间', updated_at datetime not null comment '更新时间', created_by varchar(100) not null comment '创建人', updated_by varchar(100) not null comment '更新人', - status int(10) not null comment '主题域扩展信息状态, 0-删除,1-生效' -) comment '主题域扩展信息表' collate = utf8mb4_unicode_ci; + status int(10) not null comment '主题域扩展信息状态, 0-删除,1-生效' +) + comment '主题域扩展信息表' collate = utf8mb4_unicode_ci; create table supersonic_sit.s2_metric ( id bigint auto_increment primary key, - domain_id bigint not null comment '主体域ID', - name varchar(255) not null comment '指标名称', - biz_name varchar(255) not null comment '字段名称', - description varchar(500) null comment '描述', - status int(10) not null comment '指标状态,0正常,1下架,2删除', - sensitive_level int(10) not null comment '敏感级别', - type varchar(50) not null comment '指标类型 proxy,expr', - type_params text not null comment '类型参数', - created_at datetime not null comment '创建时间', - created_by varchar(100) not null comment '创建人', - updated_at datetime not null comment '更新时间', - updated_by varchar(100) not null comment '更新人', - data_format_type varchar(50) null comment '数值类型', - data_format varchar(500) null comment '数值类型参数', + domain_id bigint not null comment '主体域ID', + name varchar(255) not null comment '指标名称', + biz_name varchar(255) not null comment '字段名称', + description varchar(500) null comment '描述', + status int(10) not null comment '指标状态,0正常,1下架,2删除', + sensitive_level int(10) not null comment '敏感级别', + type varchar(50) not null comment '指标类型 proxy,expr', + type_params text not null comment '类型参数', + created_at datetime not null comment '创建时间', + created_by varchar(100) not null comment '创建人', + updated_at datetime not null comment '更新时间', + updated_by varchar(100) not null comment '更新人', + data_format_type varchar(50) null comment '数值类型', + data_format varchar(500) null comment '数值类型参数', alias varchar(500) collate utf8_unicode_ci null -) comment '指标表' charset = utf8; +) + comment '指标表' charset = utf8; create table supersonic_sit.s2_query_stat_info ( id bigint unsigned auto_increment primary key, - trace_id varchar(200) null comment '查询标识', - domain_id bigint null comment '主题域ID', - user varchar(200) null comment '执行sql的用户', - created_at datetime default CURRENT_TIMESTAMP null comment '创建时间', - query_type varchar(200) null comment '查询对应的场景', - query_type_back int(10) default 0 null comment '查询类型, 0-正常查询, 1-预刷类型', - query_sql_cmd mediumtext null comment '对应查询的struct', - sql_cmd_md5 varchar(200) null comment 'sql md5值', - query_struct_cmd mediumtext null comment '对应查询的struct', - struct_cmd_md5 varchar(200) null comment 'sql md5值', - `sql` mediumtext null comment '对应查询的sql', - sql_md5 varchar(200) null comment 'sql md5值', - query_engine varchar(20) null comment '查询引擎', - elapsed_ms bigint(10) null comment '查询耗时', - query_state varchar(20) null comment '查询最终状态', - native_query int(10) null comment '1-明细查询,0-聚合查询', - start_date varchar(50) null comment 'sql开始日期', - end_date varchar(50) null comment 'sql结束日期', - dimensions mediumtext null comment 'sql 涉及的维度', - metrics mediumtext null comment 'sql 涉及的指标', - select_cols mediumtext null comment 'sql select部分涉及的标签', - agg_cols mediumtext null comment 'sql agg部分涉及的标签', - filter_cols mediumtext null comment 'sql where部分涉及的标签', - group_by_cols mediumtext null comment 'sql grouy by部分涉及的标签', - order_by_cols mediumtext null comment 'sql order by部分涉及的标签', - use_result_cache tinyint(1) default -1 null comment '是否命中sql缓存', - use_sql_cache tinyint(1) default -1 null comment '是否命中sql缓存', - sql_cache_key mediumtext null comment '缓存的key', - result_cache_key mediumtext null comment '缓存的key' -) comment '查询统计信息表' collate = utf8mb4_unicode_ci; + trace_id varchar(200) null comment '查询标识', + domain_id bigint null comment '主题域ID', + user varchar(200) null comment '执行sql的用户', + created_at datetime default CURRENT_TIMESTAMP null comment '创建时间', + query_type varchar(200) null comment '查询对应的场景', + query_type_back int(10) default 0 null comment '查询类型, 0-正常查询, 1-预刷类型', + query_sql_cmd mediumtext null comment '对应查询的struct', + sql_cmd_md5 varchar(200) null comment 'sql md5值', + query_struct_cmd mediumtext null comment '对应查询的struct', + struct_cmd_md5 varchar(200) null comment 'sql md5值', + `sql` mediumtext null comment '对应查询的sql', + sql_md5 varchar(200) null comment 'sql md5值', + query_engine varchar(20) null comment '查询引擎', + elapsed_ms bigint(10) null comment '查询耗时', + query_state varchar(20) null comment '查询最终状态', + native_query int(10) null comment '1-明细查询,0-聚合查询', + start_date varchar(50) null comment 'sql开始日期', + end_date varchar(50) null comment 'sql结束日期', + dimensions mediumtext null comment 'sql 涉及的维度', + metrics mediumtext null comment 'sql 涉及的指标', + select_cols mediumtext null comment 'sql select部分涉及的标签', + agg_cols mediumtext null comment 'sql agg部分涉及的标签', + filter_cols mediumtext null comment 'sql where部分涉及的标签', + group_by_cols mediumtext null comment 'sql grouy by部分涉及的标签', + order_by_cols mediumtext null comment 'sql order by部分涉及的标签', + use_result_cache tinyint(1) default -1 null comment '是否命中sql缓存', + use_sql_cache tinyint(1) default -1 null comment '是否命中sql缓存', + sql_cache_key mediumtext null comment '缓存的key', + result_cache_key mediumtext null comment '缓存的key' +) + comment '查询统计信息表' collate = utf8mb4_unicode_ci; create index domain_index on supersonic_sit.s2_query_stat_info (domain_id); @@ -247,42 +261,67 @@ create table supersonic_sit.s2_semantic_pasre_info ( id bigint unsigned auto_increment primary key, - trace_id varchar(200) not null comment '查询标识', - domain_id bigint not null comment '主体域ID', - dimensions mediumtext null comment '查询相关的维度信息', - metrics mediumtext null comment '查询相关的指标信息', - orders mediumtext null comment '查询相关的排序信息', - filters mediumtext null comment '查询相关的过滤信息', - date_info mediumtext null comment '查询相关的日期信息', - `limit` bigint not null comment '查询相关的limit信息', + trace_id varchar(200) not null comment '查询标识', + domain_id bigint not null comment '主体域ID', + dimensions mediumtext null comment '查询相关的维度信息', + metrics mediumtext null comment '查询相关的指标信息', + orders mediumtext null comment '查询相关的排序信息', + filters mediumtext null comment '查询相关的过滤信息', + date_info mediumtext null comment '查询相关的日期信息', + `limit` bigint not null comment '查询相关的limit信息', native_query tinyint(1) default 0 not null comment '1-明细查询,0-聚合查询', - `sql` mediumtext null comment '解析后的sql', - created_at datetime not null comment '创建时间', - created_by varchar(100) not null comment '创建人', - status int(10) not null comment '运行状态', - elapsed_ms bigint(10) null comment 'sql解析耗时' + `sql` mediumtext null comment '解析后的sql', + created_at datetime not null comment '创建时间', + created_by varchar(100) not null comment '创建人', + status int(10) not null comment '运行状态', + elapsed_ms bigint(10) null comment 'sql解析耗时' ) comment '语义层sql解析信息表' charset = utf8; create table supersonic_sit.s2_view_info ( id bigint auto_increment primary key, - domain_id bigint null, - type varchar(20) null comment 'datasource、dimension、metric', - config text null comment 'config detail', - created_at datetime null, + domain_id bigint null, + type varchar(20) null comment 'datasource、dimension、metric', + config text null comment 'config detail', + created_at datetime null, created_by varchar(100) null, - updated_at datetime null, + updated_at datetime null, updated_by varchar(100) not null ) charset = utf8; -CREATE TABLE `s2_user` -( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) NOT NULL, - `display_name` varchar(100) DEFAULT NULL, - `password` varchar(100) DEFAULT NULL, - `email` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; \ No newline at end of file +CREATE TABLE `s2_user` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `display_name` varchar(100) DEFAULT NULL, + `password` varchar(100) DEFAULT NULL, + `email` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; + + + +CREATE TABLE 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) DEFAULT 0 , + `type` INT DEFAULT NULL , + `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + index `commonIndex` (`question_id`) +); + +CREATE TABLE `s2_chat_parse` ( + `question_id` bigint(20) NOT NULL, + `chat_id` bigint(20) NOT NULL, + `parse_id` int(11) NOT NULL, + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `query_text` varchar(500) DEFAULT NULL, + `user_name` varchar(150) DEFAULT NULL, + `parse_info` mediumtext NOT NULL, + `is_candidate` int DEFAULT 1 COMMENT '1是candidate,0是selected', + index `commonIndex` (`question_id`) +) diff --git a/launchers/standalone/src/main/resources/db/sql-update.sql b/launchers/standalone/src/main/resources/db/sql-update.sql index bfaed7f1c..34ea139b5 100644 --- a/launchers/standalone/src/main/resources/db/sql-update.sql +++ b/launchers/standalone/src/main/resources/db/sql-update.sql @@ -38,3 +38,11 @@ update s2_plugin set config = replace(config, 'domain', 'model'); --20230823 alter table s2_chat_query add column agent_id int after question_id; alter table s2_chat_query change column query_response query_result mediumtext; + +--20230829 +alter table s2_database add column admin varchar(500); +alter table s2_database add column viewer varchar(500); +alter table s2_database drop column domain_id; + +--20230831 +alter table s2_chat add column agent_id int after chat_id; \ No newline at end of file diff --git a/launchers/standalone/src/main/resources/logback-spring.xml b/launchers/standalone/src/main/resources/logback-spring.xml index b6d7a041d..810eda9b3 100644 --- a/launchers/standalone/src/main/resources/logback-spring.xml +++ b/launchers/standalone/src/main/resources/logback-spring.xml @@ -1,13 +1,13 @@ logback - + - %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n + %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n @@ -46,8 +46,7 @@ - ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 90 @@ -75,8 +74,7 @@ - ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 30 diff --git a/launchers/standalone/src/main/resources/optimization.properties b/launchers/standalone/src/main/resources/optimization.properties new file mode 100644 index 000000000..bcdd883c4 --- /dev/null +++ b/launchers/standalone/src/main/resources/optimization.properties @@ -0,0 +1,18 @@ +#hanlp mapper helper + +one.detection.size=8 +one.detection.max.size=20 +metric.dimension.min.threshold=0.3 +metric.dimension.threshold=0.3 +dimension.value.threshold=0.5 + +function.bonus.threshold=201 + +#SatisfactionChecker +long.text.threshold=0.8 +short.text.threshold=0.5 +query.text.length.threshold=10 + + +candidate.threshold=0.2 + diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java index 028500289..8d9ba60b3 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java @@ -1,7 +1,5 @@ package com.tencent.supersonic.integration; -import static org.junit.Assert.assertEquals; - import com.tencent.supersonic.StandaloneLauncher; import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.SchemaElement; @@ -16,9 +14,6 @@ import com.tencent.supersonic.chat.service.ChatService; import com.tencent.supersonic.chat.service.ConfigService; import com.tencent.supersonic.chat.service.QueryService; import com.tencent.supersonic.util.DataUtils; -import java.time.LocalDate; -import java.util.Set; -import java.util.stream.Collectors; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -27,6 +22,12 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; +import java.time.LocalDate; +import java.util.Set; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; + @RunWith(SpringRunner.class) @SpringBootTest(classes = StandaloneLauncher.class) @ActiveProfiles("local") diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/EntityQueryTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/EntityQueryTest.java index 50c39e51e..a001e3677 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/EntityQueryTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/EntityQueryTest.java @@ -1,7 +1,5 @@ package com.tencent.supersonic.integration; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE; - import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.request.QueryFilter; @@ -11,9 +9,10 @@ import com.tencent.supersonic.chat.query.rule.metric.MetricEntityQuery; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import com.tencent.supersonic.util.DataUtils; +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE; public class EntityQueryTest extends BaseQueryTest { diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/MultiTurnsTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/MultiTurnsTest.java index 22e0c5256..9488da4a7 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/MultiTurnsTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/MultiTurnsTest.java @@ -1,7 +1,5 @@ package com.tencent.supersonic.integration; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE; - import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; import com.tencent.supersonic.chat.query.rule.metric.MetricFilterQuery; @@ -9,11 +7,14 @@ import com.tencent.supersonic.chat.query.rule.metric.MetricGroupByQuery; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import com.tencent.supersonic.util.DataUtils; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import org.junit.Test; import org.junit.jupiter.api.Order; +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE; + public class MultiTurnsTest extends BaseQueryTest { @Test diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/llm/LLMDslParserTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/llm/LLMDslParserTest.java deleted file mode 100644 index 8d77ac2c6..000000000 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/llm/LLMDslParserTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.tencent.supersonic.integration.llm; - -import static org.mockito.Mockito.when; - -import com.tencent.supersonic.chat.api.component.SemanticParser; -import com.tencent.supersonic.chat.api.pojo.ChatContext; -import com.tencent.supersonic.chat.api.pojo.QueryContext; -import com.tencent.supersonic.chat.api.pojo.request.QueryReq; -import com.tencent.supersonic.chat.config.LLMConfig; -import com.tencent.supersonic.chat.parser.llm.dsl.LLMDslParser; -import com.tencent.supersonic.chat.utils.ComponentFactory; -import com.tencent.supersonic.integration.BaseQueryTest; -import com.tencent.supersonic.util.DataUtils; -import org.junit.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -public class LLMDslParserTest extends BaseQueryTest { - - @MockBean - protected LLMConfig llmConfig; - - @Test - public void parse() throws Exception { - String queryText = "周杰伦专辑十一月的萧邦有哪些歌曲"; - QueryReq queryReq = DataUtils.getQueryContextReq(10, queryText); - QueryContext queryContext = new QueryContext(); - queryContext.setRequest(queryReq); - SemanticParser dslParser = ComponentFactory.getSemanticParsers().stream().filter(parser -> { - if (parser instanceof LLMDslParser) { - return true; - } else { - return false; - } - } - ).findFirst().get(); - - when(llmConfig.getUrl()).thenReturn("llmUrl"); - - ChatContext chatCtx = new ChatContext(); - dslParser.parse(queryContext, chatCtx); - } - -} diff --git a/launchers/standalone/src/test/resources/META-INF/spring.factories b/launchers/standalone/src/test/resources/META-INF/spring.factories index a7c81c6cc..953675827 100644 --- a/launchers/standalone/src/test/resources/META-INF/spring.factories +++ b/launchers/standalone/src/test/resources/META-INF/spring.factories @@ -1,5 +1,6 @@ com.tencent.supersonic.chat.api.component.SchemaMapper=\ com.tencent.supersonic.chat.mapper.HanlpDictMapper + com.tencent.supersonic.chat.api.component.SemanticParser=\ com.tencent.supersonic.chat.parser.rule.QueryModeParser, \ com.tencent.supersonic.chat.parser.rule.ContextInheritParser, \ @@ -8,13 +9,18 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\ com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \ com.tencent.supersonic.chat.parser.llm.interpret.MetricInterpretParser # com.tencent.supersonic.chat.parser.llm.DSLQueryFunction + com.tencent.supersonic.chat.api.component.QueryProcessor=\ com.tencent.supersonic.chat.application.processor.SemanticQueryProcessor + com.tencent.supersonic.chat.api.component.SemanticLayer=\ com.tencent.supersonic.knowledge.semantic.LocalSemanticLayer + com.tencent.supersonic.chat.query.QuerySelector=\ com.tencent.supersonic.chat.query.HeuristicQuerySelector + com.tencent.supersonic.chat.application.query.DomainResolver=\ com.tencent.supersonic.chat.application.query.HeuristicDomainResolver + com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\ com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor diff --git a/launchers/standalone/src/test/resources/db/data-h2.sql b/launchers/standalone/src/test/resources/db/data-h2.sql index c97f65959..c2ee76401 100644 --- a/launchers/standalone/src/test/resources/db/data-h2.sql +++ b/launchers/standalone/src/test/resources/db/data-h2.sql @@ -1,2314 +1,1116 @@ -- sample user -insert into s2_user (id, `name`, password, display_name, email) -values (1, 'admin', 'admin', 'admin', 'admin@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (2, 'jack', '123456', 'jack', 'jack@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (3, 'tom', '123456', 'tom', 'tom@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) -values (4, 'lucy', '123456', 'lucy', 'lucy@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); +insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); -- sample models -insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, - updated_by, `admin`, admin_org, viewer, view_org) -VALUES (1, '超音数', 'supersonic', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', - 'admin', 'admin', '', 'admin,tom,jack', 'admin'); -insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, - updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) -VALUES (1, '超音数', 'supersonic', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', - 'admin', '', 0, 'admin,tom,jack', 'admin', ''); -insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, - updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) -VALUES (2, '艺人库', 'singer', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', - 'admin', '', 0, 'admin,tom,jack', 'admin', '{"entityId": 7, "names": ["歌手", "艺人"]}'); -insert into s2_database (id, domain_id, `name`, description, `type`, config, created_at, created_by, - updated_at, updated_by) -VALUES (1, 1, 'H2数据实例', '', 'h2', - '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', - '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin'); -insert into s2_datasource (id, model_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (1, 1, '停留时长统计', 's2_stay_time_statis', '停留时长统计', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_stay_time_statis_stay_hours","expr":"stay_hours","isCreateMetric":1,"name":"停留时长"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, page,user_name,stay_hours FROM s2_stay_time_statis"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, model_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (2, 1, 'PVUV统计', 's2_pv_uv_statis', 'PVUV统计', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","expr":"pv","isCreateMetric":1,"name":"访问次数"},{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","expr":"uv","isCreateMetric":1,"name":"访问人数"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, user_name,page,1 as pv, user_name as uv FROM s2_pv_uv_statis"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, model_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (3, 1, '用户部门', 'user_department', '用户部门', 1, - '{"dimensions":[{"bizName":"department","dateFormat":"yyyy-MM-dd","expr":"department","isCreateDimension":1,"name":"部门","type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[],"queryType":"sql_query","sqlQuery":"SELECT user_name,department FROM s2_user_department"}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource (id, model_id, `name`, biz_name, description, database_id, - datasource_detail, created_at, created_by, updated_at, updated_by) -VALUES (4, 2, '艺人库', 'singer', '艺人库', 1, - '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"act_area","dateFormat":"yyyy-MM-dd","expr":"act_area","isCreateDimension":1,"name":"活跃区域","type":"categorical"},{"bizName":"song_name","dateFormat":"yyyy-MM-dd","expr":"song_name","isCreateDimension":1,"name":"代表作","type":"categorical"},{"bizName":"genre","dateFormat":"yyyy-MM-dd","expr":"genre","isCreateDimension":1,"name":"风格","type":"categorical"}],"identifiers":[{"bizName":"singer_name","name":"歌手名","type":"primary"}],"measures":[{"agg":"sum","bizName":"music_down_cnt","expr":"down_cnt","isCreateMetric":1,"name":"下载量"},{"agg":"sum","bizName":"music_js_play_cnt","expr":"js_play_cnt","isCreateMetric":1,"name":"播放量"},{"agg":"sum","bizName":"music_favor_cnt","expr":"favor_cnt","isCreateMetric":1,"name":"收藏量"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date,singer_name,act_area,song_name,genre,js_play_cnt,down_cnt,favor_cnt FROM singer "}', - '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, model_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (1, 1, 1, 2, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, model_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (2, 1, 1, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_datasource_rela (id, model_id, `datasource_from`, datasource_to, join_key, - created_at, created_by, updated_at, updated_by) -VALUES (3, 1, 2, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type, dim_value_maps) -VALUES (1, 1, 3, '部门', 'department', '部门', 1, 0, 'categorical', NULL, 'department', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY', - '[{"alias":["人力资源","人力"],"bizName":"人力资源","techName":"HR"},{"alias":["营销","销售"],"bizName":"营销部门","techName":"sales"}]'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (2, 1, 1, '用户名', 'user_name', '用户名', 1, 0, 'primary', NULL, 'user_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (3, 1, 2, '页面', 'page', '页面', 1, 2, 'categorical', NULL, 'page', '2023-05-24 00:00:00', - 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (4, 2, 4, '活跃区域', 'act_area', '活跃区域', 1, 2, 'categorical', NULL, 'act_area', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (5, 2, 4, '代表作', 'song_name', '代表作', 1, 2, 'categorical', NULL, 'song_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (6, 2, 4, '风格', 'genre', '风格', 1, 2, 'categorical', NULL, 'genre', '2023-05-24 00:00:00', - 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_dimension (id, model_id, datasource_id, `name`, biz_name, description, status, - sensitive_level, `type`, type_params, expr, created_at, created_by, - updated_at, updated_by, semantic_type) -VALUES (7, 2, 4, '歌手名', 'singer_name', '歌手名', 1, 2, 'categorical', NULL, 'singer_name', - '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (1, 1, '停留时长', 'stay_hours', '停留时长', 1, 2, 'ATOMIC', - '{"expr":"s2_stay_time_statis_stay_hours","measures":[{"agg":"sum","expr":"stay_hours","isCreateMetric":1,"datasourceId":1,"bizName":"s2_stay_time_statis_stay_hours","name":"s2_stay_time_statis_stay_hours"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (2, 1, '访问次数', 'pv', '访问次数', 1, 0, 'ATOMIC', - ' {"expr":"s2_pv_uv_statis_pv","measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","datasourceId":2,"expr":"pv","isCreateMetric":1,"name":"s2_pv_uv_statis_pv"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (3, 1, '访问人数', 'uv', '访问人数', 1, 0, 'ATOMIC', - ' {"expr":"s2_pv_uv_statis_uv","measures":[{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","datasourceId":2,"expr":"uv","isCreateMetric":1,"name":"s2_pv_uv_statis_uv"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (4, 2, '播放量', 'js_play_cnt', '播放量', 1, 2, 'ATOMIC', - '{"expr":"music_js_play_cnt","measures":[{"agg":"sum","expr":"js_play_cnt","isCreateMetric":1,"datasourceId":4,"bizName":"music_js_play_cnt","name":"music_js_play_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (5, 2, '下载量', 'down_cnt', '下载量', 1, 0, 'ATOMIC', - ' {"expr":"music_down_cnt","measures":[{"agg":"sum","bizName":"music_down_cnt","datasourceId":4,"expr":"down_cnt","isCreateMetric":1,"name":"music_down_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); -insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, - type_params, created_at, created_by, updated_at, updated_by, - data_format_type, data_format) -VALUES (6, 2, '收藏量', 'favor_cnt', '收藏量', 1, 0, 'ATOMIC', - ' {"expr":"music_favor_cnt","measures":[{"agg":"sum","bizName":"music_favor_cnt","datasourceId":4,"expr":"favor_cnt","isCreateMetric":1,"name":"music_favor_cnt"}]}', - '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL); +insert into s2_domain (id, `name`, biz_name, parent_id, status, created_at, created_by, updated_at, updated_by, `admin`, admin_org, viewer, view_org) VALUES(1, '超音数', 'supersonic', 0, 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 'admin,tom,jack', 'admin' ); +insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(1, '超音数', 'supersonic', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','' ); +insert into s2_model (id, `name`, biz_name, domain_id, created_at, created_by, updated_at, updated_by, `admin`, admin_org, is_open, viewer, view_org, entity) VALUES(2, '艺人库', 'singer', 1, '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin', '', 0, 'admin,tom,jack', 'admin','{"entityId": 7, "names": ["歌手", "艺人"]}' ); +insert into s2_database (id, `name`, description, `type` ,config ,created_at ,created_by ,updated_at ,updated_by, `admin`) VALUES(1, 'H2数据实例', '', 'h2', '{"password":"semantic","url":"jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false","userName":"root"}', '2023-05-24 00:00:00', 'admin', '2023-05-24 00:00:00', 'admin', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(1, 1, '停留时长统计', 's2_stay_time_statis', '停留时长统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_stay_time_statis_stay_hours","expr":"stay_hours","isCreateMetric":1,"name":"停留时长"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, page,user_name,stay_hours FROM s2_stay_time_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(2, 1, 'PVUV统计', 's2_pv_uv_statis', 'PVUV统计', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"page","dateFormat":"yyyy-MM-dd","expr":"page","isCreateDimension":0,"type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","expr":"pv","isCreateMetric":1,"name":"访问次数"},{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","expr":"uv","isCreateMetric":1,"name":"访问人数"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date, user_name,page,1 as pv, user_name as uv FROM s2_pv_uv_statis"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(3, 1, '用户部门', 'user_department', '用户部门', 1, '{"dimensions":[{"bizName":"department","dateFormat":"yyyy-MM-dd","expr":"department","isCreateDimension":1,"name":"部门","type":"categorical"}],"identifiers":[{"bizName":"user_name","name":"用户名","type":"primary"}],"measures":[],"queryType":"sql_query","sqlQuery":"SELECT user_name,department FROM s2_user_department"}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource (id , model_id, `name`, biz_name, description, database_id ,datasource_detail, created_at, created_by, updated_at, updated_by ) VALUES(4, 2, '艺人库', 'singer', '艺人库', 1, '{"dimensions":[{"bizName":"imp_date","dateFormat":"yyyy-MM-dd","expr":"imp_date","isCreateDimension":0,"type":"time","typeParams":{"isPrimary":"true","timeGranularity":"day"}},{"bizName":"act_area","dateFormat":"yyyy-MM-dd","expr":"act_area","isCreateDimension":1,"name":"活跃区域","type":"categorical"},{"bizName":"song_name","dateFormat":"yyyy-MM-dd","expr":"song_name","isCreateDimension":1,"name":"代表作","type":"categorical"},{"bizName":"genre","dateFormat":"yyyy-MM-dd","expr":"genre","isCreateDimension":1,"name":"风格","type":"categorical"}],"identifiers":[{"bizName":"singer_name","name":"歌手名","type":"primary"}],"measures":[{"agg":"sum","bizName":"music_down_cnt","expr":"down_cnt","isCreateMetric":1,"name":"下载量"},{"agg":"sum","bizName":"music_js_play_cnt","expr":"js_play_cnt","isCreateMetric":1,"name":"播放量"},{"agg":"sum","bizName":"music_favor_cnt","expr":"favor_cnt","isCreateMetric":1,"name":"收藏量"}],"queryType":"sql_query","sqlQuery":"SELECT imp_date,singer_name,act_area,song_name,genre,js_play_cnt,down_cnt,favor_cnt FROM singer "}', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(1, 1, 1, 2, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(2, 1, 1, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_datasource_rela (id , model_id, `datasource_from`, datasource_to, join_key, created_at, created_by, updated_at, updated_by ) VALUES(3, 1, 2, 3, 'user_name', '2023-05-25 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type, dim_value_maps) VALUES(1, 1, 3, '部门', 'department', '部门', 1, 0, 'categorical', NULL, 'department', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY', '[{"alias":["人力资源","人力"],"bizName":"人力资源","techName":"HR"},{"alias":["营销","销售"],"bizName":"营销部门","techName":"sales"}]'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(2, 1, 1, '用户名', 'user_name', '用户名', 1, 0, 'primary', NULL, 'user_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(3, 1, 2, '页面', 'page', '页面', 1, 2, 'categorical', NULL, 'page', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(4, 2, 4, '活跃区域', 'act_area', '活跃区域', 1, 2, 'categorical', NULL, 'act_area', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(5, 2, 4, '代表作', 'song_name', '代表作', 1, 2, 'categorical', NULL, 'song_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(6, 2, 4, '风格', 'genre', '风格', 1, 2, 'categorical', NULL, 'genre', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_dimension (id , model_id, datasource_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, expr, created_at, created_by, updated_at, updated_by, semantic_type) VALUES(7, 2, 4, '歌手名', 'singer_name', '歌手名', 1, 2, 'categorical', NULL, 'singer_name', '2023-05-24 00:00:00', 'admin', '2023-05-25 00:00:00', 'admin', 'CATEGORY'); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(1, 1, '停留时长', 'stay_hours', '停留时长', 1, 2, 'ATOMIC', '{"expr":"s2_stay_time_statis_stay_hours","measures":[{"agg":"sum","expr":"stay_hours","isCreateMetric":1,"datasourceId":1,"bizName":"s2_stay_time_statis_stay_hours","name":"s2_stay_time_statis_stay_hours"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(2, 1, '访问次数', 'pv', '访问次数', 1, 0, 'ATOMIC', ' {"expr":"s2_pv_uv_statis_pv","measures":[{"agg":"sum","bizName":"s2_pv_uv_statis_pv","datasourceId":2,"expr":"pv","isCreateMetric":1,"name":"s2_pv_uv_statis_pv"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(3, 1, '访问人数', 'uv', '访问人数', 1, 0, 'ATOMIC', ' {"expr":"s2_pv_uv_statis_uv","measures":[{"agg":"count_distinct","bizName":"s2_pv_uv_statis_uv","datasourceId":2,"expr":"uv","isCreateMetric":1,"name":"s2_pv_uv_statis_uv"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(4, 2, '播放量', 'js_play_cnt', '播放量', 1, 2, 'ATOMIC', '{"expr":"music_js_play_cnt","measures":[{"agg":"sum","expr":"js_play_cnt","isCreateMetric":1,"datasourceId":4,"bizName":"music_js_play_cnt","name":"music_js_play_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(5, 2, '下载量', 'down_cnt', '下载量', 1, 0, 'ATOMIC', ' {"expr":"music_down_cnt","measures":[{"agg":"sum","bizName":"music_down_cnt","datasourceId":4,"expr":"down_cnt","isCreateMetric":1,"name":"music_down_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); +insert into s2_metric (id, model_id, `name`, biz_name, description, status, sensitive_level, `type`, type_params, created_at, created_by, updated_at, updated_by, data_format_type, data_format) VALUES(6, 2, '收藏量', 'favor_cnt', '收藏量', 1, 0, 'ATOMIC', ' {"expr":"music_favor_cnt","measures":[{"agg":"sum","bizName":"music_favor_cnt","datasourceId":4,"expr":"favor_cnt","isCreateMetric":1,"name":"music_favor_cnt"}]}' , '2023-05-24 17:00:00', 'admin', '2023-05-25 00:00:00', 'admin', NULL, NULL ); -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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), - DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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 (1, 'dimension', 'yyyy-MM-dd', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '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', DATEADD('DAY', -28, CURRENT_DATE()), DATEADD('DAY', -1, CURRENT_DATE()), '[]', '2023-06-01', 'admin', '2023-06-01', 'admin'); insert into s2_auth_groups (group_id, config) -values (1, - '{"modelId":"1","name":"admin-permission","groupId":1,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":[""],"dimensionFilterDescription":"授权admin 页面和停留时长权限","authorizedUsers":["admin"],"authorizedDepartmentIds":[]}'); +values (1, '{"modelId":"1","name":"admin-permission","groupId":1,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":[""],"dimensionFilterDescription":"授权admin 页面和停留时长权限","authorizedUsers":["admin"],"authorizedDepartmentIds":[]}'); insert into s2_auth_groups (group_id, config) -values (2, - '{"modelId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); +values (2, '{"modelId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); -- sample data -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '周杰伦', '中国', '青花瓷', '流行', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '周杰伦', '中国','青花瓷','流行',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '陈奕迅', '中国', '爱情转移', '激情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '陈奕迅', '中国','爱情转移','激情',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '林俊杰', '中国', '美人鱼', '爱情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '林俊杰', '中国','美人鱼','爱情',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '张碧晨', '中国', '光的方向', '流行', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '张碧晨', '中国','光的方向','流行',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '程响', '中国', '人间烟火', '国风', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), '程响', '中国','人间烟火','国风',1000000,1000000,1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); -INSERT INTO singer (imp_date, singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, - favor_cnt) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'Taylor Swift -', '欧美', 'Love Story', '爱情', 1000000, 1000000, 1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); +INSERT INTO singer (imp_date,singer_name,act_area, song_name,genre,js_play_cnt,down_cnt,favor_cnt) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'Taylor Swift +', '欧美','Love Story','爱情',1000000,1000000,1000000); ---demo data for semantic and chat -insert into s2_user_department (user_name, department) -values ('jack', 'HR'); +insert into s2_user_department (user_name, department) values ('jack','HR'); -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'); +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'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p1'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p3'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); -INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -5, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'jack', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', 'p2'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', 'p1'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', 'p3'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', 'p4'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', 'p5'); +INSERT INTO s2_pv_uv_statis (imp_date, user_name, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7636857512911863', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.17663327393462436', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.38943688941552057', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.2715819955225307', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.9358210273119568', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9364586435510802', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9707723036513162', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.8497763866782723', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.15504417761372413', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9507563118298399', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9746364180572994', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.12869214941133378', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.3024970533288409', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.6639702099980812', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', '0.4929901454858626', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.06853040276026445', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8488086078299616', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.8589111177125592', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.5576357066482228', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.8047888670006846', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.766944548494366', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.5280072184505449', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.9693343356046343', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.12805203958456424', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.16963603387027637', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5901202956521101', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.12710364646712236', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.6346530909156196', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.12461289103639872', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.9863947334662437', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.48899961064192987', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', '0.5382796792688207', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', '0.3506568687014143', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.8633072449771709', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.13999135315363687', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.07258740493845894', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5244413940436958', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.13258670732966138', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.6015982054464575', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.05513158944480323', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.6707121735296985', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.9330440339006469', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.5630674323371607', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.8720647566229917', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8331899070546519', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.6712876436249856', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.6694409980332703', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.3703307480606334', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.775368688472696', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.9151205443267096', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.09543108823305857', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.7893992120771057', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.5119923080070498', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.49906724167974936', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.046258282700961884', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.44843595680103954', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.7743935471689718', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5855299615656824', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.9412963512379853', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.8383247587082538', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', '0.14517876867236124', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.9327229861441061', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.19042326582894153', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.6029067818254513', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.21715964747214422', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.34259842721045974', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.7064419016593382', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', '0.5725636566517865', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.22332539583809208', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.8049036189055911', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.6029674758974956', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.11884976360561716', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', '0.7124916829130662', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.5893693718556829', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.602073304496253', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.10491061160039927', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.9006548872378379', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.8545144244288455', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.16915384987875726', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.2271640700690446', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.7807518577160636', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.8919859648888653', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.1564450687270359', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.5840549187653847', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.2213255596777869', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.07868261880306426', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.07710010861455818', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.5131249730162654', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5035035055368601', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8996978291173905', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.057442290722216294', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6443079066865616', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.7398098480748726', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.9835694815034591', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', '0.9879213445635557', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.4020136688147111', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.6698797170128024', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.17325132416789113', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.5784229486763606', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9185978183932058', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.5474783153973963', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.9730731954700215', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.5390873359288765', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.20522241320887713', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4088233242325021', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.7608047695853417', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.2749731221085713', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.06154055374702494', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.460668002022406', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.4474746325306228', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.5761666885467472', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.33233441360339655', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.7426534909874778', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.5841437875889118', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2818296500094526', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.8670888843915217', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.5249294365740248', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.5483356748008438', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.7278566847412673', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.6779976902157362', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.09995341651736978', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.4528538159233879', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5870756885301056', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9842091927290255', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.04580936015706816', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.8814678270145769', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.06517379256096412', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8769832364187129', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.584562279025023', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8102404090621375', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.11481653429176686', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.43422888918962554', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.0684414272594508', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.976546463969412', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.617906858141431', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.08663740247579998', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.7124944606691416', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.1321700521239627', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', '0.3078946609431664', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.6149442855237194', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', '0.5963801306980994', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.6999542038973406', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.4599112653446624', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.20300901401048832', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.39989705958717037', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.2486378364940327', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.16880398079144077', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.73927288385526', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8645283506689198', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.3266940826759587', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.9195490073037541', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.9452523036658287', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.21269683438120535', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.7377502855387184', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.38981597634408716', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7001799391999863', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6616720024008785', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', '0.497721735058096', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.22255613760959603', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.05247640233319417', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.27237572107833363', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.9529452406380252', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.28243045060463157', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.17880444250082506', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.035050038002381156', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.840803223728221', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5318457377361356', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9280332892460665', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.752354382202208', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.1866528331789219', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.7016165545791373', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.4191547989960899', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7025516699007639', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.6160127317884274', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.91223094958137', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.4383056089013998', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.595750781166582', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.9472349338730268', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', '0.0519104588842193', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.48043983034526205', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.14754707786497478', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.36124288370035695', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.21777919493494613', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.22637666702475057', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.9378215576942598', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.3309229261144562', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.7602880453727515', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.9470462487873785', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.6770215935547629', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.1586074803669385', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.2754855564794071', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.8355347738454384', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.7251813505573811', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.006606625589642534', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.304832277753024', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.026368662837989554', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.6855977520602776', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.8193746826441749', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.021179295102459972', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.1533849522536005', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.18893553542301778', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.39870999343833624', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.9985665103520182', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.6961441157700171', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.9861933923851885', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.993076500099477', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.4320547269058953', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.18441071030375877', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.1501504986117118', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.252021845734527', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', '0.24442701577183745', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.07563738855797564', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.34247820646440985', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.9456979276862031', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.19494357263973816', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.9371493867882469', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6136241316589367', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.8922330760877784', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.9001986074661864', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.4889702884422866', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.2689551234431401', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.5223573993758465', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.05042295556527243', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.2717147121880483', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7397093309370814', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.157064341631733', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', '0.7213399784998017', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.764081440588005', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.7514070600074144', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.611647412825278', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.6600796877195596', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.8942204153751679', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.07398121085929721', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.1652506990439564', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5849759516111703', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.1672502732600889', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.7836135556233219', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.26181269644936356', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.6577275876355586', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.3067293364197956', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.8608288543866495', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.814283434116926', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.33993584425872936', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'john', '0.010812798859160089', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5156558224263926', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.46320035330198406', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2651020283994786', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.42467241545664147', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.3695905136678498', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.15269122123348644', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6755688670583248', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.39064306179528907', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.36479296691952023', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', '0.5069249157662691', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.4785315495532231', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.7582526218052175', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.42064109605717914', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.5587757581237022', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.3561686564964428', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7101688305173135', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.6518061375522985', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.7564485884156583', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.36531347293134464', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5201689359070235', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7138792929290383', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.9751003716333827', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.5281906318027629', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.6291356541485003', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.1938712974807698', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', '0.6267850210775459', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.4469970592043767', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.7690659124175409', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.13335067838090386', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.2966621725922035', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.5740481445089863', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.838028890036331', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.8094354537628714', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.5552924586108698', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.49150373927678315', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.7264346889377966', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.9292830287297702', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.3905616258240767', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.15912349648571666', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.6030082006630102', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.8712354035243679', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.7685306377211826', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.2869913942171415', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.7142615166855639', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.5625978475154423', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.13611601734791123', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.6977333962685311', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.35140477709778295', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.8805119222967716', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7014124236538637', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.12759538003439375', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.7515403792213445', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.03700239289885987', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.31674618364630946', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.4491378834800146', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.6742764131652571', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.5286362221140248', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.007890326473113496', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8046560540950831', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7198364371127147', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.7400546712169153', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.16859870460868698', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.8462852684569557', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.010211452005474353', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8617802368201087', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.21667479046797633', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.8667689615468714', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.16140709875863557', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.16713368182304666', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.8957484629768053', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', '0.457835758220534', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.9435170960198477', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.9699253608913104', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.2309897429566834', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.7879705066452681', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.20795869239817255', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.4110352469382019', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.4979592772533561', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.18810865430947044', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', '0.5001240246982048', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.08341934160029707', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.04812784841651041', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4655982693269717', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.8539357978460663', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.9649541785823592', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.8243635648047365', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.929949719929735', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.055983276861168996', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.07845430274829746', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.28257674222099116', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.1578419214960578', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.7853118484860825', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.20790127125904156', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.8650538395535204', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.902116091225815', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', '0.48542770770171373', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.16725337150113984', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.3157444453259486', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.565727220131555', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.2531688065358064', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.9191434620980499', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.9224628853942058', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', '0.3256288410730337', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.9709152566761661', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.9794173893522709', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.16582064407977237', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.2652519246960059', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.04092489871261762', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.3020444893927522', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.4655412764350543', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.9226436424888846', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.4707663393012884', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.3277970119243966', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.4730675479071551', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.10261940477901954', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.4148892373198616', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.2877219827348403', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.16212409974675845', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9567425121214822', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.19795350030679149', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6954199597749198', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.32884293488801164', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.4789917995407148', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.0698927593996298', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.3352267723792438', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.8085116661598726', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.17515060210353794', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.6006963088370202', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8794167536704468', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.04091469320757368', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.6709116812690366', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.4850646101328463', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.547488212623346', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.6301717145008927', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.06123370093612068', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2545600223228257', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.28355287519210803', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.3231348374147818', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.4585172495754063', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.7893945285152268', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.6810596014794181', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.7136031244915907', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', '0.259734039051829', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.7759518703827996', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.06288891046833589', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', '0.8242980461154241', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.36590300307021595', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.20254092528445444', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.5427356081880325', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.1467846603517391', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8975527268892767', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.3483541520806722', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.6922544855316723', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.3690185253006011', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.7564541265683148', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.3634152133342695', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.33740378933701987', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.7942640738315301', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.7894896778233523', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.7153281477198108', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.5546359859065261', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7727157385809087', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.8707097754747494', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.3873936520764878', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.7590305068820566', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.512826935863365', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.19120284727846926', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.5382693105670825', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.826241649014955', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.6133080470571559', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.6452862617544055', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.3025772179023586', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '4.709864550322962E-4', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.024816355013726588', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.8407500495605565', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.8420879584266481', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2719224735814776', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.8939712577294938', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.8086189323362379', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.6063415085381448', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.39783242658234674', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.6085577206028068', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.5154289424127074', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.878436600887031', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5577906295015223', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', '0.1143260282925247', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.312756557275364', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.05548807854726956', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', '0.12140791431139175', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.23897628700410234', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.22223137342481392', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.12379891645900953', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.33729146112854247', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.8816768640060831', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.6301700633426532', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4566295223861714', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.1777378523933678', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.8163769471165477', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.4380805149704541', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2987018822475964', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.6726495645391617', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.8394327461109705', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', '0.820512945501936', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.1580105370757261', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.9961450897279505', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6574891890500061', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5201205570085158', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2445069633928285', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.3155229654901067', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.3665971881269575', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5544977915912215', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.15978771803015113', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.038128748344929186', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.49026304025118594', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.5166802080526571', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.22568230066042194', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.9888634109849955', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.21022365182102054', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', '0.47052993358031114', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.25686122383263454', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.18929054223320718', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.7925339862375451', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.12613308249498645', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7381524971311578', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.08639585437319919', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.9519897106846164', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.33446548574801926', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.40667134603483324', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.17100718420628735', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.4445585525686886', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.47372916928883013', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.19826861093848824', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.13679268112019338', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.9805515708224516', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', '0.4738376165601095', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.5739441073158964', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.8428505498030564', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.32655416551155336', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7055736367780644', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.9621355090189875', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.9665339161730553', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.44309781869697995', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.8651220802537761', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.6451892308277741', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.056797307451316725', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.6847604118085596', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.13428051757364667', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.9814797176951834', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.7386074051153445', 'p3'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4825297824657663', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.06608870508231235', 'p5'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.6278253028988848', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', '0.6705580511822682', 'p1'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.8131712486302015', 'p2'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.8124302447925607', 'p4'); -INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) -VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.039935860913407284', 'p2'); + + +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7636857512911863', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.17663327393462436', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.38943688941552057', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.2715819955225307', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.9358210273119568', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9364586435510802', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9707723036513162', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.8497763866782723', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.15504417761372413', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.9507563118298399', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.9746364180572994', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.12869214941133378', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.3024970533288409', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.6639702099980812', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'lucy', '0.4929901454858626', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.06853040276026445', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8488086078299616', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.8589111177125592', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.5576357066482228', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.8047888670006846', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.766944548494366', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.5280072184505449', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.9693343356046343', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.12805203958456424', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.16963603387027637', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5901202956521101', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.12710364646712236', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.6346530909156196', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.12461289103639872', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.9863947334662437', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.48899961064192987', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'alice', '0.5382796792688207', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'dean', '0.3506568687014143', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.8633072449771709', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.13999135315363687', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.07258740493845894', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5244413940436958', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.13258670732966138', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.6015982054464575', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.05513158944480323', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'alice', '0.6707121735296985', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.9330440339006469', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.5630674323371607', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.8720647566229917', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8331899070546519', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.6712876436249856', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.6694409980332703', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.3703307480606334', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.775368688472696', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.9151205443267096', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.09543108823305857', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'dean', '0.7893992120771057', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.5119923080070498', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.49906724167974936', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.046258282700961884', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.44843595680103954', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.7743935471689718', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5855299615656824', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.9412963512379853', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.8383247587082538', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'lucy', '0.14517876867236124', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.9327229861441061', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.19042326582894153', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.6029067818254513', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.21715964747214422', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.34259842721045974', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.7064419016593382', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'lucy', '0.5725636566517865', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.22332539583809208', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.8049036189055911', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.6029674758974956', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.11884976360561716', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'alice', '0.7124916829130662', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.5893693718556829', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.602073304496253', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.10491061160039927', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.9006548872378379', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.8545144244288455', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.16915384987875726', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.2271640700690446', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.7807518577160636', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.8919859648888653', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.1564450687270359', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.5840549187653847', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.2213255596777869', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.07868261880306426', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.07710010861455818', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.5131249730162654', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5035035055368601', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.8996978291173905', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.057442290722216294', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6443079066865616', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.7398098480748726', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'dean', '0.9835694815034591', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'john', '0.9879213445635557', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.4020136688147111', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.6698797170128024', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.17325132416789113', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'lucy', '0.5784229486763606', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9185978183932058', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.5474783153973963', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.9730731954700215', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.5390873359288765', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'alice', '0.20522241320887713', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4088233242325021', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.7608047695853417', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.2749731221085713', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.06154055374702494', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.460668002022406', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.4474746325306228', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.5761666885467472', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'dean', '0.33233441360339655', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.7426534909874778', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.5841437875889118', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2818296500094526', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.8670888843915217', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'alice', '0.5249294365740248', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.5483356748008438', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.7278566847412673', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.6779976902157362', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.09995341651736978', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.4528538159233879', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.5870756885301056', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.9842091927290255', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.04580936015706816', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.8814678270145769', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.06517379256096412', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8769832364187129', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.584562279025023', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8102404090621375', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.11481653429176686', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.43422888918962554', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.0684414272594508', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.976546463969412', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.617906858141431', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.08663740247579998', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.7124944606691416', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.1321700521239627', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'jack', '0.3078946609431664', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.6149442855237194', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'alice', '0.5963801306980994', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.6999542038973406', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.4599112653446624', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.20300901401048832', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.39989705958717037', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.2486378364940327', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.16880398079144077', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.73927288385526', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.8645283506689198', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.3266940826759587', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.9195490073037541', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.9452523036658287', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.21269683438120535', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.7377502855387184', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.38981597634408716', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7001799391999863', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6616720024008785', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'dean', '0.497721735058096', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.22255613760959603', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.05247640233319417', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'dean', '0.27237572107833363', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'alice', '0.9529452406380252', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.28243045060463157', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'lucy', '0.17880444250082506', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.035050038002381156', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.840803223728221', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.5318457377361356', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9280332892460665', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.752354382202208', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'dean', '0.1866528331789219', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.7016165545791373', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.4191547989960899', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7025516699007639', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.6160127317884274', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'alice', '0.91223094958137', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.4383056089013998', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'jack', '0.595750781166582', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.9472349338730268', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'jack', '0.0519104588842193', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.48043983034526205', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.14754707786497478', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.36124288370035695', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'dean', '0.21777919493494613', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.22637666702475057', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.9378215576942598', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.3309229261144562', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.7602880453727515', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.9470462487873785', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.6770215935547629', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.1586074803669385', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'lucy', '0.2754855564794071', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.8355347738454384', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.7251813505573811', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.006606625589642534', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.304832277753024', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.026368662837989554', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'tom', '0.6855977520602776', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.8193746826441749', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.021179295102459972', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.1533849522536005', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.18893553542301778', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.39870999343833624', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.9985665103520182', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.6961441157700171', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.9861933923851885', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.993076500099477', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.4320547269058953', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.18441071030375877', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.1501504986117118', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.252021845734527', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'lucy', '0.24442701577183745', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.07563738855797564', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.34247820646440985', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.9456979276862031', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.19494357263973816', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.9371493867882469', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6136241316589367', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.8922330760877784', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'dean', '0.9001986074661864', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.4889702884422866', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.2689551234431401', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.5223573993758465', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'tom', '0.05042295556527243', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.2717147121880483', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7397093309370814', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.157064341631733', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'lucy', '0.7213399784998017', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'tom', '0.764081440588005', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.7514070600074144', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.611647412825278', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.6600796877195596', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.8942204153751679', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.07398121085929721', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.1652506990439564', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5849759516111703', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.1672502732600889', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.7836135556233219', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'dean', '0.26181269644936356', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.6577275876355586', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.3067293364197956', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.8608288543866495', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.814283434116926', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.33993584425872936', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'john', '0.010812798859160089', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.5156558224263926', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'jack', '0.46320035330198406', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2651020283994786', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.42467241545664147', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.3695905136678498', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'tom', '0.15269122123348644', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.6755688670583248', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'jack', '0.39064306179528907', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.36479296691952023', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'lucy', '0.5069249157662691', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.4785315495532231', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.7582526218052175', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.42064109605717914', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'dean', '0.5587757581237022', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'lucy', '0.3561686564964428', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7101688305173135', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.6518061375522985', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.7564485884156583', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.36531347293134464', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'jack', '0.5201689359070235', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'john', '0.7138792929290383', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.9751003716333827', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.5281906318027629', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.6291356541485003', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.1938712974807698', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'john', '0.6267850210775459', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.4469970592043767', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.7690659124175409', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.13335067838090386', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'jack', '0.2966621725922035', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.5740481445089863', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'alice', '0.838028890036331', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.8094354537628714', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'alice', '0.5552924586108698', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.49150373927678315', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.7264346889377966', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.9292830287297702', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.3905616258240767', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.15912349648571666', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'alice', '0.6030082006630102', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'lucy', '0.8712354035243679', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.7685306377211826', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.2869913942171415', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.7142615166855639', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.5625978475154423', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.13611601734791123', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'alice', '0.6977333962685311', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.35140477709778295', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.8805119222967716', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.7014124236538637', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.12759538003439375', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.7515403792213445', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'lucy', '0.03700239289885987', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.31674618364630946', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.4491378834800146', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.6742764131652571', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.5286362221140248', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.007890326473113496', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8046560540950831', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7198364371127147', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.7400546712169153', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.16859870460868698', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.8462852684569557', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.010211452005474353', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'alice', '0.8617802368201087', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.21667479046797633', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.8667689615468714', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.16140709875863557', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.16713368182304666', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.8957484629768053', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'tom', '0.457835758220534', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.9435170960198477', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'jack', '0.9699253608913104', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.2309897429566834', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.7879705066452681', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.20795869239817255', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.4110352469382019', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'jack', '0.4979592772533561', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.18810865430947044', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'tom', '0.5001240246982048', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'jack', '0.08341934160029707', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.04812784841651041', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4655982693269717', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'dean', '0.8539357978460663', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'john', '0.9649541785823592', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.8243635648047365', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.929949719929735', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.055983276861168996', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'tom', '0.07845430274829746', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'alice', '0.28257674222099116', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.1578419214960578', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.7853118484860825', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.20790127125904156', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.8650538395535204', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.902116091225815', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'lucy', '0.48542770770171373', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.16725337150113984', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'lucy', '0.3157444453259486', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.565727220131555', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.2531688065358064', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.9191434620980499', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.9224628853942058', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'jack', '0.3256288410730337', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'jack', '0.9709152566761661', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.9794173893522709', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'alice', '0.16582064407977237', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.2652519246960059', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.04092489871261762', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.3020444893927522', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'john', '0.4655412764350543', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'dean', '0.9226436424888846', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.4707663393012884', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.3277970119243966', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'tom', '0.4730675479071551', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'jack', '0.10261940477901954', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'alice', '0.4148892373198616', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.2877219827348403', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.16212409974675845', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.9567425121214822', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.19795350030679149', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.6954199597749198', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'alice', '0.32884293488801164', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'john', '0.4789917995407148', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'lucy', '0.0698927593996298', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.3352267723792438', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.8085116661598726', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.17515060210353794', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.6006963088370202', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.8794167536704468', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.04091469320757368', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'tom', '0.6709116812690366', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.4850646101328463', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'tom', '0.547488212623346', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'dean', '0.6301717145008927', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'lucy', '0.06123370093612068', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'alice', '0.2545600223228257', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'john', '0.28355287519210803', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.3231348374147818', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.4585172495754063', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.7893945285152268', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'john', '0.6810596014794181', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'john', '0.7136031244915907', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'jack', '0.259734039051829', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.7759518703827996', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'john', '0.06288891046833589', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'dean', '0.8242980461154241', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.36590300307021595', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'lucy', '0.20254092528445444', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.5427356081880325', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.1467846603517391', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.8975527268892767', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'dean', '0.3483541520806722', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.6922544855316723', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.3690185253006011', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'tom', '0.7564541265683148', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.3634152133342695', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.33740378933701987', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.7942640738315301', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.7894896778233523', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'jack', '0.7153281477198108', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'tom', '0.5546359859065261', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'john', '0.7727157385809087', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'dean', '0.8707097754747494', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'john', '0.3873936520764878', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.7590305068820566', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'john', '0.512826935863365', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'john', '0.19120284727846926', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'dean', '0.5382693105670825', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'john', '0.826241649014955', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.6133080470571559', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'jack', '0.6452862617544055', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'lucy', '0.3025772179023586', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '4.709864550322962E-4', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.024816355013726588', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -6, CURRENT_DATE()), 'alice', '0.8407500495605565', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'alice', '0.8420879584266481', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'lucy', '0.2719224735814776', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'tom', '0.8939712577294938', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'dean', '0.8086189323362379', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'tom', '0.6063415085381448', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'tom', '0.39783242658234674', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.6085577206028068', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'tom', '0.5154289424127074', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'john', '0.878436600887031', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5577906295015223', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'lucy', '0.1143260282925247', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.312756557275364', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.05548807854726956', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'tom', '0.12140791431139175', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.23897628700410234', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.22223137342481392', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.12379891645900953', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'john', '0.33729146112854247', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.8816768640060831', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -21, CURRENT_DATE()), 'jack', '0.6301700633426532', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -3, CURRENT_DATE()), 'alice', '0.4566295223861714', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.1777378523933678', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.8163769471165477', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'tom', '0.4380805149704541', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2987018822475964', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'dean', '0.6726495645391617', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.8394327461109705', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'dean', '0.820512945501936', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'tom', '0.1580105370757261', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -20, CURRENT_DATE()), 'jack', '0.9961450897279505', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -7, CURRENT_DATE()), 'john', '0.6574891890500061', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'john', '0.5201205570085158', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'alice', '0.2445069633928285', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -17, CURRENT_DATE()), 'john', '0.3155229654901067', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'jack', '0.3665971881269575', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'john', '0.5544977915912215', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.15978771803015113', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'lucy', '0.038128748344929186', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'tom', '0.49026304025118594', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.5166802080526571', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.22568230066042194', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -28, CURRENT_DATE()), 'john', '0.9888634109849955', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'jack', '0.21022365182102054', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'john', '0.47052993358031114', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.25686122383263454', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.18929054223320718', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'jack', '0.7925339862375451', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -12, CURRENT_DATE()), 'john', '0.12613308249498645', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.7381524971311578', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -4, CURRENT_DATE()), 'alice', '0.08639585437319919', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -27, CURRENT_DATE()), 'tom', '0.9519897106846164', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.33446548574801926', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'jack', '0.40667134603483324', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -10, CURRENT_DATE()), 'jack', '0.17100718420628735', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -26, CURRENT_DATE()), 'lucy', '0.4445585525686886', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'tom', '0.47372916928883013', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'john', '0.19826861093848824', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -13, CURRENT_DATE()), 'john', '0.13679268112019338', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -24, CURRENT_DATE()), 'tom', '0.9805515708224516', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'dean', '0.4738376165601095', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'dean', '0.5739441073158964', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'alice', '0.8428505498030564', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'lucy', '0.32655416551155336', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -14, CURRENT_DATE()), 'tom', '0.7055736367780644', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -2, CURRENT_DATE()), 'tom', '0.9621355090189875', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -9, CURRENT_DATE()), 'jack', '0.9665339161730553', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'dean', '0.44309781869697995', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -18, CURRENT_DATE()), 'tom', '0.8651220802537761', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.6451892308277741', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -16, CURRENT_DATE()), 'dean', '0.056797307451316725', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.6847604118085596', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -23, CURRENT_DATE()), 'jack', '0.13428051757364667', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -29, CURRENT_DATE()), 'lucy', '0.9814797176951834', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -11, CURRENT_DATE()), 'tom', '0.7386074051153445', 'p3'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -25, CURRENT_DATE()), 'alice', '0.4825297824657663', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.06608870508231235', 'p5'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -22, CURRENT_DATE()), 'lucy', '0.6278253028988848', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -1, CURRENT_DATE()), 'alice', '0.6705580511822682', 'p1'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -19, CURRENT_DATE()), 'alice', '0.8131712486302015', 'p2'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -15, CURRENT_DATE()), 'lucy', '0.8124302447925607', 'p4'); +INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATEADD('DAY', -8, CURRENT_DATE()), 'lucy', '0.039935860913407284', 'p2'); diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index 7cba53bc2..6cfe1a90c 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context` 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 , @@ -148,7 +149,6 @@ COMMENT ON TABLE s2_model IS 'model information'; CREATE TABLE `s2_database` ( `id` INT NOT NULL AUTO_INCREMENT, - `domain_id` INT NOT NULL , `name` varchar(255) NOT NULL , `description` varchar(500) DEFAULT NULL , `version` varchar(64) DEFAULT NULL , @@ -158,6 +158,8 @@ CREATE TABLE `s2_database` ( `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'; diff --git a/launchers/standalone/src/test/resources/logback-spring.xml b/launchers/standalone/src/test/resources/logback-spring.xml index b6d7a041d..810eda9b3 100644 --- a/launchers/standalone/src/test/resources/logback-spring.xml +++ b/launchers/standalone/src/test/resources/logback-spring.xml @@ -1,13 +1,13 @@ logback - + - %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n + %d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n @@ -46,8 +46,7 @@ - ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 90 @@ -75,8 +74,7 @@ - ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz - + ${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz 30 diff --git a/pom.xml b/pom.xml index 0651f854f..16f20bff0 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ 1.34.0 1.23.0 3.2.4 + 4.5.1 4.5 0.7.3 @@ -142,10 +143,10 @@ maven-resources-plugin 3.1.0 - - - - + + org.apache.maven.plugins + maven-checkstyle-plugin + @@ -175,8 +176,9 @@ - validate + checkstyle-validation validate + true check diff --git a/semantic/api/pom.xml b/semantic/api/pom.xml index 974e7ca6c..7c6b480e6 100644 --- a/semantic/api/pom.xml +++ b/semantic/api/pom.xml @@ -12,11 +12,11 @@ semantic-api - - - - - + + + + + com.clickhouse clickhouse-jdbc diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/DimValueMap.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/DimValueMap.java index c02409cd2..8bdc0f7fd 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/DimValueMap.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/DimValueMap.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.semantic.api.model.pojo; +import lombok.Data; + import java.util.ArrayList; import java.util.List; -import lombok.Data; @Data public class DimValueMap { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Entity.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Entity.java index 84b51045d..a547a98fb 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Entity.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Entity.java @@ -1,11 +1,12 @@ package com.tencent.supersonic.semantic.api.model.pojo; -import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; +import java.util.List; + @Data @ToString @AllArgsConstructor diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/MetricTypeParams.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/MetricTypeParams.java index 059539173..78d403b23 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/MetricTypeParams.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/MetricTypeParams.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.semantic.api.model.pojo; -import com.google.common.collect.Lists; import java.util.List; +import com.google.common.collect.Lists; import lombok.Data; @Data diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java index 8d7ee8d16..8533a21bd 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java @@ -1,8 +1,10 @@ package com.tencent.supersonic.semantic.api.model.request; +import com.google.common.collect.Lists; import com.tencent.supersonic.semantic.api.model.enums.DataTypeEnum; import lombok.Data; import org.apache.commons.lang3.StringUtils; +import java.util.List; @Data @@ -10,8 +12,6 @@ public class DatabaseReq { private Long id; - private Long domainId; - private String name; private String type; @@ -32,6 +32,10 @@ public class DatabaseReq { private String url; + private List admins = Lists.newArrayList(); + + private List viewers = Lists.newArrayList(); + public String getUrl() { if (StringUtils.isNotBlank(url)) { return url; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatasourceReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatasourceReq.java index bb6de1589..21a96ad0b 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatasourceReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatasourceReq.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.semantic.api.model.pojo.Identify; import com.tencent.supersonic.semantic.api.model.pojo.Measure; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import java.util.List; + import lombok.Data; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DimensionReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DimensionReq.java index d9b8228f3..18db7e743 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DimensionReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DimensionReq.java @@ -2,10 +2,13 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.pojo.DimValueMap; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; -import java.util.List; + import javax.validation.constraints.NotNull; + import lombok.Data; +import java.util.List; + @Data public class DimensionReq extends SchemaItem { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java index 9ae91c276..1540baeeb 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.semantic.api.model.request; -import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; +import com.tencent.supersonic.common.pojo.DataFormat; import lombok.Data; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricReq.java index b0531f6ef..092a8c537 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricReq.java @@ -4,8 +4,8 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.enums.MetricTypeEnum; import com.tencent.supersonic.semantic.api.model.pojo.Measure; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class MetricReq extends MetricBaseReq { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelReq.java index 3f04ed8ab..a900b00b1 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelReq.java @@ -3,9 +3,10 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.pojo.Entity; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; +import lombok.Data; + import java.util.ArrayList; import java.util.List; -import lombok.Data; @Data diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelSchemaFilterReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelSchemaFilterReq.java index 1ccccfb72..8d8c72d90 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelSchemaFilterReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/ModelSchemaFilterReq.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.semantic.api.model.request; -import java.util.List; import lombok.Data; +import java.util.List; + @Data public class ModelSchemaFilterReq { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java index 668754e0f..7c24171c1 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java @@ -2,8 +2,8 @@ package com.tencent.supersonic.semantic.api.model.request; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.PageBaseReq; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class PageSchemaItemReq extends PageBaseReq { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/SqlExecuteReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/SqlExecuteReq.java index 4dacd1558..22458abc9 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/SqlExecuteReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/SqlExecuteReq.java @@ -7,11 +7,10 @@ import lombok.Data; @Data public class SqlExecuteReq { - public static final String LIMIT_WRAPPER = " select * from ( %s ) a limit 1000 "; @NotNull(message = "modelId can not be null") - private Long modelId; + private Long id; @NotBlank(message = "sql can not be blank") private String sql; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DatabaseResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DatabaseResp.java index 5e4a00eee..fb085d85d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DatabaseResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DatabaseResp.java @@ -1,7 +1,10 @@ package com.tencent.supersonic.semantic.api.model.response; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.google.common.collect.Lists; +import com.tencent.supersonic.common.pojo.RecordInfo; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -12,12 +15,18 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Builder -public class DatabaseResp { +public class DatabaseResp extends RecordInfo { private Long id; private String name; + private String description; + + private List admins = Lists.newArrayList(); + + private List viewers = Lists.newArrayList(); + private String type; private String url; @@ -30,6 +39,12 @@ public class DatabaseResp { private String version; + private boolean hasPermission = false; + + private boolean hasUsePermission = false; + + private boolean hasEditPermission = false; + public String getHost() { Pattern p = Pattern.compile("jdbc:(?\\w+):.*((//)|@)(?.+):(?\\d+).*"); Matcher m = p.matcher(url); diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DimensionResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DimensionResp.java index f8acb9578..8fd7c8608 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DimensionResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DimensionResp.java @@ -3,7 +3,9 @@ package com.tencent.supersonic.semantic.api.model.response; import com.tencent.supersonic.semantic.api.model.pojo.DimValueMap; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; + import java.util.List; + import lombok.Data; import lombok.ToString; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DomainResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DomainResp.java index 3854a6832..13c66160c 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DomainResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/DomainResp.java @@ -2,7 +2,9 @@ package com.tencent.supersonic.semantic.api.model.response; import com.tencent.supersonic.semantic.api.model.pojo.Entity; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; + import java.util.List; + import lombok.Data; import lombok.ToString; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelResp.java index bb5dad154..1e1e9b8c4 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelResp.java @@ -2,10 +2,11 @@ package com.tencent.supersonic.semantic.api.model.response; import com.tencent.supersonic.semantic.api.model.pojo.Entity; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; -import java.util.List; import lombok.Data; import lombok.ToString; +import java.util.List; + @Data @ToString public class ModelResp extends SchemaItem { diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelSchemaResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelSchemaResp.java index 175828547..5d948a936 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelSchemaResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ModelSchemaResp.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.semantic.api.model.response; import java.util.List; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/QueryResultWithSchemaResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/QueryResultWithSchemaResp.java index ccd369685..72ddcd66c 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/QueryResultWithSchemaResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/QueryResultWithSchemaResp.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.semantic.api.model.pojo.QueryResult; import java.util.List; import java.util.Map; + import lombok.Data; import lombok.ToString; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Criterion.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Criterion.java index 25f3a191d..162779ba1 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Criterion.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Criterion.java @@ -1,8 +1,10 @@ package com.tencent.supersonic.semantic.api.query.pojo; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; + import java.util.Arrays; import java.util.List; + import lombok.Data; @Data diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Filter.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Filter.java index 885cc576f..9c3d2506e 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Filter.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Filter.java @@ -1,7 +1,9 @@ package com.tencent.supersonic.semantic.api.query.pojo; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; + import java.util.List; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Param.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Param.java index 3b178e29b..7d47d71ed 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Param.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/pojo/Param.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.semantic.api.query.pojo; import javax.validation.constraints.NotBlank; + import lombok.Data; @Data diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/QueryStructReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/QueryStructReq.java index 27d29b7bf..70c45adff 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/QueryStructReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/QueryStructReq.java @@ -1,15 +1,17 @@ package com.tencent.supersonic.semantic.api.query.request; import com.google.common.collect.Lists; -import com.tencent.supersonic.common.pojo.Aggregator; -import com.tencent.supersonic.common.pojo.DateConf; -import com.tencent.supersonic.common.pojo.Order; import com.tencent.supersonic.semantic.api.query.pojo.Cache; import com.tencent.supersonic.semantic.api.query.pojo.Filter; import com.tencent.supersonic.semantic.api.query.pojo.Param; +import com.tencent.supersonic.common.pojo.Aggregator; +import com.tencent.supersonic.common.pojo.DateConf; +import com.tencent.supersonic.common.pojo.Order; + import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; + import lombok.Data; import org.apache.commons.codec.digest.DigestUtils; import org.apache.logging.log4j.util.Strings; diff --git a/semantic/model/pom.xml b/semantic/model/pom.xml index 260dd45d9..264bfe3ae 100644 --- a/semantic/model/pom.xml +++ b/semantic/model/pom.xml @@ -17,6 +17,7 @@ + org.projectlombok @@ -74,6 +75,7 @@ + org.testng testng diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/CatalogImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/CatalogImpl.java index 52ac857fe..d68c256ad 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/CatalogImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/CatalogImpl.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Set; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; @Slf4j @Component @@ -48,7 +49,12 @@ public class CatalogImpl implements Catalog { } public DatabaseResp getDatabaseByModelId(Long modelId) { - return databaseService.getDatabaseByModelId(modelId); + List datasourceResps = datasourceService.getDatasourceList(modelId); + if (!CollectionUtils.isEmpty(datasourceResps)) { + Long databaseId = datasourceResps.iterator().next().getDatabaseId(); + return databaseService.getDatabase(databaseId); + } + return null; } @Override diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java index 136fad907..598d40290 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java @@ -2,13 +2,10 @@ package com.tencent.supersonic.semantic.model.application; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.semantic.api.model.request.DatabaseReq; -import com.tencent.supersonic.semantic.api.model.response.ModelResp; -import com.tencent.supersonic.semantic.api.model.response.DomainResp; -import com.tencent.supersonic.semantic.api.model.response.SqlParserResp; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; +import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; -import com.tencent.supersonic.semantic.model.domain.DomainService; -import com.tencent.supersonic.semantic.model.domain.ModelService; +import com.tencent.supersonic.semantic.model.domain.DatasourceService; import com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter.EngineAdaptor; import com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter.EngineAdaptorFactory; import com.tencent.supersonic.semantic.model.domain.dataobject.DatabaseDO; @@ -19,11 +16,11 @@ import com.tencent.supersonic.semantic.model.domain.utils.SqlUtils; import com.tencent.supersonic.semantic.model.domain.DatabaseService; import com.tencent.supersonic.semantic.model.domain.pojo.Database; import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.apache.logging.log4j.util.Strings; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; @Slf4j @@ -32,19 +29,14 @@ public class DatabaseServiceImpl implements DatabaseService { private final SqlUtils sqlUtils; private DatabaseRepository databaseRepository; - - private DomainService domainService; - - private ModelService modelService; + private DatasourceService datasourceService; public DatabaseServiceImpl(DatabaseRepository databaseRepository, SqlUtils sqlUtils, - DomainService domainService, - ModelService modelService) { + @Lazy DatasourceService datasourceService) { this.databaseRepository = databaseRepository; this.sqlUtils = sqlUtils; - this.modelService = modelService; - this.domainService = domainService; + this.datasourceService = datasourceService; } @Override @@ -56,17 +48,52 @@ public class DatabaseServiceImpl implements DatabaseService { @Override public DatabaseResp createOrUpdateDatabase(DatabaseReq databaseReq, User user) { Database database = DatabaseConverter.convert(databaseReq, user); - Optional databaseDOOptional = getDatabaseDO(databaseReq.getDomainId()); - if (databaseDOOptional.isPresent()) { - DatabaseDO databaseDO = DatabaseConverter.convert(database, databaseDOOptional.get()); + DatabaseDO databaseDO = getDatabaseDO(databaseReq.getId()); + if (databaseDO != null) { + DatabaseConverter.convert(database, databaseDO); databaseRepository.updateDatabase(databaseDO); return DatabaseConverter.convert(databaseDO); } - DatabaseDO databaseDO = DatabaseConverter.convert(database); + databaseDO = DatabaseConverter.convert(database); databaseRepository.createDatabase(databaseDO); return DatabaseConverter.convert(databaseDO); } + @Override + public List getDatabaseList(User user) { + List databaseResps = + databaseRepository.getDatabaseList() + .stream().map(DatabaseConverter::convert) + .collect(Collectors.toList()); + fillPermission(databaseResps, user); + return databaseResps; + } + + private void fillPermission(List databaseResps, User user) { + databaseResps.forEach(databaseResp -> { + if (databaseResp.getAdmins().contains(user.getName()) + || user.getName().equalsIgnoreCase(databaseResp.getCreatedBy())) { + databaseResp.setHasPermission(true); + databaseResp.setHasEditPermission(true); + databaseResp.setHasUsePermission(true); + } + if (databaseResp.getViewers().contains(databaseResp.getCreatedBy())) { + databaseResp.setHasUsePermission(true); + } + }); + } + + @Override + public void deleteDatabase(Long databaseId) { + List datasourceResps = datasourceService.getDatasourceList(databaseId); + if (!CollectionUtils.isEmpty(datasourceResps)) { + List datasourceNames = datasourceResps.stream() + .map(DatasourceResp::getName).collect(Collectors.toList()); + String message = String.format("该数据库被数据源%s使用,无法删除", datasourceNames); + throw new RuntimeException(message); + } + databaseRepository.deleteDatabase(databaseId); + } @Override public DatabaseResp getDatabase(Long id) { @@ -74,36 +101,20 @@ public class DatabaseServiceImpl implements DatabaseService { return DatabaseConverter.convert(databaseDO); } - // one domain only has one database @Override - public DatabaseResp getDatabaseByDomainId(Long domainId) { - Optional databaseDO = getDatabaseDO(domainId); - return databaseDO.map(DatabaseConverter::convert).orElse(null); - } - - @Override - public DatabaseResp getDatabaseByModelId(Long modelId) { - ModelResp modelResp = modelService.getModel(modelId); - Map domainRespMap = domainService.getDomainMap(); - Long domainId = modelResp.getDomainId(); - Optional databaseDO = getDatabaseDO(domainId); - while (!databaseDO.isPresent()) { - DomainResp domainResp = domainRespMap.get(domainId); - if (domainResp == null) { - return null; - } - domainId = domainResp.getParentId(); - databaseDO = getDatabaseDO(domainId); - } - return databaseDO.map(DatabaseConverter::convert).orElse(null); - } - - @Override - public QueryResultWithSchemaResp executeSql(String sql, Long modelId) { - DatabaseResp databaseResp = getDatabaseByModelId(modelId); + public QueryResultWithSchemaResp executeSql(String sql, Long id, User user) { + DatabaseResp databaseResp = getDatabase(id); if (databaseResp == null) { return new QueryResultWithSchemaResp(); } + List admins = databaseResp.getAdmins(); + if (!admins.contains(user.getName()) + || !databaseResp.getCreatedBy().equalsIgnoreCase(user.getName())) { + String message = String.format("您暂无当前数据库%s权限, 请联系数据库管理员%s开通", + databaseResp.getName(), + String.join(",", admins)); + throw new RuntimeException(message); + } return executeSql(sql, databaseResp); } @@ -112,17 +123,6 @@ public class DatabaseServiceImpl implements DatabaseService { return queryWithColumns(sql, databaseResp); } - @Override - public QueryResultWithSchemaResp queryWithColumns(SqlParserResp sqlParser) { - if (Strings.isEmpty(sqlParser.getSourceId())) { - log.warn("data base id is empty"); - return null; - } - DatabaseResp databaseResp = getDatabase(Long.parseLong(sqlParser.getSourceId())); - log.info("database info:{}", databaseResp); - return queryWithColumns(sqlParser.getSql(), databaseResp); - } - private QueryResultWithSchemaResp queryWithColumns(String sql, DatabaseResp databaseResp) { QueryResultWithSchemaResp queryResultWithColumns = new QueryResultWithSchemaResp(); SqlUtils sqlUtils = this.sqlUtils.init(databaseResp); @@ -131,9 +131,8 @@ public class DatabaseServiceImpl implements DatabaseService { return queryResultWithColumns; } - private Optional getDatabaseDO(Long domainId) { - List databaseDOS = databaseRepository.getDatabaseByDomainId(domainId); - return databaseDOS.stream().findFirst(); + private DatabaseDO getDatabaseDO(Long id) { + return databaseRepository.getDatabase(id); } @Override diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatasourceServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatasourceServiceImpl.java index 7cb800a5b..4073f83cf 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatasourceServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatasourceServiceImpl.java @@ -8,6 +8,9 @@ import com.tencent.supersonic.semantic.api.model.pojo.DatasourceDetail; import com.tencent.supersonic.semantic.api.model.pojo.Dim; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; import com.tencent.supersonic.semantic.api.model.pojo.Measure; +import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import com.tencent.supersonic.semantic.api.model.request.DatasourceRelaReq; import com.tencent.supersonic.semantic.api.model.request.DatasourceReq; import com.tencent.supersonic.semantic.api.model.request.DateInfoReq; @@ -20,9 +23,6 @@ import com.tencent.supersonic.semantic.api.model.response.DimensionResp; import com.tencent.supersonic.semantic.api.model.response.ItemDateResp; import com.tencent.supersonic.semantic.api.model.response.MeasureResp; import com.tencent.supersonic.semantic.api.model.response.MetricResp; -import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import com.tencent.supersonic.semantic.model.domain.DatabaseService; import com.tencent.supersonic.semantic.model.domain.DatasourceService; import com.tencent.supersonic.semantic.model.domain.DimensionService; @@ -190,6 +190,13 @@ public class DatasourceServiceImpl implements DatasourceService { return DatasourceConverter.convertList(datasourceRepository.getDatasourceList()); } + @Override + public List getDatasourceListByDatabaseId(Long databaseId) { + return getDatasourceList().stream() + .filter(datasourceResp -> datasourceResp.getDatabaseId().equals(databaseId)) + .collect(Collectors.toList()); + } + @Override public List getDatasourceListNoMeasurePrefix(Long modelId) { List datasourceResps = getDatasourceList(modelId); @@ -346,7 +353,8 @@ public class DatasourceServiceImpl implements DatasourceService { List datasourceResps = getDatasourceList(modelId); List metricResps = metricService.getMetrics(modelId); metricYamlTplList.addAll(MetricYamlManager.convert2YamlObj(MetricConverter.metricInfo2Metric(metricResps))); - DatabaseResp databaseResp = databaseService.getDatabaseByModelId(modelId); + Long databaseId = datasourceResps.iterator().next().getDatabaseId(); + DatabaseResp databaseResp = databaseService.getDatabase(databaseId); List dimensionResps = dimensionService.getDimensions(modelId); for (DatasourceResp datasourceResp : datasourceResps) { datasourceYamlTplList.add(DatasourceYamlManager.convert2YamlObj( diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java index d874cf492..162f3b0b1 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java @@ -92,12 +92,12 @@ public class DomainServiceImpl implements DomainService { @Override public List getDomainListWithAdminAuth(User user) { - Set domainWithAuthAll = getDomainAuthSet(user.getName(), AuthType.VISIBLE); + Set domainWithAuthAll = getDomainAuthSet(user.getName(), AuthType.ADMIN); if (!CollectionUtils.isEmpty(domainWithAuthAll)) { List domainIds = domainWithAuthAll.stream().map(DomainResp::getId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); } - List modelResps = modelService.getModelAuthList(user.getName(), AuthType.VISIBLE); + List modelResps = modelService.getModelAuthList(user.getName(), AuthType.ADMIN); if (!CollectionUtils.isEmpty(modelResps)) { List domainIds = modelResps.stream().map(ModelResp::getDomainId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ViewInfoServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ViewInfoServiceImpl.java index aa8ae065d..18d5ffb0d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ViewInfoServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ViewInfoServiceImpl.java @@ -5,13 +5,14 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.semantic.api.model.request.ViewInfoReq; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; -import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaRelaResp; +import com.tencent.supersonic.semantic.api.model.response.MetricResp; +import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDO; +import com.tencent.supersonic.semantic.model.domain.repository.ViewInfoRepository; import com.tencent.supersonic.semantic.model.domain.DatasourceService; import com.tencent.supersonic.semantic.model.domain.DimensionService; import com.tencent.supersonic.semantic.model.domain.MetricService; -import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDO; -import com.tencent.supersonic.semantic.model.domain.repository.ViewInfoRepository; + import java.util.Date; import java.util.List; import org.assertj.core.util.Lists; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/Catalog.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/Catalog.java index fd4b664db..90d30755f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/Catalog.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/Catalog.java @@ -1,14 +1,14 @@ package com.tencent.supersonic.semantic.model.domain; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; +import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; import com.tencent.supersonic.semantic.api.model.response.ItemDateResp; import com.tencent.supersonic.semantic.api.model.response.MetricResp; -import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import java.util.List; import java.util.Map; import java.util.Set; @@ -16,7 +16,6 @@ import java.util.Set; public interface Catalog { DatabaseResp getDatabase(Long id); - DatabaseResp getDatabaseByModelId(Long modelId); List getDatasourceList(Long modelId); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatabaseService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatabaseService.java index 020d6e2a6..11d0546cf 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatabaseService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatabaseService.java @@ -4,28 +4,25 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.semantic.api.model.request.DatabaseReq; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; -import com.tencent.supersonic.semantic.api.model.response.SqlParserResp; +import java.util.List; public interface DatabaseService { QueryResultWithSchemaResp executeSql(String sql, DatabaseResp databaseResp); - QueryResultWithSchemaResp executeSql(String sql, Long domainId); - - DatabaseResp getDatabaseByModelId(Long modelId); + QueryResultWithSchemaResp executeSql(String sql, Long id, User user); boolean testConnect(DatabaseReq databaseReq, User user); DatabaseResp createOrUpdateDatabase(DatabaseReq databaseReq, User user); + List getDatabaseList(User user); + + void deleteDatabase(Long databaseId); + DatabaseResp getDatabase(Long id); - // one domain only has one database - DatabaseResp getDatabaseByDomainId(Long domainId); - - QueryResultWithSchemaResp queryWithColumns(SqlParserResp sqlParser); - QueryResultWithSchemaResp getDbNames(Long id); QueryResultWithSchemaResp getTables(Long id, String db); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatasourceService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatasourceService.java index 5ef2ac2fb..e9fbd11e3 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatasourceService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DatasourceService.java @@ -3,15 +3,15 @@ package com.tencent.supersonic.semantic.model.domain; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; +import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; +import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import com.tencent.supersonic.semantic.api.model.request.DatasourceRelaReq; import com.tencent.supersonic.semantic.api.model.request.DatasourceReq; import com.tencent.supersonic.semantic.api.model.response.DatasourceRelaResp; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.ItemDateResp; import com.tencent.supersonic.semantic.api.model.response.MeasureResp; -import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; -import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl; import java.util.List; import java.util.Map; import java.util.Set; @@ -22,11 +22,13 @@ public interface DatasourceService { DatasourceResp updateDatasource(DatasourceReq datasourceReq, User user) throws Exception; - List getDatasourceListNoMeasurePrefix(Long domainId); + List getDatasourceListNoMeasurePrefix(Long modelId); + + List getDatasourceListByDatabaseId(Long databaseId); List getDatasourceList(); - List getDatasourceList(Long domainId); + List getDatasourceList(Long modelId); Map getDatasourceMap(); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java index 56f31ad70..565167b8a 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java @@ -5,6 +5,7 @@ import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.semantic.api.model.request.DomainReq; import com.tencent.supersonic.semantic.api.model.request.DomainUpdateReq; import com.tencent.supersonic.semantic.api.model.response.DomainResp; + import java.util.List; import java.util.Map; import java.util.Set; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java index 9bfad94f8..a100689dd 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java @@ -6,6 +6,7 @@ import com.tencent.supersonic.semantic.api.model.request.ModelReq; import com.tencent.supersonic.semantic.api.model.request.ModelSchemaFilterReq; import com.tencent.supersonic.semantic.api.model.response.ModelResp; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; + import java.util.List; import java.util.Map; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/ClickHouseAdaptor.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/ClickHouseAdaptor.java index 974a0e329..4a3d48e7a 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/ClickHouseAdaptor.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/ClickHouseAdaptor.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.semantic.api.model.enums.TimeDimensionEnum; +import com.tencent.supersonic.common.pojo.Constants; public class ClickHouseAdaptor extends EngineAdaptor { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/MysqlAdaptor.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/MysqlAdaptor.java index 3759ecf2c..03475dcd7 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/MysqlAdaptor.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/adaptor/engineadapter/MysqlAdaptor.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.semantic.api.model.enums.TimeDimensionEnum; +import com.tencent.supersonic.common.pojo.Constants; public class MysqlAdaptor extends EngineAdaptor { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDO.java index 58074d9ec..7086861ae 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDO.java @@ -3,17 +3,11 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class DatabaseDO { - /** - * + * */ private Long id; - /** - * 主题域ID - */ - private Long domainId; - /** * 名称 */ @@ -25,7 +19,7 @@ public class DatabaseDO { private String description; /** - * + * */ private String version; @@ -54,46 +48,39 @@ public class DatabaseDO { */ private String updatedBy; + /** + * + */ + private String admin; + + /** + * + */ + private String viewer; + /** * 配置信息 */ private String config; /** - * @return id + * + * @return id */ public Long getId() { return id; } /** - * @param id + * + * @param id */ public void setId(Long id) { this.id = id; } - /** - * 主题域ID - * - * @return domain_id 主题域ID - */ - public Long getDomainId() { - return domainId; - } - - /** - * 主题域ID - * - * @param domainId 主题域ID - */ - public void setDomainId(Long domainId) { - this.domainId = domainId; - } - /** * 名称 - * * @return name 名称 */ public String getName() { @@ -102,7 +89,6 @@ public class DatabaseDO { /** * 名称 - * * @param name 名称 */ public void setName(String name) { @@ -111,7 +97,6 @@ public class DatabaseDO { /** * 描述 - * * @return description 描述 */ public String getDescription() { @@ -120,7 +105,6 @@ public class DatabaseDO { /** * 描述 - * * @param description 描述 */ public void setDescription(String description) { @@ -128,14 +112,16 @@ public class DatabaseDO { } /** - * @return version + * + * @return version */ public String getVersion() { return version; } /** - * @param version + * + * @param version */ public void setVersion(String version) { this.version = version == null ? null : version.trim(); @@ -143,7 +129,6 @@ public class DatabaseDO { /** * 类型 mysql,clickhouse,tdw - * * @return type 类型 mysql,clickhouse,tdw */ public String getType() { @@ -152,7 +137,6 @@ public class DatabaseDO { /** * 类型 mysql,clickhouse,tdw - * * @param type 类型 mysql,clickhouse,tdw */ public void setType(String type) { @@ -161,7 +145,6 @@ public class DatabaseDO { /** * 创建时间 - * * @return created_at 创建时间 */ public Date getCreatedAt() { @@ -170,7 +153,6 @@ public class DatabaseDO { /** * 创建时间 - * * @param createdAt 创建时间 */ public void setCreatedAt(Date createdAt) { @@ -179,7 +161,6 @@ public class DatabaseDO { /** * 创建人 - * * @return created_by 创建人 */ public String getCreatedBy() { @@ -188,7 +169,6 @@ public class DatabaseDO { /** * 创建人 - * * @param createdBy 创建人 */ public void setCreatedBy(String createdBy) { @@ -197,7 +177,6 @@ public class DatabaseDO { /** * 更新时间 - * * @return updated_at 更新时间 */ public Date getUpdatedAt() { @@ -206,7 +185,6 @@ public class DatabaseDO { /** * 更新时间 - * * @param updatedAt 更新时间 */ public void setUpdatedAt(Date updatedAt) { @@ -215,7 +193,6 @@ public class DatabaseDO { /** * 更新人 - * * @return updated_by 更新人 */ public String getUpdatedBy() { @@ -224,16 +201,46 @@ public class DatabaseDO { /** * 更新人 - * * @param updatedBy 更新人 */ public void setUpdatedBy(String updatedBy) { this.updatedBy = updatedBy == null ? null : updatedBy.trim(); } + /** + * + * @return admin + */ + public String getAdmin() { + return admin; + } + + /** + * + * @param admin + */ + public void setAdmin(String admin) { + this.admin = admin == null ? null : admin.trim(); + } + + /** + * + * @return viewer + */ + public String getViewer() { + return viewer; + } + + /** + * + * @param viewer + */ + public void setViewer(String viewer) { + this.viewer = viewer == null ? null : viewer.trim(); + } + /** * 配置信息 - * * @return config 配置信息 */ public String getConfig() { @@ -242,10 +249,9 @@ public class DatabaseDO { /** * 配置信息 - * * @param config 配置信息 */ public void setConfig(String config) { this.config = config == null ? null : config.trim(); } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDOExample.java index 70e40e882..59959af7d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatabaseDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class DatabaseDOExample { - /** * s2_database */ @@ -32,6 +31,7 @@ public class DatabaseDOExample { protected Integer limitEnd; /** + * * @mbg.generated */ public DatabaseDOExample() { @@ -39,6 +39,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void setOrderByClause(String orderByClause) { @@ -46,6 +47,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public String getOrderByClause() { @@ -53,6 +55,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void setDistinct(boolean distinct) { @@ -60,6 +63,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public boolean isDistinct() { @@ -67,6 +71,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public List getOredCriteria() { @@ -74,6 +79,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void or(Criteria criteria) { @@ -81,6 +87,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public Criteria or() { @@ -90,6 +97,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public Criteria createCriteria() { @@ -101,6 +109,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ protected Criteria createCriteriaInternal() { @@ -109,6 +118,7 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void clear() { @@ -118,13 +128,15 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void setLimitStart(Integer limitStart) { - this.limitStart = limitStart; + this.limitStart=limitStart; } /** + * * @mbg.generated */ public Integer getLimitStart() { @@ -132,13 +144,15 @@ public class DatabaseDOExample { } /** + * * @mbg.generated */ public void setLimitEnd(Integer limitEnd) { - this.limitEnd = limitEnd; + this.limitEnd=limitEnd; } /** + * * @mbg.generated */ public Integer getLimitEnd() { @@ -149,7 +163,6 @@ public class DatabaseDOExample { * s2_database null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -250,66 +263,6 @@ public class DatabaseDOExample { return (Criteria) this; } - public Criteria andDomainIdIsNull() { - addCriterion("domain_id is null"); - return (Criteria) this; - } - - public Criteria andDomainIdIsNotNull() { - addCriterion("domain_id is not null"); - return (Criteria) this; - } - - public Criteria andDomainIdEqualTo(Long value) { - addCriterion("domain_id =", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdNotEqualTo(Long value) { - addCriterion("domain_id <>", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdGreaterThan(Long value) { - addCriterion("domain_id >", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdGreaterThanOrEqualTo(Long value) { - addCriterion("domain_id >=", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdLessThan(Long value) { - addCriterion("domain_id <", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdLessThanOrEqualTo(Long value) { - addCriterion("domain_id <=", value, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdIn(List values) { - addCriterion("domain_id in", values, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdNotIn(List values) { - addCriterion("domain_id not in", values, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdBetween(Long value1, Long value2) { - addCriterion("domain_id between", value1, value2, "domainId"); - return (Criteria) this; - } - - public Criteria andDomainIdNotBetween(Long value1, Long value2) { - addCriterion("domain_id not between", value1, value2, "domainId"); - return (Criteria) this; - } - public Criteria andNameIsNull() { addCriterion("name is null"); return (Criteria) this; @@ -849,6 +802,146 @@ public class DatabaseDOExample { addCriterion("updated_by not between", value1, value2, "updatedBy"); return (Criteria) this; } + + public Criteria andAdminIsNull() { + addCriterion("admin is null"); + return (Criteria) this; + } + + public Criteria andAdminIsNotNull() { + addCriterion("admin is not null"); + return (Criteria) this; + } + + public Criteria andAdminEqualTo(String value) { + addCriterion("admin =", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminNotEqualTo(String value) { + addCriterion("admin <>", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminGreaterThan(String value) { + addCriterion("admin >", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminGreaterThanOrEqualTo(String value) { + addCriterion("admin >=", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminLessThan(String value) { + addCriterion("admin <", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminLessThanOrEqualTo(String value) { + addCriterion("admin <=", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminLike(String value) { + addCriterion("admin like", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminNotLike(String value) { + addCriterion("admin not like", value, "admin"); + return (Criteria) this; + } + + public Criteria andAdminIn(List values) { + addCriterion("admin in", values, "admin"); + return (Criteria) this; + } + + public Criteria andAdminNotIn(List values) { + addCriterion("admin not in", values, "admin"); + return (Criteria) this; + } + + public Criteria andAdminBetween(String value1, String value2) { + addCriterion("admin between", value1, value2, "admin"); + return (Criteria) this; + } + + public Criteria andAdminNotBetween(String value1, String value2) { + addCriterion("admin not between", value1, value2, "admin"); + return (Criteria) this; + } + + public Criteria andViewerIsNull() { + addCriterion("viewer is null"); + return (Criteria) this; + } + + public Criteria andViewerIsNotNull() { + addCriterion("viewer is not null"); + return (Criteria) this; + } + + public Criteria andViewerEqualTo(String value) { + addCriterion("viewer =", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerNotEqualTo(String value) { + addCriterion("viewer <>", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerGreaterThan(String value) { + addCriterion("viewer >", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerGreaterThanOrEqualTo(String value) { + addCriterion("viewer >=", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerLessThan(String value) { + addCriterion("viewer <", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerLessThanOrEqualTo(String value) { + addCriterion("viewer <=", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerLike(String value) { + addCriterion("viewer like", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerNotLike(String value) { + addCriterion("viewer not like", value, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerIn(List values) { + addCriterion("viewer in", values, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerNotIn(List values) { + addCriterion("viewer not in", values, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerBetween(String value1, String value2) { + addCriterion("viewer between", value1, value2, "viewer"); + return (Criteria) this; + } + + public Criteria andViewerNotBetween(String value1, String value2) { + addCriterion("viewer not between", value1, value2, "viewer"); + return (Criteria) this; + } } /** @@ -865,7 +958,6 @@ public class DatabaseDOExample { * s2_database null */ public static class Criterion { - private String condition; private Object value; @@ -882,6 +974,38 @@ public class DatabaseDOExample { private String typeHandler; + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + protected Criterion(String condition) { super(); this.condition = condition; @@ -917,37 +1041,5 @@ public class DatabaseDOExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDO.java index 9c6db09cb..7aef7702b 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDO.java @@ -3,7 +3,6 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class DatasourceDO { - /** * */ diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDOExample.java index 961e622af..41882e1fb 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class DatasourceDOExample { - /** * s2_datasource */ @@ -149,7 +148,6 @@ public class DatasourceDOExample { * s2_datasource null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -855,7 +853,6 @@ public class DatasourceDOExample { * s2_datasource null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDO.java index 45d25af7f..8b366e057 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDO.java @@ -3,7 +3,6 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class DatasourceRelaDO { - /** * */ diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDOExample.java index aceb27da4..9b04af596 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DatasourceRelaDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class DatasourceRelaDOExample { - /** * s2_datasource_rela */ @@ -149,7 +148,6 @@ public class DatasourceRelaDOExample { * s2_datasource_rela null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -775,7 +773,6 @@ public class DatasourceRelaDOExample { * s2_datasource_rela null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDO.java index 403f5ef86..13f6896f7 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDO.java @@ -3,7 +3,6 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class DimensionDO { - /** * 维度ID */ diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDOExample.java index 67a7bb84c..14d62dec9 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DimensionDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class DimensionDOExample { - /** * s2_dimension */ @@ -149,7 +148,6 @@ public class DimensionDOExample { * s2_dimension null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -1325,7 +1323,6 @@ public class DimensionDOExample { * s2_dimension null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDO.java index 48e791125..79e93ce94 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDO.java @@ -3,7 +3,6 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class DomainDO { - /** * 自增ID */ @@ -76,7 +75,6 @@ public class DomainDO { /** * 自增ID - * * @return id 自增ID */ public Long getId() { @@ -85,7 +83,6 @@ public class DomainDO { /** * 自增ID - * * @param id 自增ID */ public void setId(Long id) { @@ -94,7 +91,6 @@ public class DomainDO { /** * 主题域名称 - * * @return name 主题域名称 */ public String getName() { @@ -103,7 +99,6 @@ public class DomainDO { /** * 主题域名称 - * * @param name 主题域名称 */ public void setName(String name) { @@ -112,7 +107,6 @@ public class DomainDO { /** * 内部名称 - * * @return biz_name 内部名称 */ public String getBizName() { @@ -121,7 +115,6 @@ public class DomainDO { /** * 内部名称 - * * @param bizName 内部名称 */ public void setBizName(String bizName) { @@ -130,7 +123,6 @@ public class DomainDO { /** * 父主题域ID - * * @return parent_id 父主题域ID */ public Long getParentId() { @@ -139,7 +131,6 @@ public class DomainDO { /** * 父主题域ID - * * @param parentId 父主题域ID */ public void setParentId(Long parentId) { @@ -148,7 +139,6 @@ public class DomainDO { /** * 主题域状态 - * * @return status 主题域状态 */ public Integer getStatus() { @@ -157,7 +147,6 @@ public class DomainDO { /** * 主题域状态 - * * @param status 主题域状态 */ public void setStatus(Integer status) { @@ -166,7 +155,6 @@ public class DomainDO { /** * 创建时间 - * * @return created_at 创建时间 */ public Date getCreatedAt() { @@ -175,7 +163,6 @@ public class DomainDO { /** * 创建时间 - * * @param createdAt 创建时间 */ public void setCreatedAt(Date createdAt) { @@ -184,7 +171,6 @@ public class DomainDO { /** * 创建人 - * * @return created_by 创建人 */ public String getCreatedBy() { @@ -193,7 +179,6 @@ public class DomainDO { /** * 创建人 - * * @param createdBy 创建人 */ public void setCreatedBy(String createdBy) { @@ -202,7 +187,6 @@ public class DomainDO { /** * 更新时间 - * * @return updated_at 更新时间 */ public Date getUpdatedAt() { @@ -211,7 +195,6 @@ public class DomainDO { /** * 更新时间 - * * @param updatedAt 更新时间 */ public void setUpdatedAt(Date updatedAt) { @@ -220,7 +203,6 @@ public class DomainDO { /** * 更新人 - * * @return updated_by 更新人 */ public String getUpdatedBy() { @@ -229,7 +211,6 @@ public class DomainDO { /** * 更新人 - * * @param updatedBy 更新人 */ public void setUpdatedBy(String updatedBy) { @@ -238,7 +219,6 @@ public class DomainDO { /** * 主题域管理员 - * * @return admin 主题域管理员 */ public String getAdmin() { @@ -247,7 +227,6 @@ public class DomainDO { /** * 主题域管理员 - * * @param admin 主题域管理员 */ public void setAdmin(String admin) { @@ -256,7 +235,6 @@ public class DomainDO { /** * 主题域管理员组织 - * * @return admin_org 主题域管理员组织 */ public String getAdminOrg() { @@ -265,7 +243,6 @@ public class DomainDO { /** * 主题域管理员组织 - * * @param adminOrg 主题域管理员组织 */ public void setAdminOrg(String adminOrg) { @@ -274,7 +251,6 @@ public class DomainDO { /** * 主题域是否公开 - * * @return is_open 主题域是否公开 */ public Integer getIsOpen() { @@ -283,7 +259,6 @@ public class DomainDO { /** * 主题域是否公开 - * * @param isOpen 主题域是否公开 */ public void setIsOpen(Integer isOpen) { @@ -292,7 +267,6 @@ public class DomainDO { /** * 主题域可用用户 - * * @return viewer 主题域可用用户 */ public String getViewer() { @@ -301,7 +275,6 @@ public class DomainDO { /** * 主题域可用用户 - * * @param viewer 主题域可用用户 */ public void setViewer(String viewer) { @@ -310,7 +283,6 @@ public class DomainDO { /** * 主题域可用组织 - * * @return view_org 主题域可用组织 */ public String getViewOrg() { @@ -319,7 +291,6 @@ public class DomainDO { /** * 主题域可用组织 - * * @param viewOrg 主题域可用组织 */ public void setViewOrg(String viewOrg) { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDOExample.java index 397f44785..63aa4d4ad 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/DomainDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class DomainDOExample { - /** * s2_domain */ @@ -149,7 +148,6 @@ public class DomainDOExample { * s2_domain null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -1125,7 +1123,6 @@ public class DomainDOExample { * s2_domain null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java index 3e75f81d2..a74ee01eb 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class MetricDOExample { - /** * s2_metric */ @@ -149,7 +148,6 @@ public class MetricDOExample { * s2_metric null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -1195,7 +1193,6 @@ public class MetricDOExample { * s2_metric null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ModelDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ModelDOExample.java index 147839739..793478173 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ModelDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ModelDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class ModelDOExample { - /** * s2_model */ @@ -149,7 +148,6 @@ public class ModelDOExample { * s2_model null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -1065,7 +1063,6 @@ public class ModelDOExample { * s2_model null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ViewInfoDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ViewInfoDOExample.java index e00972682..180247475 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ViewInfoDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/ViewInfoDOExample.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.List; public class ViewInfoDOExample { - /** * s2_view_info */ @@ -149,7 +148,6 @@ public class ViewInfoDOExample { * s2_view_info null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -655,7 +653,6 @@ public class ViewInfoDOExample { * s2_view_info null */ public static class Criterion { - private String condition; private Object value; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/manager/DatasourceYamlManager.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/manager/DatasourceYamlManager.java index a9ba48b4c..74f78b4b1 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/manager/DatasourceYamlManager.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/manager/DatasourceYamlManager.java @@ -4,17 +4,17 @@ import com.tencent.supersonic.semantic.api.model.pojo.DatasourceDetail; import com.tencent.supersonic.semantic.api.model.pojo.Dim; import com.tencent.supersonic.semantic.api.model.pojo.Identify; import com.tencent.supersonic.semantic.api.model.pojo.Measure; -import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl; import com.tencent.supersonic.semantic.api.model.yaml.DimensionTimeTypeParamsTpl; import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; import com.tencent.supersonic.semantic.api.model.yaml.IdentifyYamlTpl; import com.tencent.supersonic.semantic.api.model.yaml.MeasureYamlTpl; +import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; +import com.tencent.supersonic.semantic.model.domain.utils.SysTimeDimensionBuilder; import com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter.EngineAdaptor; import com.tencent.supersonic.semantic.model.domain.adaptor.engineadapter.EngineAdaptorFactory; import com.tencent.supersonic.semantic.model.domain.pojo.Datasource; import com.tencent.supersonic.semantic.model.domain.pojo.DatasourceQueryEnum; -import com.tencent.supersonic.semantic.model.domain.utils.SysTimeDimensionBuilder; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Database.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Database.java index 122d5af92..2e743a2f0 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Database.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Database.java @@ -3,6 +3,9 @@ package com.tencent.supersonic.semantic.model.domain.pojo; import com.tencent.supersonic.common.pojo.RecordInfo; import lombok.Data; +import org.assertj.core.util.Lists; + +import java.util.List; @Data public class Database extends RecordInfo { @@ -25,5 +28,8 @@ public class Database extends RecordInfo { private ConnectInfo connectInfo; + private List admins = Lists.newArrayList(); + + private List viewers = Lists.newArrayList(); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Dimension.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Dimension.java index fba360e7e..e7aa2cde7 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Dimension.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Dimension.java @@ -3,8 +3,8 @@ package com.tencent.supersonic.semantic.model.domain.pojo; import com.tencent.supersonic.semantic.api.model.pojo.DimValueMap; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; -import java.util.List; import lombok.Data; +import java.util.List; @Data public class Dimension extends SchemaItem { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Domain.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Domain.java index d4b2726c6..3470147da 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Domain.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Domain.java @@ -1,10 +1,10 @@ package com.tencent.supersonic.semantic.model.domain.pojo; -import com.tencent.supersonic.common.pojo.enums.StatusEnum; import com.tencent.supersonic.semantic.api.model.pojo.Entity; -import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import com.tencent.supersonic.semantic.api.model.request.DomainReq; +import com.tencent.supersonic.common.pojo.enums.StatusEnum; +import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import java.util.List; import lombok.Data; import org.springframework.beans.BeanUtils; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/JdbcDataSource.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/JdbcDataSource.java index fe96ffd49..c4f24750b 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/JdbcDataSource.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/JdbcDataSource.java @@ -9,6 +9,7 @@ import com.alibaba.druid.wall.WallFilter; import com.tencent.supersonic.semantic.api.model.enums.DataTypeEnum; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.model.domain.utils.JdbcDataSourceUtils; + import java.util.Arrays; import java.util.Map; import java.util.Properties; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/MetaFilter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/MetaFilter.java index 087662383..947fb0ae0 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/MetaFilter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/MetaFilter.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.semantic.model.domain.pojo; -import java.util.List; import lombok.Data; +import java.util.List; @Data diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Model.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Model.java index 5ee661b85..299384ddf 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Model.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Model.java @@ -5,10 +5,11 @@ import com.tencent.supersonic.common.pojo.enums.StatusEnum; import com.tencent.supersonic.semantic.api.model.pojo.Entity; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import com.tencent.supersonic.semantic.api.model.request.ModelReq; -import java.util.List; import lombok.Data; import org.springframework.beans.BeanUtils; +import java.util.List; + @Data public class Model extends SchemaItem { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DatabaseRepository.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DatabaseRepository.java index 67f3fcd68..a907c9e10 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DatabaseRepository.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DatabaseRepository.java @@ -12,6 +12,7 @@ public interface DatabaseRepository { DatabaseDO getDatabase(Long id); - List getDatabaseByDomainId(Long domainId); + List getDatabaseList(); + void deleteDatabase(Long id); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DateInfoRepository.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DateInfoRepository.java index 5ace70fc1..e5d313b80 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DateInfoRepository.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DateInfoRepository.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.semantic.model.domain.repository; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; import com.tencent.supersonic.semantic.api.model.request.DateInfoReq; import com.tencent.supersonic.semantic.model.domain.dataobject.DateInfoDO; + import java.util.List; public interface DateInfoRepository { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DomainRepository.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DomainRepository.java index 99b48704b..5aacb9b9e 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DomainRepository.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/DomainRepository.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.semantic.model.domain.repository; import com.tencent.supersonic.semantic.model.domain.dataobject.DomainDO; + import java.util.List; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/MetricRepository.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/MetricRepository.java index b65d1aaae..891233dd0 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/MetricRepository.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/repository/MetricRepository.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.semantic.model.domain.repository; -import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter; +import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; + import java.util.List; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java index 90aaf8290..92009aa1b 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java @@ -7,7 +7,9 @@ import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.model.domain.dataobject.DatabaseDO; import com.tencent.supersonic.semantic.model.domain.pojo.ConnectInfo; import com.tencent.supersonic.semantic.model.domain.pojo.Database; +import java.util.Arrays; import java.util.Date; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; public class DatabaseConverter { @@ -33,6 +35,8 @@ public class DatabaseConverter { database.setId(databaseDO.getId()); BeanUtils.copyProperties(database, databaseDO); databaseDO.setConfig(JSONObject.toJSONString(database.getConnectInfo())); + databaseDO.setAdmin(String.join(",", database.getAdmins())); + databaseDO.setViewer(String.join(",", database.getViewers())); return databaseDO; } @@ -41,6 +45,8 @@ public class DatabaseConverter { DatabaseDO databaseDO = new DatabaseDO(); BeanUtils.copyProperties(database, databaseDO); databaseDO.setConfig(JSONObject.toJSONString(database.getConnectInfo())); + databaseDO.setAdmin(String.join(",", database.getAdmins())); + databaseDO.setViewer(String.join(",", database.getViewers())); return databaseDO; } @@ -52,6 +58,12 @@ public class DatabaseConverter { databaseResp.setUrl(connectInfo.getUrl()); databaseResp.setPassword(connectInfo.getPassword()); databaseResp.setUsername(connectInfo.getUserName()); + if (StringUtils.isNotBlank(databaseDO.getAdmin())) { + databaseResp.setAdmins(Arrays.asList(databaseDO.getAdmin().split(","))); + } + if (StringUtils.isNotBlank(databaseDO.getViewer())) { + databaseResp.setViewers(Arrays.asList(databaseDO.getViewer().split(","))); + } return databaseResp; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatasourceConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatasourceConverter.java index 56066a31b..53359290a 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatasourceConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatasourceConverter.java @@ -3,8 +3,6 @@ package com.tencent.supersonic.semantic.model.domain.utils; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.tencent.supersonic.auth.api.authentication.pojo.User; -import com.tencent.supersonic.common.pojo.enums.StatusEnum; -import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.semantic.api.model.enums.MetricTypeEnum; import com.tencent.supersonic.semantic.api.model.pojo.DatasourceDetail; import com.tencent.supersonic.semantic.api.model.pojo.Dim; @@ -17,6 +15,8 @@ import com.tencent.supersonic.semantic.api.model.request.MetricReq; import com.tencent.supersonic.semantic.api.model.response.DatasourceRelaResp; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.MeasureResp; +import com.tencent.supersonic.common.pojo.enums.StatusEnum; +import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceRelaDO; import com.tencent.supersonic.semantic.model.domain.pojo.Datasource; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DimensionConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DimensionConverter.java index 59688fc7d..67e8f7e9a 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DimensionConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DimensionConverter.java @@ -1,18 +1,20 @@ package com.tencent.supersonic.semantic.model.domain.utils; import com.alibaba.fastjson.JSONObject; -import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.semantic.api.model.pojo.DimValueMap; +import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; import com.tencent.supersonic.semantic.api.model.request.DimensionReq; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; -import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl; +import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDO; import com.tencent.supersonic.semantic.model.domain.pojo.Dimension; + import java.util.ArrayList; import java.util.List; import java.util.Map; + import org.apache.logging.log4j.util.Strings; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; @@ -46,8 +48,8 @@ public class DimensionConverter { public static DimensionResp convert2DimensionResp(DimensionDO dimensionDO, - Map fullPathMap, - Map datasourceRespMap) { + Map fullPathMap, + Map datasourceRespMap) { DimensionResp dimensionResp = new DimensionResp(); BeanUtils.copyProperties(dimensionDO, dimensionResp); dimensionResp.setFullPath(fullPathMap.get(dimensionDO.getModelId()) + dimensionDO.getBizName()); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/JdbcDataSourceUtils.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/JdbcDataSourceUtils.java index 0d83aaee0..7b6750dfc 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/JdbcDataSourceUtils.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/JdbcDataSourceUtils.java @@ -10,9 +10,9 @@ import static com.tencent.supersonic.common.pojo.Constants.PATTERN_JDBC_TYPE; import static com.tencent.supersonic.common.pojo.Constants.SPACE; import com.alibaba.druid.util.StringUtils; -import com.tencent.supersonic.common.util.MD5Util; import com.tencent.supersonic.semantic.api.model.enums.DataTypeEnum; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; +import com.tencent.supersonic.common.util.MD5Util; import com.tencent.supersonic.semantic.model.domain.pojo.Database; import com.tencent.supersonic.semantic.model.domain.pojo.JdbcDataSource; import java.sql.Connection; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/ModelConvert.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/ModelConvert.java index 0aabce1a5..d0f8794b5 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/ModelConvert.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/ModelConvert.java @@ -11,11 +11,11 @@ import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.api.model.response.ModelResp; import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDO; import com.tencent.supersonic.semantic.model.domain.pojo.Model; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import java.util.Arrays; import java.util.Date; import java.util.Map; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; public class ModelConvert { @@ -57,7 +57,7 @@ public class ModelConvert { } public static ModelResp convert(ModelDO modelDO, - Map domainRespMap) { + Map domainRespMap) { ModelResp modelResp = convert(modelDO); DomainResp domainResp = domainRespMap.get(modelResp.getDomainId()); if (domainResp != null) { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/SqlUtils.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/SqlUtils.java index bf9a75a6e..ea2f71963 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/SqlUtils.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/SqlUtils.java @@ -2,8 +2,8 @@ package com.tencent.supersonic.semantic.model.domain.utils; import static com.tencent.supersonic.common.pojo.Constants.AT_SYMBOL; -import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.semantic.api.model.enums.DataTypeEnum; +import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.model.domain.pojo.JdbcDataSource; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatabaseDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatabaseDOMapper.java index 538accb00..8f0df9a85 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatabaseDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatabaseDOMapper.java @@ -2,58 +2,68 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DatabaseDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DatabaseDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DatabaseDOMapper { - /** + * * @mbg.generated */ long countByExample(DatabaseDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(DatabaseDO record); /** + * * @mbg.generated */ int insertSelective(DatabaseDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(DatabaseDOExample example); /** + * * @mbg.generated */ List selectByExample(DatabaseDOExample example); /** + * * @mbg.generated */ DatabaseDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(DatabaseDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(DatabaseDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(DatabaseDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceDOMapper.java index 49ee9a404..c9631c170 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceDOMapper.java @@ -2,58 +2,68 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DatasourceDOMapper { - /** + * * @mbg.generated */ long countByExample(DatasourceDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(DatasourceDO record); /** + * * @mbg.generated */ int insertSelective(DatasourceDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(DatasourceDOExample example); /** + * * @mbg.generated */ List selectByExample(DatasourceDOExample example); /** + * * @mbg.generated */ DatasourceDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(DatasourceDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(DatasourceDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(DatasourceDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceRelaDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceRelaDOMapper.java index e347807a2..30c425935 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceRelaDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DatasourceRelaDOMapper.java @@ -2,48 +2,56 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceRelaDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceRelaDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DatasourceRelaDOMapper { - /** + * * @mbg.generated */ long countByExample(DatasourceRelaDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(DatasourceRelaDO record); /** + * * @mbg.generated */ int insertSelective(DatasourceRelaDO record); /** + * * @mbg.generated */ List selectByExample(DatasourceRelaDOExample example); /** + * * @mbg.generated */ DatasourceRelaDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(DatasourceRelaDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(DatasourceRelaDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DateInfoMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DateInfoMapper.java index bc682046e..57617967f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DateInfoMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DateInfoMapper.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; import com.tencent.supersonic.semantic.model.domain.dataobject.DateInfoDO; + import java.util.List; import org.apache.ibatis.annotations.Mapper; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOCustomMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOCustomMapper.java index b96005c00..f9bb9a746 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOCustomMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOCustomMapper.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDO; + import java.util.List; import org.apache.ibatis.annotations.Mapper; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOMapper.java index ab690c405..50065e02e 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DimensionDOMapper.java @@ -2,58 +2,68 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DimensionDOMapper { - /** + * * @mbg.generated */ long countByExample(DimensionDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(DimensionDO record); /** + * * @mbg.generated */ int insertSelective(DimensionDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(DimensionDOExample example); /** + * * @mbg.generated */ List selectByExample(DimensionDOExample example); /** + * * @mbg.generated */ DimensionDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(DimensionDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(DimensionDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(DimensionDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DomainDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DomainDOMapper.java index c1780515e..e3cc8be39 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DomainDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/DomainDOMapper.java @@ -2,48 +2,56 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.DomainDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DomainDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DomainDOMapper { - /** + * * @mbg.generated */ long countByExample(DomainDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(DomainDO record); /** + * * @mbg.generated */ int insertSelective(DomainDO record); /** + * * @mbg.generated */ List selectByExample(DomainDOExample example); /** + * * @mbg.generated */ DomainDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(DomainDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(DomainDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOCustomMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOCustomMapper.java index 6f93a3849..ae8e64d73 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOCustomMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOCustomMapper.java @@ -1,8 +1,9 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; -import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter; + import java.util.List; +import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOMapper.java index dbaef94d9..c0c036d42 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/MetricDOMapper.java @@ -2,58 +2,68 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface MetricDOMapper { - /** + * * @mbg.generated */ long countByExample(MetricDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(MetricDO record); /** + * * @mbg.generated */ int insertSelective(MetricDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(MetricDOExample example); /** + * * @mbg.generated */ List selectByExample(MetricDOExample example); /** + * * @mbg.generated */ MetricDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(MetricDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(MetricDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(MetricDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ModelDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ModelDOMapper.java index 090cdf85e..9395e78a8 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ModelDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ModelDOMapper.java @@ -3,73 +3,86 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDO; import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDOExample; import java.util.List; + import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface ModelDOMapper { - /** + * * @mbg.generated */ long countByExample(ModelDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(ModelDO record); /** + * * @mbg.generated */ int insertSelective(ModelDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(ModelDOExample example); /** + * * @mbg.generated */ List selectByExample(ModelDOExample example); /** + * * @mbg.generated */ ModelDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByExampleSelective(@Param("record") ModelDO record, @Param("example") ModelDOExample example); /** + * * @mbg.generated */ int updateByExampleWithBLOBs(@Param("record") ModelDO record, @Param("example") ModelDOExample example); /** + * * @mbg.generated */ int updateByExample(@Param("record") ModelDO record, @Param("example") ModelDOExample example); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(ModelDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(ModelDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(ModelDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ViewInfoDOMapper.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ViewInfoDOMapper.java index 0d296c553..848d0868f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ViewInfoDOMapper.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/mapper/ViewInfoDOMapper.java @@ -2,58 +2,68 @@ package com.tencent.supersonic.semantic.model.infrastructure.mapper; import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDO; import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDOExample; -import java.util.List; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface ViewInfoDOMapper { - /** + * * @mbg.generated */ long countByExample(ViewInfoDOExample example); /** + * * @mbg.generated */ int deleteByPrimaryKey(Long id); /** + * * @mbg.generated */ int insert(ViewInfoDO record); /** + * * @mbg.generated */ int insertSelective(ViewInfoDO record); /** + * * @mbg.generated */ List selectByExampleWithBLOBs(ViewInfoDOExample example); /** + * * @mbg.generated */ List selectByExample(ViewInfoDOExample example); /** + * * @mbg.generated */ ViewInfoDO selectByPrimaryKey(Long id); /** + * * @mbg.generated */ int updateByPrimaryKeySelective(ViewInfoDO record); /** + * * @mbg.generated */ int updateByPrimaryKeyWithBLOBs(ViewInfoDO record); /** + * * @mbg.generated */ int updateByPrimaryKey(ViewInfoDO record); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatabaseRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatabaseRepositoryImpl.java index fde25f9b7..c0767d052 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatabaseRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatabaseRepositoryImpl.java @@ -36,11 +36,13 @@ public class DatabaseRepositoryImpl implements DatabaseRepository { } @Override - public List getDatabaseByDomainId(Long domainId) { - DatabaseDOExample databaseDOExample = new DatabaseDOExample(); - databaseDOExample.createCriteria().andDomainIdEqualTo(domainId); - return databaseDOMapper.selectByExampleWithBLOBs(databaseDOExample); + public List getDatabaseList() { + return databaseDOMapper.selectByExampleWithBLOBs(new DatabaseDOExample()); } + @Override + public void deleteDatabase(Long id) { + databaseDOMapper.deleteByPrimaryKey(id); + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatasourceRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatasourceRepositoryImpl.java index e6c713299..8d39ec0bc 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatasourceRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DatasourceRepositoryImpl.java @@ -7,7 +7,9 @@ import com.tencent.supersonic.semantic.model.domain.dataobject.DatasourceRelaDOE import com.tencent.supersonic.semantic.model.domain.repository.DatasourceRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DatasourceDOMapper; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DatasourceRelaDOMapper; + import java.util.List; + import org.springframework.stereotype.Component; @@ -20,7 +22,7 @@ public class DatasourceRepositoryImpl implements DatasourceRepository { private DatasourceRelaDOMapper datasourceRelaDOMapper; public DatasourceRepositoryImpl(DatasourceDOMapper datasourceMapper, - DatasourceRelaDOMapper datasourceRelaDOMapper) { + DatasourceRelaDOMapper datasourceRelaDOMapper) { this.datasourceMapper = datasourceMapper; this.datasourceRelaDOMapper = datasourceRelaDOMapper; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DateInfoRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DateInfoRepositoryImpl.java index 43b2b1ad6..6ac386c14 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DateInfoRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DateInfoRepositoryImpl.java @@ -3,9 +3,9 @@ package com.tencent.supersonic.semantic.model.infrastructure.repository; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Stopwatch; -import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter; import com.tencent.supersonic.semantic.api.model.request.DateInfoReq; +import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.semantic.model.domain.dataobject.DateInfoDO; import com.tencent.supersonic.semantic.model.domain.repository.DateInfoRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DateInfoMapper; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java index da692bf93..8102d28d7 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java @@ -2,11 +2,13 @@ package com.tencent.supersonic.semantic.model.infrastructure.repository; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDOExample; -import com.tencent.supersonic.semantic.model.domain.pojo.DimensionFilter; import com.tencent.supersonic.semantic.model.domain.repository.DimensionRepository; +import com.tencent.supersonic.semantic.model.domain.pojo.DimensionFilter; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DimensionDOCustomMapper; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DimensionDOMapper; + import java.util.List; + import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; @@ -20,7 +22,7 @@ public class DimensionRepositoryImpl implements DimensionRepository { public DimensionRepositoryImpl(DimensionDOMapper dimensionDOMapper, - DimensionDOCustomMapper dimensionDOCustomMapper) { + DimensionDOCustomMapper dimensionDOCustomMapper) { this.dimensionDOMapper = dimensionDOMapper; this.dimensionDOCustomMapper = dimensionDOCustomMapper; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DomainRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DomainRepositoryImpl.java index 582c976f6..8b6a475f0 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DomainRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DomainRepositoryImpl.java @@ -5,6 +5,7 @@ import com.tencent.supersonic.semantic.model.domain.dataobject.DomainDOExample; import com.tencent.supersonic.semantic.model.domain.repository.DomainRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DomainDOMapper; import java.util.List; + import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java index dbe58d0f0..175a0e4e3 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java @@ -20,7 +20,7 @@ public class MetricRepositoryImpl implements MetricRepository { private MetricDOCustomMapper metricDOCustomMapper; public MetricRepositoryImpl(MetricDOMapper metricDOMapper, - MetricDOCustomMapper metricDOCustomMapper) { + MetricDOCustomMapper metricDOCustomMapper) { this.metricDOMapper = metricDOMapper; this.metricDOCustomMapper = metricDOCustomMapper; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ModelRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ModelRepositoryImpl.java index c12e81760..403d69602 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ModelRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ModelRepositoryImpl.java @@ -4,9 +4,10 @@ import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDO; import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDOExample; import com.tencent.supersonic.semantic.model.domain.repository.ModelRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.ModelDOMapper; -import java.util.List; import org.springframework.stereotype.Component; +import java.util.List; + @Component public class ModelRepositoryImpl implements ModelRepository { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ViewInfoRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ViewInfoRepositoryImpl.java index 719ef5246..683921073 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ViewInfoRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/ViewInfoRepositoryImpl.java @@ -4,7 +4,9 @@ import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDO; import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDOExample; import com.tencent.supersonic.semantic.model.domain.repository.ViewInfoRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.ViewInfoDOMapper; + import java.util.List; + import org.springframework.stereotype.Component; @Component diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DatabaseController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DatabaseController.java index 16ac8afea..6ec8152fa 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DatabaseController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DatabaseController.java @@ -7,14 +7,16 @@ import com.tencent.supersonic.semantic.api.model.request.SqlExecuteReq; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.model.domain.DatabaseService; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.DeleteMapping; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; @RestController @RequestMapping("/api/semantic/database") @@ -48,14 +50,25 @@ public class DatabaseController { return databaseService.getDatabase(id); } - @GetMapping("/getDatabaseByDomainId/{domainId}") - public DatabaseResp getDatabaseByDomainId(@PathVariable("domainId") Long domainId) { - return databaseService.getDatabaseByDomainId(domainId); + @GetMapping("/getDatabaseList") + public List getDatabaseList(HttpServletRequest request, + HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + return databaseService.getDatabaseList(user); + } + + @DeleteMapping("/{id}") + public boolean deleteDatabase(@PathVariable("id") Long id) { + databaseService.deleteDatabase(id); + return true; } @PostMapping("/executeSql") - public QueryResultWithSchemaResp executeSql(@RequestBody SqlExecuteReq sqlExecuteReq) { - return databaseService.executeSql(sqlExecuteReq.getSql(), sqlExecuteReq.getModelId()); + public QueryResultWithSchemaResp executeSql(@RequestBody SqlExecuteReq sqlExecuteReq, + HttpServletRequest request, + HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + return databaseService.executeSql(sqlExecuteReq.getSql(), sqlExecuteReq.getId(), user); } @RequestMapping("/getDbNames/{id}") @@ -69,7 +82,6 @@ public class DatabaseController { return databaseService.getTables(id, db); } - @RequestMapping("/getColumns/{id}/{db}/{table}") public QueryResultWithSchemaResp getColumns(@PathVariable("id") Long id, @PathVariable("db") String db, @@ -77,5 +89,4 @@ public class DatabaseController { return databaseService.getColumns(id, db, table); } - } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DomainController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DomainController.java index 12daf9754..003def3ee 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DomainController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/DomainController.java @@ -6,11 +6,13 @@ import com.tencent.supersonic.semantic.api.model.request.DomainReq; import com.tencent.supersonic.semantic.api.model.request.DomainUpdateReq; import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.model.domain.DomainService; + import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -32,8 +34,8 @@ public class DomainController { @PostMapping("/createDomain") public Boolean createDomain(@RequestBody DomainReq domainReq, - HttpServletRequest request, - HttpServletResponse response) { + HttpServletRequest request, + HttpServletResponse response) { User user = UserHolder.findUser(request, response); domainService.createDomain(domainReq, user); return true; @@ -41,8 +43,8 @@ public class DomainController { @PostMapping("/updateDomain") public Boolean updateDomain(@RequestBody DomainUpdateReq domainUpdateReq, - HttpServletRequest request, - HttpServletResponse response) { + HttpServletRequest request, + HttpServletResponse response) { User user = UserHolder.findUser(request, response); domainService.updateDomain(domainUpdateReq, user); return true; @@ -56,7 +58,7 @@ public class DomainController { @GetMapping("/getDomainList") public List getDomainList(HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) { User user = UserHolder.findUser(request, response); return domainService.getDomainListWithAdminAuth(user); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ViewInfoController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ViewInfoController.java index e7dc98c84..2e9e9555f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ViewInfoController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ViewInfoController.java @@ -5,8 +5,9 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.utils.UserHolder; import com.tencent.supersonic.semantic.api.model.request.ViewInfoReq; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaRelaResp; -import com.tencent.supersonic.semantic.model.application.ViewInfoServiceImpl; import com.tencent.supersonic.semantic.model.domain.dataobject.ViewInfoDO; +import com.tencent.supersonic.semantic.model.application.ViewInfoServiceImpl; + import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; diff --git a/semantic/model/src/main/resources/mapper/DatabaseDOMapper.xml b/semantic/model/src/main/resources/mapper/DatabaseDOMapper.xml index bc9cd5c02..f3fe6f9b8 100644 --- a/semantic/model/src/main/resources/mapper/DatabaseDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/DatabaseDOMapper.xml @@ -1,272 +1,266 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , domain_id, name, description, version, type, created_at, created_by, updated_at, - updated_by - - - config - - - - - - delete - from s2_database - where id = #{id,jdbcType=BIGINT} - - - insert into s2_database (id, domain_id, name, - description, version, type, - created_at, created_by, updated_at, - updated_by, config) - values (#{id,jdbcType=BIGINT}, #{domainId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, - #{description,jdbcType=VARCHAR}, #{version,jdbcType=VARCHAR}, - #{type,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, #{config,jdbcType=LONGVARCHAR}) - - - insert into s2_database - - - id, - - - domain_id, - - - name, - - - description, - - - version, - - - type, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - config, - - - - - #{id,jdbcType=BIGINT}, - - - #{domainId,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{description,jdbcType=VARCHAR}, - - - #{version,jdbcType=VARCHAR}, - - - #{type,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{config,jdbcType=LONGVARCHAR}, - - - - - - update s2_database - - - domain_id = #{domainId,jdbcType=BIGINT}, - - - name = #{name,jdbcType=VARCHAR}, - - - description = #{description,jdbcType=VARCHAR}, - - - version = #{version,jdbcType=VARCHAR}, - - - type = #{type,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - config = #{config,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_database - set domain_id = #{domainId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - version = #{version,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - config = #{config,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_database - set domain_id = #{domainId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - version = #{version,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + + + id, name, description, version, type, created_at, created_by, updated_at, updated_by, + admin, viewer + + + config + + + + + + delete from s2_database + where id = #{id,jdbcType=BIGINT} + + + insert into s2_database (id, name, description, + version, type, created_at, + created_by, updated_at, updated_by, + admin, viewer, config + ) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, + #{version,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, + #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, + #{admin,jdbcType=VARCHAR}, #{viewer,jdbcType=VARCHAR}, #{config,jdbcType=LONGVARCHAR} + ) + + + insert into s2_database + + + id, + + + name, + + + description, + + + version, + + + type, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + admin, + + + viewer, + + + config, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{version,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{admin,jdbcType=VARCHAR}, + + + #{viewer,jdbcType=VARCHAR}, + + + #{config,jdbcType=LONGVARCHAR}, + + + + + + update s2_database + + + name = #{name,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + version = #{version,jdbcType=VARCHAR}, + + + type = #{type,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + admin = #{admin,jdbcType=VARCHAR}, + + + viewer = #{viewer,jdbcType=VARCHAR}, + + + config = #{config,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_database + set name = #{name,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + version = #{version,jdbcType=VARCHAR}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + admin = #{admin,jdbcType=VARCHAR}, + viewer = #{viewer,jdbcType=VARCHAR}, + config = #{config,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_database + set name = #{name,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + version = #{version,jdbcType=VARCHAR}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + admin = #{admin,jdbcType=VARCHAR}, + viewer = #{viewer,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/DatasourceDOMapper.xml b/semantic/model/src/main/resources/mapper/DatasourceDOMapper.xml index 32ecd9641..a90461395 100644 --- a/semantic/model/src/main/resources/mapper/DatasourceDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/DatasourceDOMapper.xml @@ -1,272 +1,252 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , model_id, name, biz_name, description, database_id, created_at, created_by, updated_at, + + + + + + + id, model_id, name, biz_name, description, database_id, created_at, created_by, updated_at, updated_by - - - datasource_detail - - - - - - delete - from s2_datasource - where id = #{id,jdbcType=BIGINT} - - - insert into s2_datasource (id, model_id, name, - biz_name, description, database_id, - created_at, created_by, updated_at, - updated_by, datasource_detail) - values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, - #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, - #{databaseId,jdbcType=BIGINT}, - #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, #{datasourceDetail,jdbcType=LONGVARCHAR}) - - - insert into s2_datasource - - - id, - - - model_id, - - - name, - - - biz_name, - - - description, - - - database_id, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - datasource_detail, - - - - - #{id,jdbcType=BIGINT}, - - - #{modelId,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{bizName,jdbcType=VARCHAR}, - - - #{description,jdbcType=VARCHAR}, - - - #{databaseId,jdbcType=BIGINT}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{datasourceDetail,jdbcType=LONGVARCHAR}, - - - - - - update s2_datasource - - - model_id = #{modelId,jdbcType=BIGINT}, - - - name = #{name,jdbcType=VARCHAR}, - - - biz_name = #{bizName,jdbcType=VARCHAR}, - - - description = #{description,jdbcType=VARCHAR}, - - - database_id = #{databaseId,jdbcType=BIGINT}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - datasource_detail = #{datasourceDetail,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_datasource - set model_id = #{modelId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - database_id = #{databaseId,jdbcType=BIGINT}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - datasource_detail = #{datasourceDetail,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_datasource - set model_id = #{modelId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - database_id = #{databaseId,jdbcType=BIGINT}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + datasource_detail + + + + + + delete from s2_datasource + where id = #{id,jdbcType=BIGINT} + + + insert into s2_datasource (id, model_id, name, + biz_name, description, database_id, + created_at, created_by, updated_at, + updated_by, datasource_detail) + values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, + #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{databaseId,jdbcType=BIGINT}, + #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, + #{updatedBy,jdbcType=VARCHAR}, #{datasourceDetail,jdbcType=LONGVARCHAR}) + + + insert into s2_datasource + + + id, + + + model_id, + + + name, + + + biz_name, + + + description, + + + database_id, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + datasource_detail, + + + + + #{id,jdbcType=BIGINT}, + + + #{modelId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{bizName,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{databaseId,jdbcType=BIGINT}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{datasourceDetail,jdbcType=LONGVARCHAR}, + + + + + + update s2_datasource + + + model_id = #{modelId,jdbcType=BIGINT}, + + + name = #{name,jdbcType=VARCHAR}, + + + biz_name = #{bizName,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + database_id = #{databaseId,jdbcType=BIGINT}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + datasource_detail = #{datasourceDetail,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_datasource + set model_id = #{modelId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + database_id = #{databaseId,jdbcType=BIGINT}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + datasource_detail = #{datasourceDetail,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_datasource + set model_id = #{modelId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + database_id = #{databaseId,jdbcType=BIGINT}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/DatasourceRelaDOMapper.xml b/semantic/model/src/main/resources/mapper/DatasourceRelaDOMapper.xml index 229ce4ac7..157cc7c9e 100644 --- a/semantic/model/src/main/resources/mapper/DatasourceRelaDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/DatasourceRelaDOMapper.xml @@ -1,209 +1,194 @@ - + - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , model_id, datasource_from, datasource_to, join_key, created_at, created_by, updated_at, + + + + + + + id, model_id, datasource_from, datasource_to, join_key, created_at, created_by, updated_at, updated_by - - - - - delete - from s2_datasource_rela - where id = #{id,jdbcType=BIGINT} - - - insert into s2_datasource_rela (id, model_id, datasource_from, - datasource_to, join_key, created_at, - created_by, updated_at, updated_by) - values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, - #{datasourceFrom,jdbcType=BIGINT}, - #{datasourceTo,jdbcType=BIGINT}, #{joinKey,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, - #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}) - - - insert into s2_datasource_rela - - - id, - - - model_id, - - - datasource_from, - - - datasource_to, - - - join_key, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - - - #{id,jdbcType=BIGINT}, - - - #{modelId,jdbcType=BIGINT}, - - - #{datasourceFrom,jdbcType=BIGINT}, - - - #{datasourceTo,jdbcType=BIGINT}, - - - #{joinKey,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - - - - update s2_datasource_rela - - - model_id = #{modelId,jdbcType=BIGINT}, - - - datasource_from = #{datasourceFrom,jdbcType=BIGINT}, - - - datasource_to = #{datasourceTo,jdbcType=BIGINT}, - - - join_key = #{joinKey,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_datasource_rela - set model_id = #{modelId,jdbcType=BIGINT}, - datasource_from = #{datasourceFrom,jdbcType=BIGINT}, - datasource_to = #{datasourceTo,jdbcType=BIGINT}, - join_key = #{joinKey,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + + + delete from s2_datasource_rela + where id = #{id,jdbcType=BIGINT} + + + insert into s2_datasource_rela (id, model_id, datasource_from, + datasource_to, join_key, created_at, + created_by, updated_at, updated_by + ) + values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{datasourceFrom,jdbcType=BIGINT}, + #{datasourceTo,jdbcType=BIGINT}, #{joinKey,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, + #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR} + ) + + + insert into s2_datasource_rela + + + id, + + + model_id, + + + datasource_from, + + + datasource_to, + + + join_key, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + + + #{id,jdbcType=BIGINT}, + + + #{modelId,jdbcType=BIGINT}, + + + #{datasourceFrom,jdbcType=BIGINT}, + + + #{datasourceTo,jdbcType=BIGINT}, + + + #{joinKey,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + + + + update s2_datasource_rela + + + model_id = #{modelId,jdbcType=BIGINT}, + + + datasource_from = #{datasourceFrom,jdbcType=BIGINT}, + + + datasource_to = #{datasourceTo,jdbcType=BIGINT}, + + + join_key = #{joinKey,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_datasource_rela + set model_id = #{modelId,jdbcType=BIGINT}, + datasource_from = #{datasourceFrom,jdbcType=BIGINT}, + datasource_to = #{datasourceTo,jdbcType=BIGINT}, + join_key = #{joinKey,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/DimensionDOMapper.xml b/semantic/model/src/main/resources/mapper/DimensionDOMapper.xml index 236b99982..117bb5bc4 100644 --- a/semantic/model/src/main/resources/mapper/DimensionDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/DimensionDOMapper.xml @@ -1,378 +1,354 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , model_id, datasource_id, name, biz_name, description, status, sensitive_level, + + + + + + + id, model_id, datasource_id, name, biz_name, description, status, sensitive_level, type, created_at, created_by, updated_at, updated_by, semantic_type, alias, default_values, dim_value_maps - - - type_params - , expr - - - - - - delete - from s2_dimension - where id = #{id,jdbcType=BIGINT} - - - insert into s2_dimension (id, model_id, datasource_id, - name, biz_name, description, - status, sensitive_level, type, - created_at, created_by, updated_at, - updated_by, semantic_type, alias, - default_values, dim_value_maps, type_params, - expr) - values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{datasourceId,jdbcType=BIGINT}, - #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, - #{description,jdbcType=VARCHAR}, - #{status,jdbcType=INTEGER}, #{sensitiveLevel,jdbcType=INTEGER}, - #{type,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, #{semanticType,jdbcType=VARCHAR}, - #{alias,jdbcType=VARCHAR}, - #{defaultValues,jdbcType=VARCHAR}, #{dimValueMaps,jdbcType=VARCHAR}, - #{typeParams,jdbcType=LONGVARCHAR}, - #{expr,jdbcType=LONGVARCHAR}) - - - insert into s2_dimension - - - id, - - - model_id, - - - datasource_id, - - - name, - - - biz_name, - - - description, - - - status, - - - sensitive_level, - - - type, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - semantic_type, - - - alias, - - - default_values, - - - dim_value_maps, - - - type_params, - - - expr, - - - - - #{id,jdbcType=BIGINT}, - - - #{modelId,jdbcType=BIGINT}, - - - #{datasourceId,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{bizName,jdbcType=VARCHAR}, - - - #{description,jdbcType=VARCHAR}, - - - #{status,jdbcType=INTEGER}, - - - #{sensitiveLevel,jdbcType=INTEGER}, - - - #{type,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{semanticType,jdbcType=VARCHAR}, - - - #{alias,jdbcType=VARCHAR}, - - - #{defaultValues,jdbcType=VARCHAR}, - - - #{dimValueMaps,jdbcType=VARCHAR}, - - - #{typeParams,jdbcType=LONGVARCHAR}, - - - #{expr,jdbcType=LONGVARCHAR}, - - - - - - update s2_dimension - - - model_id = #{modelId,jdbcType=BIGINT}, - - - datasource_id = #{datasourceId,jdbcType=BIGINT}, - - - name = #{name,jdbcType=VARCHAR}, - - - biz_name = #{bizName,jdbcType=VARCHAR}, - - - description = #{description,jdbcType=VARCHAR}, - - - status = #{status,jdbcType=INTEGER}, - - - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - - - type = #{type,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - semantic_type = #{semanticType,jdbcType=VARCHAR}, - - - alias = #{alias,jdbcType=VARCHAR}, - - - default_values = #{defaultValues,jdbcType=VARCHAR}, - - - dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR}, - - - type_params = #{typeParams,jdbcType=LONGVARCHAR}, - - - expr = #{expr,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_dimension - set model_id = #{modelId,jdbcType=BIGINT}, - datasource_id = #{datasourceId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - status = #{status,jdbcType=INTEGER}, - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - semantic_type = #{semanticType,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR}, - default_values = #{defaultValues,jdbcType=VARCHAR}, - dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR}, - type_params = #{typeParams,jdbcType=LONGVARCHAR}, - expr = #{expr,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_dimension - set model_id = #{modelId,jdbcType=BIGINT}, - datasource_id = #{datasourceId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - status = #{status,jdbcType=INTEGER}, - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - semantic_type = #{semanticType,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR}, - default_values = #{defaultValues,jdbcType=VARCHAR}, - dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + type_params, expr + + + + + + delete from s2_dimension + where id = #{id,jdbcType=BIGINT} + + + insert into s2_dimension (id, model_id, datasource_id, + name, biz_name, description, + status, sensitive_level, type, + created_at, created_by, updated_at, + updated_by, semantic_type, alias, + default_values, dim_value_maps, type_params, + expr) + values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{datasourceId,jdbcType=BIGINT}, + #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, + #{status,jdbcType=INTEGER}, #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, + #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, + #{updatedBy,jdbcType=VARCHAR}, #{semanticType,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR}, + #{defaultValues,jdbcType=VARCHAR}, #{dimValueMaps,jdbcType=VARCHAR}, #{typeParams,jdbcType=LONGVARCHAR}, + #{expr,jdbcType=LONGVARCHAR}) + + + insert into s2_dimension + + + id, + + + model_id, + + + datasource_id, + + + name, + + + biz_name, + + + description, + + + status, + + + sensitive_level, + + + type, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + semantic_type, + + + alias, + + + default_values, + + + dim_value_maps, + + + type_params, + + + expr, + + + + + #{id,jdbcType=BIGINT}, + + + #{modelId,jdbcType=BIGINT}, + + + #{datasourceId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{bizName,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{status,jdbcType=INTEGER}, + + + #{sensitiveLevel,jdbcType=INTEGER}, + + + #{type,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{semanticType,jdbcType=VARCHAR}, + + + #{alias,jdbcType=VARCHAR}, + + + #{defaultValues,jdbcType=VARCHAR}, + + + #{dimValueMaps,jdbcType=VARCHAR}, + + + #{typeParams,jdbcType=LONGVARCHAR}, + + + #{expr,jdbcType=LONGVARCHAR}, + + + + + + update s2_dimension + + + model_id = #{modelId,jdbcType=BIGINT}, + + + datasource_id = #{datasourceId,jdbcType=BIGINT}, + + + name = #{name,jdbcType=VARCHAR}, + + + biz_name = #{bizName,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=INTEGER}, + + + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + + + type = #{type,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + semantic_type = #{semanticType,jdbcType=VARCHAR}, + + + alias = #{alias,jdbcType=VARCHAR}, + + + default_values = #{defaultValues,jdbcType=VARCHAR}, + + + dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR}, + + + type_params = #{typeParams,jdbcType=LONGVARCHAR}, + + + expr = #{expr,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_dimension + set model_id = #{modelId,jdbcType=BIGINT}, + datasource_id = #{datasourceId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + status = #{status,jdbcType=INTEGER}, + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + semantic_type = #{semanticType,jdbcType=VARCHAR}, + alias = #{alias,jdbcType=VARCHAR}, + default_values = #{defaultValues,jdbcType=VARCHAR}, + dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR}, + type_params = #{typeParams,jdbcType=LONGVARCHAR}, + expr = #{expr,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_dimension + set model_id = #{modelId,jdbcType=BIGINT}, + datasource_id = #{datasourceId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + status = #{status,jdbcType=INTEGER}, + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + semantic_type = #{semanticType,jdbcType=VARCHAR}, + alias = #{alias,jdbcType=VARCHAR}, + default_values = #{defaultValues,jdbcType=VARCHAR}, + dim_value_maps = #{dimValueMaps,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/DomainDOMapper.xml b/semantic/model/src/main/resources/mapper/DomainDOMapper.xml index 1ff98d709..a0d65c3a4 100644 --- a/semantic/model/src/main/resources/mapper/DomainDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/DomainDOMapper.xml @@ -1,267 +1,251 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , name, biz_name, parent_id, status, created_at, created_by, updated_at, updated_by, + + + + + + + id, name, biz_name, parent_id, status, created_at, created_by, updated_at, updated_by, admin, admin_org, is_open, viewer, view_org - - - - - delete - from s2_domain - where id = #{id,jdbcType=BIGINT} - - - insert into s2_domain (id, name, biz_name, - parent_id, status, created_at, - created_by, updated_at, updated_by, - admin, admin_org, is_open, - viewer, view_org) - values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, - #{parentId,jdbcType=BIGINT}, #{status,jdbcType=INTEGER}, - #{createdAt,jdbcType=TIMESTAMP}, - #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, - #{admin,jdbcType=VARCHAR}, #{adminOrg,jdbcType=VARCHAR}, #{isOpen,jdbcType=INTEGER}, - #{viewer,jdbcType=VARCHAR}, #{viewOrg,jdbcType=VARCHAR}) - - - insert into s2_domain - - - id, - - - name, - - - biz_name, - - - parent_id, - - - status, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - admin, - - - admin_org, - - - is_open, - - - viewer, - - - view_org, - - - - - #{id,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{bizName,jdbcType=VARCHAR}, - - - #{parentId,jdbcType=BIGINT}, - - - #{status,jdbcType=INTEGER}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{admin,jdbcType=VARCHAR}, - - - #{adminOrg,jdbcType=VARCHAR}, - - - #{isOpen,jdbcType=INTEGER}, - - - #{viewer,jdbcType=VARCHAR}, - - - #{viewOrg,jdbcType=VARCHAR}, - - - - - - update s2_domain - - - name = #{name,jdbcType=VARCHAR}, - - - biz_name = #{bizName,jdbcType=VARCHAR}, - - - parent_id = #{parentId,jdbcType=BIGINT}, - - - status = #{status,jdbcType=INTEGER}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - admin = #{admin,jdbcType=VARCHAR}, - - - admin_org = #{adminOrg,jdbcType=VARCHAR}, - - - is_open = #{isOpen,jdbcType=INTEGER}, - - - viewer = #{viewer,jdbcType=VARCHAR}, - - - view_org = #{viewOrg,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_domain - set name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - parent_id = #{parentId,jdbcType=BIGINT}, - status = #{status,jdbcType=INTEGER}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - admin = #{admin,jdbcType=VARCHAR}, - admin_org = #{adminOrg,jdbcType=VARCHAR}, - is_open = #{isOpen,jdbcType=INTEGER}, - viewer = #{viewer,jdbcType=VARCHAR}, - view_org = #{viewOrg,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + + + delete from s2_domain + where id = #{id,jdbcType=BIGINT} + + + insert into s2_domain (id, name, biz_name, + parent_id, status, created_at, + created_by, updated_at, updated_by, + admin, admin_org, is_open, + viewer, view_org) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, + #{parentId,jdbcType=BIGINT}, #{status,jdbcType=INTEGER}, #{createdAt,jdbcType=TIMESTAMP}, + #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, + #{admin,jdbcType=VARCHAR}, #{adminOrg,jdbcType=VARCHAR}, #{isOpen,jdbcType=INTEGER}, + #{viewer,jdbcType=VARCHAR}, #{viewOrg,jdbcType=VARCHAR}) + + + insert into s2_domain + + + id, + + + name, + + + biz_name, + + + parent_id, + + + status, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + admin, + + + admin_org, + + + is_open, + + + viewer, + + + view_org, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{bizName,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=BIGINT}, + + + #{status,jdbcType=INTEGER}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{admin,jdbcType=VARCHAR}, + + + #{adminOrg,jdbcType=VARCHAR}, + + + #{isOpen,jdbcType=INTEGER}, + + + #{viewer,jdbcType=VARCHAR}, + + + #{viewOrg,jdbcType=VARCHAR}, + + + + + + update s2_domain + + + name = #{name,jdbcType=VARCHAR}, + + + biz_name = #{bizName,jdbcType=VARCHAR}, + + + parent_id = #{parentId,jdbcType=BIGINT}, + + + status = #{status,jdbcType=INTEGER}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + admin = #{admin,jdbcType=VARCHAR}, + + + admin_org = #{adminOrg,jdbcType=VARCHAR}, + + + is_open = #{isOpen,jdbcType=INTEGER}, + + + viewer = #{viewer,jdbcType=VARCHAR}, + + + view_org = #{viewOrg,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_domain + set name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + parent_id = #{parentId,jdbcType=BIGINT}, + status = #{status,jdbcType=INTEGER}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + admin = #{admin,jdbcType=VARCHAR}, + admin_org = #{adminOrg,jdbcType=VARCHAR}, + is_open = #{isOpen,jdbcType=INTEGER}, + viewer = #{viewer,jdbcType=VARCHAR}, + view_org = #{viewOrg,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml index 357fe78c0..37f09c2b5 100644 --- a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml @@ -1,338 +1,316 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , model_id, name, biz_name, description, status, sensitive_level, type, created_at, + + + + + + + id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, created_by, updated_at, updated_by, data_format_type, data_format, alias - - - type_params - - - - - - delete - from s2_metric - where id = #{id,jdbcType=BIGINT} - - - insert into s2_metric (id, model_id, name, - biz_name, description, status, - sensitive_level, type, created_at, - created_by, updated_at, updated_by, - data_format_type, data_format, alias, - type_params) - values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, - #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, - #{status,jdbcType=INTEGER}, - #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, - #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, - #{dataFormatType,jdbcType=VARCHAR}, #{dataFormat,jdbcType=VARCHAR}, - #{alias,jdbcType=VARCHAR}, - #{typeParams,jdbcType=LONGVARCHAR}) - - - insert into s2_metric - - - id, - - - model_id, - - - name, - - - biz_name, - - - description, - - - status, - - - sensitive_level, - - - type, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - data_format_type, - - - data_format, - - - alias, - - - type_params, - - - - - #{id,jdbcType=BIGINT}, - - - #{modelId,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{bizName,jdbcType=VARCHAR}, - - - #{description,jdbcType=VARCHAR}, - - - #{status,jdbcType=INTEGER}, - - - #{sensitiveLevel,jdbcType=INTEGER}, - - - #{type,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{dataFormatType,jdbcType=VARCHAR}, - - - #{dataFormat,jdbcType=VARCHAR}, - - - #{alias,jdbcType=VARCHAR}, - - - #{typeParams,jdbcType=LONGVARCHAR}, - - - - - - update s2_metric - - - model_id = #{modelId,jdbcType=BIGINT}, - - - name = #{name,jdbcType=VARCHAR}, - - - biz_name = #{bizName,jdbcType=VARCHAR}, - - - description = #{description,jdbcType=VARCHAR}, - - - status = #{status,jdbcType=INTEGER}, - - - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - - - type = #{type,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - data_format_type = #{dataFormatType,jdbcType=VARCHAR}, - - - data_format = #{dataFormat,jdbcType=VARCHAR}, - - - alias = #{alias,jdbcType=VARCHAR}, - - - type_params = #{typeParams,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_metric - set model_id = #{modelId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - status = #{status,jdbcType=INTEGER}, - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - data_format_type = #{dataFormatType,jdbcType=VARCHAR}, - data_format = #{dataFormat,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR}, - type_params = #{typeParams,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_metric - set model_id = #{modelId,jdbcType=BIGINT}, - name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - status = #{status,jdbcType=INTEGER}, - sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - data_format_type = #{dataFormatType,jdbcType=VARCHAR}, - data_format = #{dataFormat,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + type_params + + + + + + delete from s2_metric + where id = #{id,jdbcType=BIGINT} + + + insert into s2_metric (id, model_id, name, + biz_name, description, status, + sensitive_level, type, created_at, + created_by, updated_at, updated_by, + data_format_type, data_format, alias, + type_params) + values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, + #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, + #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, + #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, + #{dataFormatType,jdbcType=VARCHAR}, #{dataFormat,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR}, + #{typeParams,jdbcType=LONGVARCHAR}) + + + insert into s2_metric + + + id, + + + model_id, + + + name, + + + biz_name, + + + description, + + + status, + + + sensitive_level, + + + type, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + data_format_type, + + + data_format, + + + alias, + + + type_params, + + + + + #{id,jdbcType=BIGINT}, + + + #{modelId,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{bizName,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{status,jdbcType=INTEGER}, + + + #{sensitiveLevel,jdbcType=INTEGER}, + + + #{type,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{dataFormatType,jdbcType=VARCHAR}, + + + #{dataFormat,jdbcType=VARCHAR}, + + + #{alias,jdbcType=VARCHAR}, + + + #{typeParams,jdbcType=LONGVARCHAR}, + + + + + + update s2_metric + + + model_id = #{modelId,jdbcType=BIGINT}, + + + name = #{name,jdbcType=VARCHAR}, + + + biz_name = #{bizName,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=INTEGER}, + + + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + + + type = #{type,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + data_format_type = #{dataFormatType,jdbcType=VARCHAR}, + + + data_format = #{dataFormat,jdbcType=VARCHAR}, + + + alias = #{alias,jdbcType=VARCHAR}, + + + type_params = #{typeParams,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_metric + set model_id = #{modelId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + status = #{status,jdbcType=INTEGER}, + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + data_format_type = #{dataFormatType,jdbcType=VARCHAR}, + data_format = #{dataFormat,jdbcType=VARCHAR}, + alias = #{alias,jdbcType=VARCHAR}, + type_params = #{typeParams,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_metric + set model_id = #{modelId,jdbcType=BIGINT}, + name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + status = #{status,jdbcType=INTEGER}, + sensitive_level = #{sensitiveLevel,jdbcType=INTEGER}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + data_format_type = #{dataFormatType,jdbcType=VARCHAR}, + data_format = #{dataFormat,jdbcType=VARCHAR}, + alias = #{alias,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/ModelDOMapper.xml b/semantic/model/src/main/resources/mapper/ModelDOMapper.xml index 4e7fa4bb0..4b43dd104 100644 --- a/semantic/model/src/main/resources/mapper/ModelDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/ModelDOMapper.xml @@ -1,430 +1,408 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , name, biz_name, domain_id, viewer, view_org, admin, admin_org, is_open, created_by, + + + + + + + id, name, biz_name, domain_id, viewer, view_org, admin, admin_org, is_open, created_by, created_at, updated_by, updated_at - - - entity - - - - - - delete - from s2_model - where id = #{id,jdbcType=BIGINT} - - - insert into s2_model (id, name, biz_name, - domain_id, viewer, view_org, - admin, admin_org, is_open, - created_by, created_at, updated_by, - updated_at, entity) - values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, - #{domainId,jdbcType=BIGINT}, #{viewer,jdbcType=VARCHAR}, - #{viewOrg,jdbcType=VARCHAR}, - #{admin,jdbcType=VARCHAR}, #{adminOrg,jdbcType=VARCHAR}, #{isOpen,jdbcType=INTEGER}, - #{createdBy,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, #{entity,jdbcType=LONGVARCHAR}) - - - insert into s2_model - - - id, - - - name, - - - biz_name, - - - domain_id, - - - viewer, - - - view_org, - - - admin, - - - admin_org, - - - is_open, - - - created_by, - - - created_at, - - - updated_by, - - - updated_at, - - - entity, - - - - - #{id,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{bizName,jdbcType=VARCHAR}, - - - #{domainId,jdbcType=BIGINT}, - - - #{viewer,jdbcType=VARCHAR}, - - - #{viewOrg,jdbcType=VARCHAR}, - - - #{admin,jdbcType=VARCHAR}, - - - #{adminOrg,jdbcType=VARCHAR}, - - - #{isOpen,jdbcType=INTEGER}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{entity,jdbcType=LONGVARCHAR}, - - - - - - update s2_model - - - id = #{record.id,jdbcType=BIGINT}, - - - name = #{record.name,jdbcType=VARCHAR}, - - - biz_name = #{record.bizName,jdbcType=VARCHAR}, - - - domain_id = #{record.domainId,jdbcType=BIGINT}, - - - viewer = #{record.viewer,jdbcType=VARCHAR}, - - - view_org = #{record.viewOrg,jdbcType=VARCHAR}, - - - admin = #{record.admin,jdbcType=VARCHAR}, - - - admin_org = #{record.adminOrg,jdbcType=VARCHAR}, - - - is_open = #{record.isOpen,jdbcType=INTEGER}, - - - created_by = #{record.createdBy,jdbcType=VARCHAR}, - - - created_at = #{record.createdAt,jdbcType=TIMESTAMP}, - - - updated_by = #{record.updatedBy,jdbcType=VARCHAR}, - - - updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - - - entity = #{record.entity,jdbcType=LONGVARCHAR}, - - - - - - - - update s2_model - set id = #{record.id,jdbcType=BIGINT}, + + + entity + + + + + + delete from s2_model + where id = #{id,jdbcType=BIGINT} + + + insert into s2_model (id, name, biz_name, + domain_id, viewer, view_org, + admin, admin_org, is_open, + created_by, created_at, updated_by, + updated_at, entity) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, + #{domainId,jdbcType=BIGINT}, #{viewer,jdbcType=VARCHAR}, #{viewOrg,jdbcType=VARCHAR}, + #{admin,jdbcType=VARCHAR}, #{adminOrg,jdbcType=VARCHAR}, #{isOpen,jdbcType=INTEGER}, + #{createdBy,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, + #{updatedAt,jdbcType=TIMESTAMP}, #{entity,jdbcType=LONGVARCHAR}) + + + insert into s2_model + + + id, + + + name, + + + biz_name, + + + domain_id, + + + viewer, + + + view_org, + + + admin, + + + admin_org, + + + is_open, + + + created_by, + + + created_at, + + + updated_by, + + + updated_at, + + + entity, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{bizName,jdbcType=VARCHAR}, + + + #{domainId,jdbcType=BIGINT}, + + + #{viewer,jdbcType=VARCHAR}, + + + #{viewOrg,jdbcType=VARCHAR}, + + + #{admin,jdbcType=VARCHAR}, + + + #{adminOrg,jdbcType=VARCHAR}, + + + #{isOpen,jdbcType=INTEGER}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{entity,jdbcType=LONGVARCHAR}, + + + + + + update s2_model + + + id = #{record.id,jdbcType=BIGINT}, + + name = #{record.name,jdbcType=VARCHAR}, + + biz_name = #{record.bizName,jdbcType=VARCHAR}, + + domain_id = #{record.domainId,jdbcType=BIGINT}, + + viewer = #{record.viewer,jdbcType=VARCHAR}, + + view_org = #{record.viewOrg,jdbcType=VARCHAR}, + + admin = #{record.admin,jdbcType=VARCHAR}, + + admin_org = #{record.adminOrg,jdbcType=VARCHAR}, + + is_open = #{record.isOpen,jdbcType=INTEGER}, + + created_by = #{record.createdBy,jdbcType=VARCHAR}, + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + updated_by = #{record.updatedBy,jdbcType=VARCHAR}, + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - entity = #{record.entity,jdbcType=LONGVARCHAR} - - - - - - update s2_model - set id = #{record.id,jdbcType=BIGINT}, - name = #{record.name,jdbcType=VARCHAR}, - biz_name = #{record.bizName,jdbcType=VARCHAR}, - domain_id = #{record.domainId,jdbcType=BIGINT}, - viewer = #{record.viewer,jdbcType=VARCHAR}, - view_org = #{record.viewOrg,jdbcType=VARCHAR}, - admin = #{record.admin,jdbcType=VARCHAR}, - admin_org = #{record.adminOrg,jdbcType=VARCHAR}, - is_open = #{record.isOpen,jdbcType=INTEGER}, - created_by = #{record.createdBy,jdbcType=VARCHAR}, - created_at = #{record.createdAt,jdbcType=TIMESTAMP}, - updated_by = #{record.updatedBy,jdbcType=VARCHAR}, - updated_at = #{record.updatedAt,jdbcType=TIMESTAMP} - - - - - - update s2_model - - - name = #{name,jdbcType=VARCHAR}, - - - biz_name = #{bizName,jdbcType=VARCHAR}, - - - domain_id = #{domainId,jdbcType=BIGINT}, - - - viewer = #{viewer,jdbcType=VARCHAR}, - - - view_org = #{viewOrg,jdbcType=VARCHAR}, - - - admin = #{admin,jdbcType=VARCHAR}, - - - admin_org = #{adminOrg,jdbcType=VARCHAR}, - - - is_open = #{isOpen,jdbcType=INTEGER}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - entity = #{entity,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_model - set name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - domain_id = #{domainId,jdbcType=BIGINT}, - viewer = #{viewer,jdbcType=VARCHAR}, - view_org = #{viewOrg,jdbcType=VARCHAR}, - admin = #{admin,jdbcType=VARCHAR}, - admin_org = #{adminOrg,jdbcType=VARCHAR}, - is_open = #{isOpen,jdbcType=INTEGER}, - created_by = #{createdBy,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - entity = #{entity,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_model - set name = #{name,jdbcType=VARCHAR}, - biz_name = #{bizName,jdbcType=VARCHAR}, - domain_id = #{domainId,jdbcType=BIGINT}, - viewer = #{viewer,jdbcType=VARCHAR}, - view_org = #{viewOrg,jdbcType=VARCHAR}, - admin = #{admin,jdbcType=VARCHAR}, - admin_org = #{adminOrg,jdbcType=VARCHAR}, - is_open = #{isOpen,jdbcType=INTEGER}, - created_by = #{createdBy,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP} - where id = #{id,jdbcType=BIGINT} - + + + entity = #{record.entity,jdbcType=LONGVARCHAR}, + + + + + + + + update s2_model + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + biz_name = #{record.bizName,jdbcType=VARCHAR}, + domain_id = #{record.domainId,jdbcType=BIGINT}, + viewer = #{record.viewer,jdbcType=VARCHAR}, + view_org = #{record.viewOrg,jdbcType=VARCHAR}, + admin = #{record.admin,jdbcType=VARCHAR}, + admin_org = #{record.adminOrg,jdbcType=VARCHAR}, + is_open = #{record.isOpen,jdbcType=INTEGER}, + created_by = #{record.createdBy,jdbcType=VARCHAR}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_by = #{record.updatedBy,jdbcType=VARCHAR}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + entity = #{record.entity,jdbcType=LONGVARCHAR} + + + + + + update s2_model + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + biz_name = #{record.bizName,jdbcType=VARCHAR}, + domain_id = #{record.domainId,jdbcType=BIGINT}, + viewer = #{record.viewer,jdbcType=VARCHAR}, + view_org = #{record.viewOrg,jdbcType=VARCHAR}, + admin = #{record.admin,jdbcType=VARCHAR}, + admin_org = #{record.adminOrg,jdbcType=VARCHAR}, + is_open = #{record.isOpen,jdbcType=INTEGER}, + created_by = #{record.createdBy,jdbcType=VARCHAR}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_by = #{record.updatedBy,jdbcType=VARCHAR}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP} + + + + + + update s2_model + + + name = #{name,jdbcType=VARCHAR}, + + + biz_name = #{bizName,jdbcType=VARCHAR}, + + + domain_id = #{domainId,jdbcType=BIGINT}, + + + viewer = #{viewer,jdbcType=VARCHAR}, + + + view_org = #{viewOrg,jdbcType=VARCHAR}, + + + admin = #{admin,jdbcType=VARCHAR}, + + + admin_org = #{adminOrg,jdbcType=VARCHAR}, + + + is_open = #{isOpen,jdbcType=INTEGER}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + entity = #{entity,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_model + set name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + domain_id = #{domainId,jdbcType=BIGINT}, + viewer = #{viewer,jdbcType=VARCHAR}, + view_org = #{viewOrg,jdbcType=VARCHAR}, + admin = #{admin,jdbcType=VARCHAR}, + admin_org = #{adminOrg,jdbcType=VARCHAR}, + is_open = #{isOpen,jdbcType=INTEGER}, + created_by = #{createdBy,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + entity = #{entity,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_model + set name = #{name,jdbcType=VARCHAR}, + biz_name = #{bizName,jdbcType=VARCHAR}, + domain_id = #{domainId,jdbcType=BIGINT}, + viewer = #{viewer,jdbcType=VARCHAR}, + view_org = #{viewOrg,jdbcType=VARCHAR}, + admin = #{admin,jdbcType=VARCHAR}, + admin_org = #{adminOrg,jdbcType=VARCHAR}, + is_open = #{isOpen,jdbcType=INTEGER}, + created_by = #{createdBy,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/ViewInfoDOMapper.xml b/semantic/model/src/main/resources/mapper/ViewInfoDOMapper.xml index 2bf8ba19d..32d572b30 100644 --- a/semantic/model/src/main/resources/mapper/ViewInfoDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/ViewInfoDOMapper.xml @@ -1,232 +1,213 @@ - + - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and - #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + - - - - id - , model_id, type, created_at, created_by, updated_at, updated_by - - - config - - - - - - delete - from s2_view_info - where id = #{id,jdbcType=BIGINT} - - - insert into s2_view_info (id, model_id, type, - created_at, created_by, updated_at, - updated_by, config) - values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, - #{updatedAt,jdbcType=TIMESTAMP}, - #{updatedBy,jdbcType=VARCHAR}, #{config,jdbcType=LONGVARCHAR}) - - - insert into s2_view_info - - - id, - - - model_id, - - - type, - - - created_at, - - - created_by, - - - updated_at, - - - updated_by, - - - config, - - - - - #{id,jdbcType=BIGINT}, - - - #{modelId,jdbcType=BIGINT}, - - - #{type,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=TIMESTAMP}, - - - #{createdBy,jdbcType=VARCHAR}, - - - #{updatedAt,jdbcType=TIMESTAMP}, - - - #{updatedBy,jdbcType=VARCHAR}, - - - #{config,jdbcType=LONGVARCHAR}, - - - - - - update s2_view_info - - - model_id = #{modelId,jdbcType=BIGINT}, - - - type = #{type,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=TIMESTAMP}, - - - created_by = #{createdBy,jdbcType=VARCHAR}, - - - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - - - updated_by = #{updatedBy,jdbcType=VARCHAR}, - - - config = #{config,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_view_info - set model_id = #{modelId,jdbcType=BIGINT}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR}, - config = #{config,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update s2_view_info - set model_id = #{modelId,jdbcType=BIGINT}, - type = #{type,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=TIMESTAMP}, - created_by = #{createdBy,jdbcType=VARCHAR}, - updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - updated_by = #{updatedBy,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - + + + + + id, model_id, type, created_at, created_by, updated_at, updated_by + + + config + + + + + + delete from s2_view_info + where id = #{id,jdbcType=BIGINT} + + + insert into s2_view_info (id, model_id, type, + created_at, created_by, updated_at, + updated_by, config) + values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, + #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, + #{updatedBy,jdbcType=VARCHAR}, #{config,jdbcType=LONGVARCHAR}) + + + insert into s2_view_info + + + id, + + + model_id, + + + type, + + + created_at, + + + created_by, + + + updated_at, + + + updated_by, + + + config, + + + + + #{id,jdbcType=BIGINT}, + + + #{modelId,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{createdBy,jdbcType=VARCHAR}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{updatedBy,jdbcType=VARCHAR}, + + + #{config,jdbcType=LONGVARCHAR}, + + + + + + update s2_view_info + + + model_id = #{modelId,jdbcType=BIGINT}, + + + type = #{type,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + created_by = #{createdBy,jdbcType=VARCHAR}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + updated_by = #{updatedBy,jdbcType=VARCHAR}, + + + config = #{config,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update s2_view_info + set model_id = #{modelId,jdbcType=BIGINT}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR}, + config = #{config,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update s2_view_info + set model_id = #{modelId,jdbcType=BIGINT}, + type = #{type,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + created_by = #{createdBy,jdbcType=VARCHAR}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + updated_by = #{updatedBy,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/custom/DateInfoMapper.xml b/semantic/model/src/main/resources/mapper/custom/DateInfoMapper.xml index a779eff32..6ff811b16 100644 --- a/semantic/model/src/main/resources/mapper/custom/DateInfoMapper.xml +++ b/semantic/model/src/main/resources/mapper/custom/DateInfoMapper.xml @@ -20,7 +20,7 @@ insert into s2_available_date_info (`type`, item_id, date_format, start_date, end_date, unavailable_date, created_by, - updated_by, date_period) + updated_by,date_period) values (#{type}, #{itemId}, #{dateFormat}, #{startDate}, #{endDate}, #{unavailableDateList}, #{createdBy}, #{updatedBy}, #{datePeriod}) ON DUPLICATE KEY UPDATE @@ -44,7 +44,7 @@ and item_id in + separator=","> #{item} diff --git a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml index c13927100..67db20d9c 100644 --- a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml +++ b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml @@ -98,9 +98,9 @@