From cd8f38c334b42ca1064e5454685dcd4206dd38dc Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 26 Jul 2024 10:47:50 +0800 Subject: [PATCH] (improvement)(headless)Move `Values` from sideInfo to schema part of the prompt and optimize prompt text. --- .../chat/parser/llm/PromptHelper.java | 79 +++++++++++-------- .../src/main/resources/s2-exemplar.json | 62 +++++---------- .../src/test/resources/s2-exemplar.json | 62 +++++---------- 3 files changed, 83 insertions(+), 120 deletions(-) diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java index 1d3ea356c..ae52b386b 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java @@ -56,29 +56,29 @@ public class PromptHelper { } public String buildSideInformation(LLMReq llmReq) { - List linkedValues = llmReq.getLinking(); String currentDate = llmReq.getCurrentDate(); - String priorExts = llmReq.getPriorExts(); + List sideInfos = Lists.newArrayList(); + sideInfos.add(String.format("CurrentDate=[%s]", currentDate)); - List priorLinkingList = new ArrayList<>(); - for (LLMReq.ElementValue value : linkedValues) { - String fieldName = value.getFieldName(); - String fieldValue = value.getFieldValue(); - priorLinkingList.add("‘" + fieldValue + "‘是一个‘" + fieldName + "‘"); + if (StringUtils.isNotEmpty(llmReq.getPriorExts())) { + sideInfos.add(String.format("PriorKnowledge=[%s]", llmReq.getPriorExts())); } - String currentDataStr = "当前的日期是" + currentDate; - String linkingListStr = String.join(",", priorLinkingList); + String termStr = buildTermStr(llmReq); - return String.format("%s;%s;%s;%s", linkingListStr, currentDataStr, termStr, priorExts); + if (StringUtils.isNotEmpty(termStr)) { + sideInfos.add(String.format("DomainTerms=[%s]", termStr)); + } + + return String.join(",", sideInfos); } public String buildSchemaStr(LLMReq llmReq) { String tableStr = llmReq.getSchema().getDataSetName(); - StringBuilder metricStr = new StringBuilder(); - StringBuilder dimensionStr = new StringBuilder(); + List metrics = Lists.newArrayList(); llmReq.getSchema().getMetrics().stream().forEach( metric -> { + StringBuilder metricStr = new StringBuilder(); metricStr.append("<"); metricStr.append(metric.getName()); if (!CollectionUtils.isEmpty(metric.getAlias())) { @@ -92,52 +92,63 @@ public class PromptHelper { if (StringUtils.isNotEmpty(metric.getDefaultAgg())) { metricStr.append(" AGGREGATE '" + metric.getDefaultAgg().toUpperCase() + "'"); } - metricStr.append(">,"); + metricStr.append(">"); + metrics.add(metricStr.toString()); } ); + List dimensions = Lists.newArrayList(); llmReq.getSchema().getDimensions().stream().forEach( dimension -> { + StringBuilder dimensionStr = new StringBuilder(); dimensionStr.append("<"); dimensionStr.append(dimension.getName()); if (!CollectionUtils.isEmpty(dimension.getAlias())) { StringBuilder alias = new StringBuilder(); dimension.getAlias().stream().forEach(a -> alias.append(a + ",")); - metricStr.append(" ALIAS '" + alias + "'"); + dimensionStr.append(" ALIAS '" + alias + "'"); } if (StringUtils.isNotEmpty(dimension.getDescription())) { dimensionStr.append(" COMMENT '" + dimension.getDescription() + "'"); } - dimensionStr.append(">,"); + dimensionStr.append(">"); + dimensions.add(dimensionStr.toString()); } ); - String template = "Table: %s, Metrics: [%s], Dimensions: [%s]"; + List values = Lists.newArrayList(); + llmReq.getLinking().stream().forEach( + value -> { + StringBuilder valueStr = new StringBuilder(); + String fieldName = value.getFieldName(); + String fieldValue = value.getFieldValue(); + valueStr.append(String.format("<%s='%s'>", fieldName, fieldValue)); + values.add(valueStr.toString()); + } + ); - - return String.format(template, tableStr, metricStr, dimensionStr); + String template = "Table=[%s], Metrics=[%s], Dimensions=[%s], Values=[%s]"; + return String.format(template, tableStr, String.join(",", metrics), + String.join(",", dimensions), String.join(",", values)); } private String buildTermStr(LLMReq llmReq) { List terms = llmReq.getSchema().getTerms(); - StringBuilder termsDesc = new StringBuilder(); - if (!CollectionUtils.isEmpty(terms)) { - termsDesc.append("相关业务术语:"); - for (int idx = 0; idx < terms.size(); idx++) { - LLMReq.Term term = terms.get(idx); - String name = term.getName(); - String description = term.getDescription(); - List alias = term.getAlias(); - String descPart = StringUtils.isBlank(description) ? "" : String.format(",它的涵义是<%s>", description); - String aliasPart = CollectionUtils.isEmpty(alias) ? "" : String.format(",类似表达还有<%s>", alias); - termsDesc.append(String.format("%d.<%s>是业务术语%s%s;", idx + 1, name, descPart, aliasPart)); - } - if (termsDesc.length() > 0) { - termsDesc.setLength(termsDesc.length() - 1); - } + List termStr = Lists.newArrayList(); + terms.stream().forEach( + term -> { + StringBuilder termsDesc = new StringBuilder(); + String description = term.getDescription(); + termsDesc.append(String.format("<%s COMMENT '%s'>", term.getName(), description)); + termStr.add(termsDesc.toString()); + } + ); + String ret = ""; + if (termStr.size() > 0) { + ret = String.join(",", termStr); } - return termsDesc.toString(); + return ret; } } diff --git a/launchers/standalone/src/main/resources/s2-exemplar.json b/launchers/standalone/src/main/resources/s2-exemplar.json index 4c9bc7e97..c37654c5e 100644 --- a/launchers/standalone/src/main/resources/s2-exemplar.json +++ b/launchers/standalone/src/main/resources/s2-exemplar.json @@ -1,62 +1,38 @@ [ { - "question": "比较jackjchen和robinlee在超音数的访问次数", - "sideInfo": "'jackjchen'是一个'用户名','robinlee'是一个'用户名'。当前的日期是2020-12-01", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", - "sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')" + "question": "比较jackjchen和robinlee今年以来的访问次数", + "sideInfo": "CurrentDate=[2020-12-01],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[], Values[<用户='jackjchen'>,<用户='robinlee'>]", + "sql": "SELECT 用户, 访问次数 FROM 超音数产品 WHERE 用户 IN ('jackjchen', 'robinlee') AND 数据日期 >= '2020-01-01' AND 数据日期 <= '2020-12-01'" }, { "question": "超音数近12个月访问人数 按部门", - "sideInfo": "当前的日期是2022-11-06", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", + "sideInfo": "CurrentDate=[2022-11-06]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[<部门>], Values=[]", "sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'" }, { - "question": "超音数美术部、技术研发部的访问时长", - "sideInfo": "’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", - "sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')" - }, - { - "question": "近3天海田飞系MPPM结算播放份额", - "sideInfo": "'海田飞系'是一个'严选版权归属系'。当前的日期是2023-08-21", - "dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]", - "sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' " - }, - { - "question": "对比近7天翻唱版和纯音乐的歌曲播放量", - "sideInfo": "'纯音乐'是一个'语种','翻唱版'是一个'歌曲版本'。当前的日期是2023-05-22", - "dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]", - "sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' " - }, - { - "question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数", - "sideInfo": "'1527896'是一个'MPPM歌手ID','1565463'是一个'MPPM歌手ID','2141459'是一个'MPPM歌手ID'。当前的日期是2023-05-31", - "dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]", - "sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')" - }, - { - "question": "播放量大于1万的歌曲有多少", - "sideInfo": "当前的日期是2023-07-31", - "dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]", - "sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000" + "question": "超音数过去90天美术部、技术研发部的访问时长", + "sideInfo": "CurrentDate=[2023-04-21]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions=[], Values=[<部门='美术部'>,<部门='技术研发部'>]", + "sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部') AND 数据日期 >= '2023-01-20' AND 数据日期 <= '2023-04-21'" }, { "question": "超音数访问时长小于1小时,且来自美术部的用户是哪些", - "sideInfo": "'美术部'‘是一个’部门‘。当前的日期是2023-07-31", - "dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]", - "sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1" + "sideInfo": "CurrentDate=[2023-07-31],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table:[超音数产品], Metrics:[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions:[<用户>], Values:[<部门='美术部'>]", + "sql": "SELECT 用户 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1" }, { - "question": "超音数pv最高的用户有哪些", - "sideInfo": "当前的日期是2023-08-31", - "dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]", - "sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1" + "question": "超音数本月pv最高的用户有哪些", + "sideInfo": "CurrentDate=[2023-08-31],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<用户>], Values=[]", + "sql": "SELECT 用户 FROM 超音数产品 WHERE 数据日期 >= '2023-08-01' AND 数据日期 <= '2023-08-31' ORDER BY 访问次数 DESC LIMIT 1" }, { "question": "超音数访问次数大于1k的部门是哪些", - "sideInfo": "当前的日期是2023-09-14", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", + "sideInfo": "CurrentDate=[2023-09-14]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<部门>], Values=[]", "sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000" } ] \ No newline at end of file diff --git a/launchers/standalone/src/test/resources/s2-exemplar.json b/launchers/standalone/src/test/resources/s2-exemplar.json index 4c9bc7e97..c37654c5e 100644 --- a/launchers/standalone/src/test/resources/s2-exemplar.json +++ b/launchers/standalone/src/test/resources/s2-exemplar.json @@ -1,62 +1,38 @@ [ { - "question": "比较jackjchen和robinlee在超音数的访问次数", - "sideInfo": "'jackjchen'是一个'用户名','robinlee'是一个'用户名'。当前的日期是2020-12-01", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", - "sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')" + "question": "比较jackjchen和robinlee今年以来的访问次数", + "sideInfo": "CurrentDate=[2020-12-01],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[], Values[<用户='jackjchen'>,<用户='robinlee'>]", + "sql": "SELECT 用户, 访问次数 FROM 超音数产品 WHERE 用户 IN ('jackjchen', 'robinlee') AND 数据日期 >= '2020-01-01' AND 数据日期 <= '2020-12-01'" }, { "question": "超音数近12个月访问人数 按部门", - "sideInfo": "当前的日期是2022-11-06", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", + "sideInfo": "CurrentDate=[2022-11-06]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>,<访问用户数 ALIAS 'UV,访问人数,' COMMENT '访问的用户个数' AGGREGATE 'COUNT'>,<人均访问次数 ALIAS '平均访问次数,' COMMENT '每个用户平均访问的次数'>], Dimensions=[<部门>], Values=[]", "sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'" }, { - "question": "超音数美术部、技术研发部的访问时长", - "sideInfo": "’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", - "sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')" - }, - { - "question": "近3天海田飞系MPPM结算播放份额", - "sideInfo": "'海田飞系'是一个'严选版权归属系'。当前的日期是2023-08-21", - "dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]", - "sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' " - }, - { - "question": "对比近7天翻唱版和纯音乐的歌曲播放量", - "sideInfo": "'纯音乐'是一个'语种','翻唱版'是一个'歌曲版本'。当前的日期是2023-05-22", - "dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]", - "sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' " - }, - { - "question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数", - "sideInfo": "'1527896'是一个'MPPM歌手ID','1565463'是一个'MPPM歌手ID','2141459'是一个'MPPM歌手ID'。当前的日期是2023-05-31", - "dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]", - "sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')" - }, - { - "question": "播放量大于1万的歌曲有多少", - "sideInfo": "当前的日期是2023-07-31", - "dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]", - "sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000" + "question": "超音数过去90天美术部、技术研发部的访问时长", + "sideInfo": "CurrentDate=[2023-04-21]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions=[], Values=[<部门='美术部'>,<部门='技术研发部'>]", + "sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部') AND 数据日期 >= '2023-01-20' AND 数据日期 <= '2023-04-21'" }, { "question": "超音数访问时长小于1小时,且来自美术部的用户是哪些", - "sideInfo": "'美术部'‘是一个’部门‘。当前的日期是2023-07-31", - "dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]", - "sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1" + "sideInfo": "CurrentDate=[2023-07-31],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table:[超音数产品], Metrics:[<访问时长 COMMENT '一段时间内用户的访问时长' AGGREGATE 'SUM'>], Dimensions:[<用户>], Values:[<部门='美术部'>]", + "sql": "SELECT 用户 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1" }, { - "question": "超音数pv最高的用户有哪些", - "sideInfo": "当前的日期是2023-08-31", - "dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]", - "sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1" + "question": "超音数本月pv最高的用户有哪些", + "sideInfo": "CurrentDate=[2023-08-31],DomainTerms=[<核心用户 COMMENT '核心用户指tom和lucy'>]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<用户>], Values=[]", + "sql": "SELECT 用户 FROM 超音数产品 WHERE 数据日期 >= '2023-08-01' AND 数据日期 <= '2023-08-31' ORDER BY 访问次数 DESC LIMIT 1" }, { "question": "超音数访问次数大于1k的部门是哪些", - "sideInfo": "当前的日期是2023-09-14", - "dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]", + "sideInfo": "CurrentDate=[2023-09-14]", + "dbSchema": "Table=[超音数产品], Metrics=[<访问次数 ALIAS 'pv' COMMENT '一段时间内用户的访问次数' AGGREGATE 'SUM'>], Dimensions=[<部门>], Values=[]", "sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000" } ] \ No newline at end of file