数据集:

b-mc2/sql-create-context

英文
概述

该数据集基于 WikiSQL Spider 构建。

共有78,577个自然语言查询、SQL创建表语句和使用CREATE语句作为上下文回答问题的SQL查询示例。该数据集的构建考虑了文本到SQL LLMs,在训练时可以防止出现经常在文本到SQL数据集上训练时出现的列和表名的虚构。CREATE TABLE语句通常可以从不同的数据库管理系统中复制和粘贴,提供了表名、列名及其数据类型。通过仅提供CREATE TABLE语句作为上下文,我们希望能够为模型提供更好的基础,而无需提供实际的数据行,从而限制令牌使用量并减少对私人、敏感或专有数据的暴露。

清洗和增强

对合并的WikiSQL和Spider数据进行了清洗和数据增强。我使用 SQLGlot 对来自Spider和WikiSQL的查询进行了解析,将它们解析成不同的表和列,然后根据使用了> <操作符以及在列上使用了MIN() MAX() AVG() SUM()等函数的情况来推断列的数据类型。虽然这并不完美,但它增加了对列的正确数据类型的推断的可能性,否则这些列默认为VARCHAR类型。然后使用SQLGlot生成CREATE TABLE语句,以使用推断的类型。再次使用SQLGlot确保SQL查询和CREATE TABLE语句都可以正确解析。

一些没有列名的查询,例如SELECT * FROM table,在CREATE TABLE语句中添加了一个默认的Id列。其他一些使用通用表table作为FROM表的查询,则改为使用table_name_1或其他数字的变化,并在CREATE TABLE语句中也进行了反映。

待办事项
  • 通过将查询和CREATE TABLE语句转换为不同的SQL方言进一步增强数据,这可以使用SQLGlot进行。还可以在问题中添加对方言的引用。
  • 支持CREATE TABLE之外的其他信息上下文

随机样本:

  {
    "question": "Please show the themes of competitions with host cities having populations larger than 1000.",
    "context": "CREATE TABLE city (City_ID VARCHAR, Population INTEGER); CREATE TABLE farm_competition (Theme VARCHAR, Host_city_ID VARCHAR)",
    "answer": "SELECT T2.Theme FROM city AS T1 JOIN farm_competition AS T2 ON T1.City_ID = T2.Host_city_ID WHERE T1.Population > 1000"
  },
  {
    "question": "Please show the different statuses of cities and the average population of cities with each status.",
    "context": "CREATE TABLE city (Status VARCHAR, Population INTEGER)",
    "answer": "SELECT Status, AVG(Population) FROM city GROUP BY Status"
  },