共有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语句中也进行了反映。
待办事项随机样本:
{ "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" },