生成式 AI 和大型语言模型 (LLM) 最近成为了热门话题。我们中的许多人可能都使用过 ChatGPT 等服务来提高日常工作效率。这些技术的出现对数据分析师、工程师或数据库管理员的工作产生了不小的影响。虽然 LLM 编写 SQL 的能力已存在一段时间,但诸如 ChatGPT 等服务可能不够精确,并且容易生成不正确的查询(除非提供上下文)。通过将 ChatGPT API 直接集成到 Cloud 的 SQL 控制台中,我们可以将表及其各自的架构作为任何查询的上下文提供 - 从而提高响应的准确性和实用性。
所有 SQL 经验水平的用户都可以从此功能中受益。除了降低非技术用户对 ClickHouse 编写查询的门槛之外,经验丰富的 SQL 专家还可以提高生产力,并利用查询助手为复杂问题提供基础,或者只是他们记不起来的一些语法 :)
例如,请考虑我们常用的 英国房屋成交价格数据集 中的以下表架构
CREATE TABLE default.uk_price_paid (
`price` UInt32,
`date` Date,
`postcode1` LowCardinality(String),
`postcode2` LowCardinality(String),
`type` Enum8('other' = 0, 'terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4),
`is_new` UInt8,
`duration` Enum8('unknown' = 0, 'freehold' = 1, 'leasehold' = 2),
`addr1` String,
`addr2` String,
`street` LowCardinality(String),
`locality` LowCardinality(String),
`town` LowCardinality(String),
`district` LowCardinality(String),
`county` LowCardinality(String)
) ENGINE = MergeTree()
ORDER BY (postcode1, postcode2, addr1, addr2)
假设我们想对该表进行逐年交易量和价值的分析。我们可以简单地输入以下提示:
显示所有 uk_price_paid 交易按年份的总价格和总数量
如我们所见,LLM 返回了一个有效的查询
虽然查询建议可能并不总是完美无缺,但它们仍然可以为用户提供迭代的基础。除了仅通过描述编写查询的能力外,该服务还提供了一种快速更正查询的方法 - 根据 ClickHouse 提供的错误上下文修复语法。
请考虑以下情况
SELECT
startOfYear(date) as year,
countIf(price < 1000000) as small_transactions,
countIf(price >= 1000000) as large_transactions
FROM uk_price_paid
WHERE
twon = 'LONDON'
GROUP BY
year
ORDER BY
year ASC
此查询存在几个问题 - startOfYear
不是有效的 ClickHouse 函数,并且 twon
是一个错别字(应为 town
)。运行此查询将引发错误
根据错误消息,我们可以点击“修复查询”按钮以请求 LLM 帮助调试此查询
从差异中,我们可以看到 LLM 正确识别并修复了此查询中的这两个问题。只需点击“应用”即可提交更改并重新运行查询
立即在 ClickHouse Cloud 中试用我们新的基于 GenAI 的查询建议。立即开始使用 并获得 300 美元的信用额度。在 30 天试用期结束后,您可以继续使用按需付费计划,或者联系我们 了解有关我们基于用量的折扣的更多信息。请访问我们的定价页面 获取详细信息。